[SCM] hdf5 branch, upstream, updated. upstream/1.8.7-83-gfc3c444

Sylvestre Ledru sylvestre.ledru at scilab-enterprises.com
Wed Nov 28 12:03:32 UTC 2012


The following commit has been merged in the upstream branch:
commit 800c9f135ab6779703a884f259a8b2a29388de0e
Author: Sylvestre Ledru <sylvestre.ledru at scilab-enterprises.com>
Date:   Wed Nov 14 19:46:57 2012 +0100

    Imported Upstream version 1.8.10

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f611755..8afe830 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -157,7 +157,13 @@ IF (NOT HDF5_INSTALL_INCLUDE_DIR)
   SET (HDF5_INSTALL_INCLUDE_DIR include)
 ENDIF (NOT HDF5_INSTALL_INCLUDE_DIR)
 IF (NOT HDF5_INSTALL_DATA_DIR)
-  SET (HDF5_INSTALL_DATA_DIR share)
+  IF (NOT WIN32)
+    SET (HDF5_INSTALL_DATA_DIR share)
+    SET (HDF5_INSTALL_CMAKE_DIR share/cmake)
+  ELSE (NOT WIN32)
+    SET (HDF5_INSTALL_DATA_DIR ".")
+    SET (HDF5_INSTALL_CMAKE_DIR cmake)
+  ENDIF (NOT WIN32)
 ENDIF (NOT HDF5_INSTALL_DATA_DIR)
 
 #-----------------------------------------------------------------------------
@@ -201,7 +207,7 @@ ELSE (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
 ENDIF (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
 SET (HDF5_PACKAGE_SOVERSION "${H5_SOVERS_MAJOR}.${H5_SOVERS_MINOR}.${H5_SOVERS_RELEASE}")
 SET (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION_STRING}")
-SET (HDF5_PACKAGE_TARNAME "hdf5")
+SET (HDF5_PACKAGE_TARNAME "${HDF5_PACKAGE}${HDF_PACKAGE_EXT}")
 SET (HDF5_PACKAGE_URL "http://www.hdfgroup.org")
 SET (HDF5_PACKAGE_BUGREPORT "help at hdfgroup.org")
 
@@ -275,10 +281,10 @@ SET (H5_ENABLE_SHARED_LIB NO)
 SET (H5_ENABLE_STATIC_LIB NO)
 IF (BUILD_SHARED_LIBS)
   SET (LIB_TYPE SHARED)
-  SET (H5_BUILT_AS_DYNAMIC_LIB 1)
+  ADD_DEFINITIONS (-DH5_BUILT_AS_DYNAMIC_LIB)
   SET (H5_ENABLE_SHARED_LIB YES)
 ELSE (BUILD_SHARED_LIBS)
-  SET (H5_BUILT_AS_STATIC_LIB 1)
+  ADD_DEFINITIONS (-DH5_BUILT_AS_STATIC_LIB)
   SET (H5_ENABLE_STATIC_LIB YES)
   IF (NOT WIN32)
     # should this be a user setting : Everyone uses it anyway ?
@@ -308,6 +314,15 @@ IF (HDF5_ENABLE_COVERAGE)
 ENDIF (HDF5_ENABLE_COVERAGE)
 
 #-----------------------------------------------------------------------------
+# Option to indicate using dmalloc
+#-----------------------------------------------------------------------------
+# OPTION (HDF5_ENABLE_USING_DMALLOC "Indicate that dmalloc is used" OFF)
+# IF (HDF5_ENABLE_USING_DMALLOC)
+#   FIND_PACKAGE (DMALLOC)
+#   SET (H5_HAVE_DMALLOC DMALLOC_FOUND)   
+# ENDIF (HDF5_ENABLE_USING_DMALLOC)
+
+#-----------------------------------------------------------------------------
 # Option to indicate using a memory checker
 #-----------------------------------------------------------------------------
 OPTION (HDF5_ENABLE_USING_MEMCHECKER "Indicate that a memory checker is used" OFF)
@@ -366,16 +381,23 @@ IF (CMAKE_BUILD_TYPE MATCHES Debug)
       -DH5I_DEBUG -DH5HL_DEBUG -DH5HG_DEBUG -DH5G_DEBUG -DH5F_DEBUG
       -DH5E_DEBUG -DH5D_DEBUG -DH5B_DEBUG -DH5AC_DEBUG -UNDEBUG
   )
+  # Enable tracing of the API
   OPTION (HDF5_ENABLE_TRACE "Enable API tracing capability" ON)
   IF (HDF5_ENABLE_TRACE)
     ADD_DEFINITIONS (-DH5_DEBUG_API )
   ENDIF (HDF5_ENABLE_TRACE)
+  # Enable instrumenting of the library's internal operations
+  OPTION (HDF5_ENABLE_INSTRUMENT "Instrument The library" OFF)
+  IF (HDF5_ENABLE_INSTRUMENT)
+    SET (H5_HAVE_INSTRUMENTED_LIBRARY 1)
+  ENDIF (HDF5_ENABLE_INSTRUMENT)
+  MARK_AS_ADVANCED (HDF5_Enable_Instrument)
   #-- NMake Makefiles will overwhelm the console with warnings if -Wall is used.
   IF (NOT WIN32)
     ADD_DEFINITIONS (-Wall)
   ENDIF (NOT WIN32)
 ELSE (CMAKE_BUILD_TYPE MATCHES Debug)
-  ADD_DEFINITIONS (-UH5_DEBUG_API -DNDEBUG)
+  ADD_DEFINITIONS (-DNDEBUG)
   OPTION (HDF5_ENABLE_TRACE "Enable API tracing capability" OFF)
   IF (HDF5_ENABLE_TRACE)
     ADD_DEFINITIONS (-DH5_DEBUG_API )
@@ -452,7 +474,7 @@ ENDIF (CMAKE_COMPILER_IS_GNUCXX)
 #-----------------------------------------------------------------------------
 # All libs/tests/examples need the main include directories
 #-----------------------------------------------------------------------------
-INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR} ${HDF5_SRC_DIR})
+INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR} ${HDF5_SRC_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
 
 #-----------------------------------------------------------------------------
 # Option to Enable MPI Parallel
@@ -468,6 +490,7 @@ IF (HDF5_ENABLE_PARALLEL)
     # and once set, they are cached as false and not regenerated
     SET (CMAKE_REQUIRED_LIBRARIES "${MPI_C_LIBRARIES}" )
     CHECK_FUNCTION_EXISTS (MPI_File_get_size H5_HAVE_MPI_GET_SIZE) 
+    SET (H5_MPI_FILE_SET_SIZE_BIG 1)
     # Used by Fortran + MPI
     CHECK_SYMBOL_EXISTS (MPI_Comm_c2f "${MPI_C_INCLUDE_PATH}/mpi.h"  H5_HAVE_MPI_MULTI_LANG_Comm)
     CHECK_SYMBOL_EXISTS (MPI_Info_c2f "${MPI_C_INCLUDE_PATH}/mpi.h"  H5_HAVE_MPI_MULTI_LANG_Info)
@@ -482,6 +505,7 @@ IF (H5_HAVE_PARALLEL)
   ENDIF (MPI_C_LINK_FLAGS)
 ENDIF (H5_HAVE_PARALLEL)
 
+SET (DEFAULT_API_VERSION "v18")
 #-----------------------------------------------------------------------------
 # Option to use 1.6.x API
 #-----------------------------------------------------------------------------
@@ -489,6 +513,7 @@ OPTION (HDF5_USE_16_API_DEFAULT "Use the HDF5 1.6.x API by default" OFF)
 SET (H5_USE_16_API_DEFAULT 0)
 IF (HDF5_USE_16_API_DEFAULT)
   SET (H5_USE_16_API_DEFAULT 1)
+  SET (DEFAULT_API_VERSION "v16")
 ENDIF (HDF5_USE_16_API_DEFAULT)
 
 #-----------------------------------------------------------------------------
@@ -534,7 +559,10 @@ OPTION (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" OFF)
 IF (HDF5_ENABLE_Z_LIB_SUPPORT)
   IF (NOT H5_ZLIB_HEADER)
     IF (NOT ZLIB_USE_EXTERNAL)
-      FIND_PACKAGE (ZLIB)
+      FIND_PACKAGE (ZLIB NAMES ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT})
+    IF (NOT ZLIB_FOUND)
+      FIND_PACKAGE (ZLIB) # Legacy find
+    ENDIF (NOT ZLIB_FOUND)
     ENDIF (NOT ZLIB_USE_EXTERNAL)
     IF (ZLIB_FOUND)
       SET (H5_HAVE_FILTER_DEFLATE 1)
@@ -542,6 +570,7 @@ IF (HDF5_ENABLE_Z_LIB_SUPPORT)
       SET (H5_HAVE_LIBZ 1)
       SET (H5_ZLIB_HEADER "zlib.h")
       SET (ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR})
+      SET (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
     ELSE (ZLIB_FOUND)
       IF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
         EXTERNAL_ZLIB_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${LIB_TYPE})
@@ -574,13 +603,17 @@ OPTION (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF)
 IF (HDF5_ENABLE_SZIP_SUPPORT)
   OPTION (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" OFF)
   IF (NOT SZIP_USE_EXTERNAL)
-    FIND_PACKAGE (SZIP)
+    FIND_PACKAGE (SZIP NAMES ${SZIP_PACKAGE_NAME}${HDF_PACKAGE_EXT})
+    IF (NOT SZIP_FOUND)
+      FIND_PACKAGE (SZIP) # Legacy find
+    ENDIF (NOT SZIP_FOUND)
   ENDIF (NOT SZIP_USE_EXTERNAL)
   IF (SZIP_FOUND)
     SET (H5_HAVE_FILTER_SZIP 1)
     SET (H5_HAVE_SZLIB_H 1)
     SET (H5_HAVE_LIBSZ 1)
     SET (SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR})
+    SET (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR})
   ELSE (SZIP_FOUND)
     IF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
       EXTERNAL_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${LIB_TYPE} ${HDF5_ENABLE_SZIP_ENCODING})
@@ -593,7 +626,7 @@ IF (HDF5_ENABLE_SZIP_SUPPORT)
     ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
   ENDIF (SZIP_FOUND)
   SET (LINK_LIBS ${LINK_LIBS} ${SZIP_LIBRARIES})
-  INCLUDE_DIRECTORIES (${SZIP_INCLUDE_DIRS})
+  INCLUDE_DIRECTORIES (${SZIP_INCLUDE_DIR})
   MESSAGE (STATUS "Filter SZIP is ON")
   IF (H5_HAVE_FILTER_SZIP)
     SET (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE")
@@ -747,6 +780,9 @@ IF (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++")
     IF (HDF5_ENABLE_PARALLEL)
       MESSAGE (FATAL " **** Parallel and C++ options are mutually exclusive **** ")
     ENDIF (HDF5_ENABLE_PARALLEL)
+    IF (CMAKE_NO_STD_NAMESPACE)
+      SET (H5_NO_STD 1)
+    ENDIF (CMAKE_NO_STD_NAMESPACE)
     ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/c++ ${PROJECT_BINARY_DIR}/c++)
   ENDIF (HDF5_BUILD_CPP_LIB)
 ENDIF (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++")
@@ -794,8 +830,8 @@ ENDIF (NOT HDF5_INSTALL_NO_DEVELOPMENT)
 IF (NOT HDF5_EXTERNALLY_CONFIGURED)
   INSTALL (
       EXPORT ${HDF5_EXPORTED_TARGETS}
-      DESTINATION ${HDF5_INSTALL_DATA_DIR}/cmake/hdf5
-      FILE hdf5-targets.cmake
+      DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
+      FILE ${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-targets.cmake
       COMPONENT configinstall
   )
 ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
@@ -806,7 +842,7 @@ ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
 IF (NOT HDF5_EXTERNALLY_CONFIGURED)
   EXPORT (
       TARGETS ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES}
-      FILE hdf5-targets.cmake
+      FILE ${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-targets.cmake
   )
 ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
 
@@ -823,20 +859,35 @@ SET (HDF5_VERSION_MINOR  @HDF5_PACKAGE_VERSION_MINOR@)
 
 CONFIGURE_FILE (
     ${HDF5_RESOURCES_DIR}/hdf5-config.cmake.build.in 
-    ${HDF5_BINARY_DIR}/hdf5-config.cmake @ONLY
+    ${HDF5_BINARY_DIR}/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake @ONLY
 )
 
 #-----------------------------------------------------------------------------
+# Configure the FindHDF5.cmake file for the install directory
+#-----------------------------------------------------------------------------
+IF (NOT HDF5_EXTERNALLY_CONFIGURED)
+  CONFIGURE_FILE (
+      ${HDF5_RESOURCES_DIR}/FindHDF5.cmake.in 
+      ${HDF5_BINARY_DIR}/CMakeFiles/FindHDF5${HDF_PACKAGE_EXT}.cmake @ONLY
+  )
+  INSTALL (
+      FILES ${HDF5_BINARY_DIR}/CMakeFiles/FindHDF5${HDF_PACKAGE_EXT}.cmake
+      DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
+      COMPONENT configinstall
+  )
+ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+
+#-----------------------------------------------------------------------------
 # Configure the hdf5-config.cmake file for the install directory
 #-----------------------------------------------------------------------------
 IF (NOT HDF5_EXTERNALLY_CONFIGURED)
   CONFIGURE_FILE (
       ${HDF5_RESOURCES_DIR}/hdf5-config.cmake.install.in
-      ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config.cmake @ONLY
+      ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake @ONLY
   )
   INSTALL (
-      FILES ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config.cmake
-      DESTINATION ${HDF5_INSTALL_DATA_DIR}/cmake/hdf5
+      FILES ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake
+      DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
       COMPONENT configinstall
   )
 ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
@@ -847,11 +898,11 @@ ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
 IF (NOT HDF5_EXTERNALLY_CONFIGURED)
   CONFIGURE_FILE (
       ${HDF5_RESOURCES_DIR}/hdf5-config-version.cmake.in
-      ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config-version.cmake @ONLY
+      ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config-version.cmake @ONLY
   )
   INSTALL (
-      FILES ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config-version.cmake
-      DESTINATION ${HDF5_INSTALL_DATA_DIR}/cmake/hdf5
+      FILES ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF5_PACKAGE_EXT}-config-version.cmake
+      DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
       COMPONENT configinstall
   )
 ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
@@ -868,6 +919,11 @@ CONFIGURE_FILE (
     ${HDF5_RESOURCES_DIR}/libhdf5.settings.cmake.in 
     ${HDF5_BINARY_DIR}/libhdf5.settings @ONLY
 )
+INSTALL (
+    FILES ${HDF5_BINARY_DIR}/libhdf5.settings
+    DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
+    COMPONENT libraries
+)
 
 #-----------------------------------------------------------------------------
 # Add Document File(s) to CMake Install
@@ -884,7 +940,7 @@ IF (NOT HDF5_EXTERNALLY_CONFIGURED)
   IF (EXISTS "${HDF5_SOURCE_DIR}/release_docs" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/release_docs")
     SET (release_files
         ${HDF5_SOURCE_DIR}/release_docs/CMake.txt
-        ${HDF5_SOURCE_DIR}/release_docs/Using_CMake.txt
+        ${HDF5_SOURCE_DIR}/release_docs/USING_CMake.txt
         ${HDF5_SOURCE_DIR}/release_docs/COPYING
         ${HDF5_SOURCE_DIR}/release_docs/HISTORY-1_8.txt
         ${HDF5_SOURCE_DIR}/release_docs/INSTALL
@@ -921,9 +977,10 @@ ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
 # Set the cpack variables
 #-----------------------------------------------------------------------------
 IF (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
-  SET (CPACK_PACKAGE_VENDOR "HDF Group")
+  SET (CPACK_PACKAGE_VENDOR "HDF_Group")
   SET (CPACK_PACKAGE_NAME "${HDF5_PACKAGE_NAME}")
   SET (CPACK_PACKAGE_INSTALL_DIRECTORY "${HDF5_PACKAGE_NAME}")
+  SET (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${HDF5_PACKAGE_NAME}-${HDF5_PACKAGE_VERSION}-${LIB_TYPE}")
   SET (CPACK_PACKAGE_VERSION "${HDF5_PACKAGE_VERSION}")
   SET (CPACK_PACKAGE_VERSION_MAJOR "${HDF5_PACKAGE_VERSION_MAJOR}")
   SET (CPACK_PACKAGE_VERSION_MINOR "${HDF5_PACKAGE_VERSION_MINOR}")
@@ -934,14 +991,42 @@ IF (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
     SET (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/RELEASE.txt")
   ENDIF (EXISTS "${HDF5_SOURCE_DIR}/release_docs")
   SET (CPACK_PACKAGE_RELOCATABLE TRUE)
+
   IF (WIN32)
-    SET (CPACK_NSIS_CONTACT "help at hdfgroup.org")
+    SET (CPACK_MONOLITHIC_INSTALL ON)
+    SET (CPACK_NSIS_CONTACT "${HDF5_PACKAGE_BUGREPORT}")
     SET (CPACK_NSIS_MODIFY_PATH ON)
     SET (CPACK_NSIS_PACKAGE_NAME "HDF5 ${HDF5_PACKAGE_VERSION}")
   ELSE (WIN32)
+    SET (CPACK_PACKAGING_INSTALL_PREFIX "/usr")
+    SET (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
+
+    SET (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
+    SET (CPACK_DEBIAN_PACKAGE_MAINTAINER "${HDF5_PACKAGE_BUGREPORT}")
+    
     SET (CPACK_RPM_COMPONENT_INSTALL ON)
+    SET (CPACK_RPM_PACKAGE_RELOCATABLE ON)
+    SET (CPACK_RPM_PACKAGE_LICENSE "BSD-style")
+    SET (CPACK_RPM_PACKAGE_GROUP "Development/Libraries")
+    SET (CPACK_RPM_PACKAGE_URL "${HDF5_PACKAGE_URL}")
+    SET (CPACK_RPM_PACKAGE_SUMMARY "HDF5 is a unique technology suite that makes possible the management of extremely large and complex data collections.")
+    SET (CPACK_RPM_PACKAGE_DESCRIPTION 
+        "The HDF5 technology suite includes:
+
+    * A versatile data model that can represent very complex data objects and a wide variety of metadata.
+
+    * A completely portable file format with no limit on the number or size of data objects in the collection.
+
+    * A software library that runs on a range of computational platforms, from laptops to massively parallel systems, and implements a high-level API with C, C++, Fortran 90, and Java interfaces.
+
+    * A rich set of integrated performance features that allow for access time and storage space optimizations.
+
+    * Tools and applications for managing, manipulating, viewing, and analyzing the data in the collection.
+
+The HDF5 data model, file format, API, library, and tools are open and distributed without charge.
+"
+    )
   ENDIF (WIN32)
-  SET (CPACK_MONOLITHIC_INSTALL ON)
   
   INCLUDE(InstallRequiredSystemLibraries)
 
diff --git a/MANIFEST b/MANIFEST
index b995338..5e6f73d 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -28,11 +28,16 @@
 ./Makefile.dist
 ./Makefile.am
 ./Makefile.in
+./m4/ltsugar.m4                         _DO_NOT_DISTRIBUTE_
+./m4/libtool.m4                         _DO_NOT_DISTRIBUTE_
+./m4/ltversion.m4                       _DO_NOT_DISTRIBUTE_
+./m4/lt~obsolete.m4                     _DO_NOT_DISTRIBUTE_
+./m4/ltoptions.m4                       _DO_NOT_DISTRIBUTE_
 ./README.txt
 ./aclocal.m4
 ./acsite.m4
 ./configure
-./configure.in
+./configure.ac
 
 ./bin/COPYING
 ./bin/buildhdf5
@@ -64,8 +69,8 @@
 ./bin/mkdirs
 ./bin/mkinstalldirs
 ./bin/newer
-./bin/output_filter.sh
 ./bin/reconfigure      _DO_NOT_DISTRIBUTE_
+./bin/output_filter.sh
 ./bin/release
 ./bin/runtest        _DO_NOT_DISTRIBUTE_
 ./bin/snapshot
@@ -135,7 +140,6 @@
 ./examples/README
 
 
-
 #------------------------------------------------------------------------------
 #
 # Begin Fortran interface
@@ -172,7 +176,6 @@
 ./fortran/examples/nested_derived_type.f90
 ./fortran/examples/rwdset_fortran2003.f90
 
-
 ./fortran/src/H5_f.c
 ./fortran/src/H5_ff.f90
 ./fortran/src/H5_ff_F90.f90
@@ -398,12 +401,6 @@
 #
 #------------------------------------------------------------------------------
 
-./m4/ltsugar.m4                         _DO_NOT_DISTRIBUTE_
-./m4/libtool.m4                         _DO_NOT_DISTRIBUTE_
-./m4/ltversion.m4                       _DO_NOT_DISTRIBUTE_
-./m4/lt~obsolete.m4                     _DO_NOT_DISTRIBUTE_
-./m4/ltoptions.m4                       _DO_NOT_DISTRIBUTE_
-
 ./perform/COPYING
 ./perform/Makefile.am
 ./perform/Makefile.in
@@ -413,7 +410,6 @@
 ./perform/chunk.c
 ./perform/gen_report.pl
 ./perform/iopipe.c
-./perform/mpi-perf.c
 ./perform/overhead.c
 ./perform/perf.c
 ./perform/perf_meta.c
@@ -440,18 +436,15 @@
 ./release_docs/INSTALL
 ./release_docs/INSTALL_Cygwin.txt
 ./release_docs/INSTALL_MinGW.txt
+./release_docs/INSTALL_parallel
 ./release_docs/INSTALL_VMS.txt
 ./release_docs/INSTALL_Windows.txt
-./release_docs/INSTALL_parallel
+./release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt
+./release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.TXT
 ./release_docs/RELEASE.txt
 ./release_docs/USING_CMake.txt
 ./release_docs/USING_Windows.txt
 
-./release_docs/obsolete_windows_docs/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt
-./release_docs/obsolete_windows_docs/INSTALL_Windows.txt
-./release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt
-./release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.txt
-
 ./src/.indent.pro      _DO_NOT_DISTRIBUTE_
 ./src/hdf5.lnt        _DO_NOT_DISTRIBUTE_
 ./src/hdf5-win.lnt      _DO_NOT_DISTRIBUTE_
@@ -1009,6 +1002,7 @@
 ./tools/h5dump/h5dump_xml.h
 ./tools/h5dump/h5dumpgentest.c
 ./tools/h5dump/testh5dump.sh.in
+./tools/h5dump/testh5dumppbits.sh.in
 ./tools/h5dump/testh5dumpxml.sh.in
 ./tools/h5dump/binread.c
 
@@ -1018,48 +1012,58 @@
 ./tools/h5import/h5import.h
 ./tools/h5import/h5import.c
 ./tools/h5import/h5importtest.c
-./tools/h5import/h5importtestutil.sh
+./tools/h5import/h5importtestutil.sh.in
 
 # testfiles for h5import
-./tools/h5import/testfiles/binin32.h5
+./tools/h5import/testfiles/binfp64.conf
+./tools/h5import/testfiles/binfp64.h5
+./tools/h5import/testfiles/binin16.conf
 ./tools/h5import/testfiles/binin16.h5
-./tools/h5import/testfiles/txtfp32.txt
-./tools/h5import/testfiles/txtstr.conf
-./tools/h5import/testfiles/txtfp32.conf
-./tools/h5import/testfiles/binin8w.conf
+./tools/h5import/testfiles/binin32.conf
+./tools/h5import/testfiles/binin32.h5
+./tools/h5import/testfiles/binin8.conf
 ./tools/h5import/testfiles/binin8.h5
-./tools/h5import/testfiles/txtfp64.conf
-./tools/h5import/testfiles/binuin32.conf
-./tools/h5import/testfiles/txtuin32.txt
+./tools/h5import/testfiles/binin8w.conf
+./tools/h5import/testfiles/binin8w.h5
 ./tools/h5import/testfiles/binuin16.conf
-./tools/h5import/testfiles/txtstr.h5
+./tools/h5import/testfiles/binuin16.h5
+./tools/h5import/testfiles/binuin32.conf
+./tools/h5import/testfiles/binuin32.h5
+./tools/h5import/testfiles/textpfe.conf
+./tools/h5import/testfiles/textpfe.h5
+./tools/h5import/testfiles/textpfe64.txt
+./tools/h5import/testfiles/txtfp32.conf
 ./tools/h5import/testfiles/txtfp32.h5
-./tools/h5import/testfiles/txtin32.h5
+./tools/h5import/testfiles/txtfp32.txt
+./tools/h5import/testfiles/txtfp64.conf
+./tools/h5import/testfiles/txtfp64.h5
+./tools/h5import/testfiles/txtfp64.txt
+./tools/h5import/testfiles/txtin16.conf
 ./tools/h5import/testfiles/txtin16.h5
-./tools/h5import/testfiles/binin8w.h5
+./tools/h5import/testfiles/txtin16.txt
+./tools/h5import/testfiles/txtin32.conf
+./tools/h5import/testfiles/txtin32.h5
 ./tools/h5import/testfiles/txtin32.txt
-./tools/h5import/testfiles/binfp64.conf
-./tools/h5import/testfiles/binin8.conf
 ./tools/h5import/testfiles/txtin8.conf
-./tools/h5import/testfiles/binfp64.h5
-./tools/h5import/testfiles/txtstr.txt
-./tools/h5import/testfiles/txtin32.conf
-./tools/h5import/testfiles/txtin16.conf
 ./tools/h5import/testfiles/txtin8.h5
-./tools/h5import/testfiles/txtuin32.conf
+./tools/h5import/testfiles/txtin8.txt
 ./tools/h5import/testfiles/txtuin16.conf
-./tools/h5import/testfiles/binin32.conf
-./tools/h5import/testfiles/binin16.conf
-./tools/h5import/testfiles/txtfp64.h5
-./tools/h5import/testfiles/txtin16.txt
-./tools/h5import/testfiles/txtfp64.txt
-./tools/h5import/testfiles/binuin32.h5
-./tools/h5import/testfiles/binuin16.h5
-./tools/h5import/testfiles/txtuin32.h5
 ./tools/h5import/testfiles/txtuin16.h5
-./tools/h5import/testfiles/textpfe.conf
-./tools/h5import/testfiles/textpfe64.txt
-./tools/h5import/testfiles/textpfe.h5
+./tools/h5import/testfiles/txtuin16.txt
+./tools/h5import/testfiles/txtuin32.conf
+./tools/h5import/testfiles/txtuin32.h5
+./tools/h5import/testfiles/txtuin32.txt
+./tools/h5import/testfiles/txtstr.conf
+./tools/h5import/testfiles/txtstr.h5
+./tools/h5import/testfiles/txtstr.txt
+./tools/h5import/testfiles/dbinfp64.h5.txt
+./tools/h5import/testfiles/dbinin8.h5.txt
+./tools/h5import/testfiles/dbinin8w.h5.txt
+./tools/h5import/testfiles/dbinin16.h5.txt
+./tools/h5import/testfiles/dbinin32.h5.txt
+./tools/h5import/testfiles/dbinuin16.h5.txt
+./tools/h5import/testfiles/dbinuin32.h5.txt
+./tools/h5import/testfiles/dtxtstr.h5.txt
 
 # h5diff sources
 ./tools/h5diff/Makefile.am
@@ -1069,8 +1073,8 @@
 ./tools/h5diff/h5diff_main.c
 ./tools/h5diff/ph5diff_main.c
 ./tools/h5diff/h5diffgentest.c
-./tools/h5diff/testh5diff.sh
-./tools/h5diff/testph5diff.sh
+./tools/h5diff/testh5diff.sh.in
+./tools/h5diff/testph5diff.sh.in
 
 # h5repack sources
 ./tools/h5repack/Makefile.am
@@ -1095,7 +1099,7 @@
 ./tools/h5ls/testh5ls.sh.in
 
 # h5copy sources
-./tools/h5copy/testh5copy.sh
+./tools/h5copy/testh5copy.sh.in
 ./tools/h5copy/Makefile.in
 ./tools/h5copy/h5copy.c
 ./tools/h5copy/h5copygentest.c
@@ -1136,7 +1140,7 @@
 ./tools/misc/h5repart.c
 ./tools/misc/h5repart_gentest.c
 ./tools/misc/repart_test.c
-./tools/misc/testh5mkgrp.sh
+./tools/misc/testh5mkgrp.sh.in
 ./tools/misc/testh5repart.sh.in
 ./tools/misc/talign.c
 ./tools/misc/testfiles/h5mkgrp_help.txt
@@ -1150,25 +1154,28 @@
 # h5stat test files
 ./tools/h5stat/h5stat_gentest.c
 ./tools/h5stat/testh5stat.sh.in
-./tools/h5stat/testfiles/h5stat_filters-UT.ddl
-./tools/h5stat/testfiles/h5stat_filters-UD.ddl
-./tools/h5stat/testfiles/h5stat_filters-d.ddl
 ./tools/h5stat/testfiles/h5stat_filters.ddl
+./tools/h5stat/testfiles/h5stat_filters-d.ddl
 ./tools/h5stat/testfiles/h5stat_filters-dT.ddl
 ./tools/h5stat/testfiles/h5stat_filters-F.ddl
 ./tools/h5stat/testfiles/h5stat_filters-file.ddl
 ./tools/h5stat/testfiles/h5stat_filters-g.ddl
+./tools/h5stat/testfiles/h5stat_filters-UD.ddl
+./tools/h5stat/testfiles/h5stat_filters-UT.ddl
 ./tools/h5stat/testfiles/h5stat_filters.h5
 ./tools/h5stat/testfiles/h5stat_help1.ddl
 ./tools/h5stat/testfiles/h5stat_help2.ddl
+./tools/h5stat/testfiles/h5stat_newgrat.ddl
 ./tools/h5stat/testfiles/h5stat_newgrat-UA.ddl
 ./tools/h5stat/testfiles/h5stat_newgrat-UG.ddl
-./tools/h5stat/testfiles/h5stat_newgrat.ddl
 ./tools/h5stat/testfiles/h5stat_newgrat.h5
+./tools/h5stat/testfiles/h5stat_notexist.ddl
 ./tools/h5stat/testfiles/h5stat_tsohm.ddl
 ./tools/h5stat/testfiles/h5stat_tsohm.h5
 
 # h5dump test files
+./tools/testfiles/charsets.h5
+./tools/testfiles/charsets.ddl
 ./tools/testfiles/family_file00000.h5
 ./tools/testfiles/family_file00001.h5
 ./tools/testfiles/family_file00002.h5
@@ -1221,6 +1228,8 @@
 ./tools/testfiles/tattr-3.ddl
 ./tools/testfiles/tattr-4_be.ddl
 ./tools/testfiles/tattr.h5
+./tools/testfiles/tattrintsize.ddl
+./tools/testfiles/tattrintsize.h5
 ./tools/testfiles/tattr4_be.h5
 ./tools/testfiles/tattrreg.h5
 ./tools/testfiles/tattrreg.ddl 
@@ -1230,6 +1239,10 @@
 ./tools/testfiles/tbitfields.h5
 ./tools/testfiles/tchar.h5
 ./tools/testfiles/tchar1.ddl
+./tools/testfiles/tcmpdattrintsize.ddl
+./tools/testfiles/tcmpdintsize.ddl
+./tools/testfiles/tcmpdattrintsize.h5
+./tools/testfiles/tcmpdintsize.h5
 ./tools/testfiles/tcomp-1.ddl
 ./tools/testfiles/tcomp-2.ddl
 ./tools/testfiles/tcomp-3.ddl
@@ -1307,6 +1320,8 @@
 ./tools/testfiles/tnbit.ddl
 ./tools/testfiles/tnestcomp-1.ddl
 ./tools/testfiles/tnestedcomp.h5
+./tools/testfiles/tnestedcmpddt.ddl
+./tools/testfiles/tnestedcmpddt.h5
 ./tools/testfiles/tno-subset.h5
 ./tools/testfiles/tno-subset.ddl
 ./tools/testfiles/tnullspace.h5
@@ -1346,7 +1361,13 @@
 ./tools/testfiles/tattr2.h5
 ./tools/testfiles/tall-2A.ddl
 ./tools/testfiles/tall-2B.ddl
+./tools/testfiles/tattrcontents1.ddl
+./tools/testfiles/tattrcontents2.ddl
 ./tools/testfiles/tcontents.ddl
+./tools/testfiles/tordercontents1.ddl
+./tools/testfiles/tordercontents2.ddl
+./tools/testfiles/torderlinks1.ddl
+./tools/testfiles/torderlinks2.ddl
 ./tools/testfiles/tfilters.h5
 ./tools/testfiles/tchunked.ddl
 ./tools/testfiles/tcompact.ddl
@@ -1389,6 +1410,46 @@
 ./tools/testfiles/tbigdims.ddl
 ./tools/testfiles/tbigdims.h5
 ./tools/testfiles/thyperslab.h5
+./tools/testfiles/twidedisplay.ddl
+
+# h5dump test error files
+./tools/h5dump/errfiles/filter_fail.err
+./tools/h5dump/errfiles/tall-1.err
+./tools/h5dump/errfiles/tall-2A.err
+./tools/h5dump/errfiles/tall-2B.err
+./tools/h5dump/errfiles/tarray1_big.err
+./tools/h5dump/errfiles/tattr-3.err
+./tools/h5dump/errfiles/tattrregR.err
+./tools/h5dump/errfiles/tcomp-3.err
+./tools/h5dump/errfiles/tdataregR.err
+./tools/h5dump/errfiles/tdset-2.err
+./tools/h5dump/errfiles/texceedsubblock.err
+./tools/h5dump/errfiles/texceedsubcount.err
+./tools/h5dump/errfiles/texceedsubstart.err
+./tools/h5dump/errfiles/texceedsubstride.err
+./tools/h5dump/errfiles/textlink.err
+./tools/h5dump/errfiles/textlinkfar.err
+./tools/h5dump/errfiles/textlinksrc.err
+./tools/h5dump/errfiles/tgroup-2.err
+./tools/h5dump/errfiles/tnofilename-with-packed-bits.err
+./tools/h5dump/errfiles/torderlinks1.err
+./tools/h5dump/errfiles/torderlinks2.err
+./tools/h5dump/errfiles/tpbitsCharLengthExceeded.err
+./tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err
+./tools/h5dump/errfiles/tpbitsIncomplete.err
+./tools/h5dump/errfiles/tpbitsIntLengthExceeded.err
+./tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err
+./tools/h5dump/errfiles/tpbitsLengthExceeded.err
+./tools/h5dump/errfiles/tpbitsLengthPositive.err
+./tools/h5dump/errfiles/tpbitsLongLengthExceeded.err
+./tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err
+./tools/h5dump/errfiles/tpbitsMaxExceeded.err
+./tools/h5dump/errfiles/tpbitsOffsetExceeded.err
+./tools/h5dump/errfiles/tpbitsOffsetNegative.err
+./tools/h5dump/errfiles/tperror.err
+./tools/h5dump/errfiles/tqmarkfile.err
+./tools/h5dump/errfiles/tslink-D.err
+
 # h5dump packed bits validation
 ./tools/testfiles/tnofilename-with-packed-bits.ddl
 ./tools/testfiles/tpbitsLengthPositive.ddl
@@ -1634,6 +1695,7 @@
 ./tools/h5diff/testfiles/h5diff_56.txt
 ./tools/h5diff/testfiles/h5diff_57.txt
 ./tools/h5diff/testfiles/h5diff_58.txt
+./tools/h5diff/testfiles/h5diff_59.txt
 ./tools/h5diff/testfiles/h5diff_600.txt
 ./tools/h5diff/testfiles/h5diff_601.txt
 ./tools/h5diff/testfiles/h5diff_603.txt
@@ -1750,6 +1812,11 @@
 ./tools/h5diff/testfiles/h5diff_467.txt
 ./tools/h5diff/testfiles/h5diff_468.txt
 ./tools/h5diff/testfiles/h5diff_469.txt
+./tools/h5diff/testfiles/h5diff_471.txt
+./tools/h5diff/testfiles/h5diff_472.txt
+./tools/h5diff/testfiles/h5diff_473.txt
+./tools/h5diff/testfiles/h5diff_474.txt
+./tools/h5diff/testfiles/h5diff_475.txt
 ./tools/h5diff/testfiles/h5diff_480.txt
 ./tools/h5diff/testfiles/h5diff_481.txt
 ./tools/h5diff/testfiles/h5diff_482.txt
@@ -1823,7 +1890,6 @@
 ./tools/h5diff/testfiles/non_comparables1.h5
 ./tools/h5diff/testfiles/non_comparables2.h5
 
-
 #test files for h5repack
 ./tools/h5repack/testfiles/h5repack_szip.h5
 ./tools/h5repack/testfiles/h5repack_fill.h5
@@ -1849,8 +1915,6 @@
 ./tools/h5repack/testfiles/h5repack_named_dtypes.h5
 ./tools/h5repack/testfiles/h5repack_refs.h5
 
-
-
 # jam utility and tests
 ./tools/h5jam/h5jam.c
 ./tools/h5jam/h5unjam.c
@@ -1997,7 +2061,7 @@
 ./hl/tools/gif2h5/hdfgifwr.c
 ./hl/tools/gif2h5/writehdf.c
 ./hl/tools/gif2h5/h52gifgentst.c
-./hl/tools/gif2h5/h52giftest.sh
+./hl/tools/gif2h5/h52giftest.sh.in
 ./hl/tools/gif2h5/testfiles/image1.gif
 ./hl/tools/gif2h5/testfiles/h52giftst.h5
 
@@ -2101,12 +2165,13 @@
 ./config/cmake/FindSZIP.cmake
 ./config/cmake/ConversionTests.c
 ./config/cmake/GetTimeOfDayTest.cpp
+./config/cmake/HDF5CXXTests.cpp
 ./config/cmake/HDF5Tests.c
 ./config/cmake/xlatefile.c
 ./config/cmake/CheckTypeSize.cmake
 ./config/cmake/H5cxx_config.h.in
 ./config/cmake/H5pubconf.h.in
-./config/cmake/FindHDF5.cmake
+./config/cmake/FindHDF5.cmake.in
 ./config/cmake/FindMPI.cmake
 ./config/cmake/hdf5-config.cmake.build.in
 ./config/cmake/hdf5-config.cmake.install.in
@@ -2128,6 +2193,7 @@
 ./config/cmake/CPack.cmake
 ./config/cmake/NSIS.template.in
 ./config/cmake/NSIS.InstallOptions.ini.in
+
 ./CMakeLists.txt
 ./CTestConfig.cmake
 ./c++/CMakeLists.txt
@@ -2176,7 +2242,6 @@
 # Batch scripts
 ./windows/copy_hdf.bat
 ./windows/COPYING
-./windows/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt
 ./windows/hdf5bt.BAT
 ./windows/hdf5build.BAT
 ./windows/hdf5build_examples.BAT
diff --git a/Makefile.in b/Makefile.in
index 9060c86..e9b2267 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -48,6 +47,23 @@
 	$(MAKE) all
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,13 +83,17 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/config/commence.am \
-	$(top_srcdir)/configure COPYING bin/COPYING bin/compile \
-	bin/config.guess bin/config.sub bin/depcomp bin/install-sh \
-	bin/ltmain.sh bin/missing bin/mkinstalldirs
+	$(srcdir)/Makefile.in $(top_srcdir)/bin/config.guess \
+	$(top_srcdir)/bin/config.sub $(top_srcdir)/bin/install-sh \
+	$(top_srcdir)/bin/ltmain.sh $(top_srcdir)/bin/missing \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am $(top_srcdir)/configure \
+	COPYING bin/COPYING bin/compile bin/config.guess \
+	bin/config.sub bin/depcomp bin/install-sh bin/ltmain.sh \
+	bin/missing bin/mkinstalldirs
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -82,12 +102,18 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -97,20 +123,29 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
+	cscope distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -138,9 +173,12 @@ am__relativize = \
   reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -158,12 +196,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -452,7 +487,7 @@ DISTCLEANFILES = config/stamp1 config/stamp2
 all: all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(am__configure_deps)
 	@for dep in $?; do \
@@ -477,6 +512,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am:
 
 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	$(am__cd) $(srcdir) && $(AUTOCONF)
@@ -494,12 +530,12 @@ distclean-libtool:
 	-rm -f libtool config.lt
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -509,7 +545,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -523,37 +563,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -562,6 +571,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -625,8 +638,32 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+	-rm -f cscope.files
+
+cscope.files: clean-cscope cscopelist-recursive cscopelist
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
@@ -662,13 +699,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -697,36 +731,36 @@ distdir: $(DISTFILES)
 	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
 
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
 
 dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-shar: distdir
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-zip: distdir
 	-rm -f $(distdir).zip
 	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -737,8 +771,8 @@ distcheck: dist
 	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
 	*.tar.xz*) \
 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
@@ -748,9 +782,9 @@ distcheck: dist
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_inst
 	chmod a-w $(distdir)
 	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -758,6 +792,7 @@ distcheck: dist
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -781,13 +816,21 @@ distcheck: dist
 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
 	  && cd "$$am__cwd" \
 	  || exit 1
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -816,10 +859,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -903,14 +951,16 @@ ps-am:
 
 uninstall-am: uninstall-local
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local am--refresh check check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive dist \
-	dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \
-	dist-xz dist-zip distcheck distclean distclean-generic \
+	clean-cscope clean-generic clean-libtool cscope cscopelist \
+	cscopelist-recursive ctags ctags-recursive dist dist-all \
+	dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
+	dist-zip distcheck distclean distclean-generic \
 	distclean-libtool distclean-tags distcleancheck distdir \
 	distuninstallcheck dvi dvi-am html html-am info info-am \
 	install install-am install-data install-data-am install-dvi \
diff --git a/README.txt b/README.txt
index f533b82..71d5cce 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.8.9 released on 2012-05-09
+HDF5 version 1.8.10 released on 2012-10-26
 Please refer to the release_docs/INSTALL file for installation instructions.
 ------------------------------------------------------------------------------
 
diff --git a/aclocal.m4 b/aclocal.m4
index a4c4303..e6aae87 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.12.3 -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,13 +13,13 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,10 +31,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.12'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.12.3], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -50,22 +50,22 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.12.3])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -84,7 +84,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -110,22 +110,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -144,16 +141,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 10
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -163,7 +158,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -176,12 +171,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -189,8 +185,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -229,16 +226,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -247,16 +244,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -304,7 +301,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -314,28 +311,33 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
@@ -354,7 +356,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -366,21 +368,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
     test -z "am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -398,7 +398,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
+# is enabled.  FIXME.  This creates each '.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -406,29 +406,14 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
 ])
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 16
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
@@ -473,31 +458,41 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+[$0: two- and three-arguments forms are deprecated.  For more info, see:
+http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
@@ -508,28 +503,35 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
 			     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES(CC)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+dnl Support for Objective C++ was only introduced in Autoconf 2.65,
+dnl but we still cater to Autoconf 2.62.
+m4_ifdef([AC_PROG_OBJCXX],
+[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
 ])
 _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
 dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
@@ -557,7 +559,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -576,16 +578,14 @@ if test x"${install_sh}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -602,20 +602,17 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_MAINTAINER_MODE([DEFAULT-MODE])
 # ----------------------------------
 # Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless `enable' is passed literally.
-# For symmetry, `disable' may be passed as well.  Anyway, the user
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
 # can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
 [m4_case(m4_default([$1], [disable]),
@@ -623,13 +620,14 @@ AC_DEFUN([AM_MAINTAINER_MODE],
        [disable], [m4_define([am_maintainer_other], [enable])],
        [m4_define([am_maintainer_other], [enable])
         m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
   AC_ARG_ENABLE([maintainer-mode],
-[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer],
-      [USE_MAINTAINER_MODE=$enableval],
-      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
   AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
@@ -641,14 +639,12 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -666,7 +662,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -693,15 +689,12 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -709,7 +702,6 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
 # Define MISSING if not defined so far and test if it supports --run.
@@ -730,59 +722,31 @@ if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
 
 # _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -795,22 +759,16 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -821,32 +779,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -856,36 +822,85 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
 
-# Copyright (C) 2009  Free Software Foundation, Inc.
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
 # Enable less verbose build rules; with the default set to DEFAULT
-# (`yes' being less verbose, `no' or empty being verbose).
+# ("yes" being less verbose, "no" or empty being verbose).
 AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules],
-[  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')])
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
 AM_BACKSLASH='\'
 AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -893,34 +908,32 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -928,24 +941,22 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
 # AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -956,10 +967,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
 m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
      [m4_case([$1], [ustar],, [pax],,
               [m4_fatal([Unknown tar format])])
 AC_MSG_CHECKING([how to create a $1 tar archive])
@@ -967,7 +979,7 @@ AC_MSG_CHECKING([how to create a $1 tar archive])
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
 _am_tools=${am_cv_prog_tar_$1-$_am_tools}
 # Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
+# Solaris sh will not grok spaces in the rhs of '-'.
 for _am_tool in $_am_tools
 do
   case $_am_tool in
@@ -1031,8 +1043,8 @@ AC_SUBST([am__untar])
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -1041,8 +1053,8 @@ AC_SUBST([am__untar])
 
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -1176,6 +1188,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
 
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -1661,7 +1675,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -1825,6 +1839,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],			[_LT_LANG(C)],
   [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
   [Java],		[_LT_LANG(GCJ)],
   [Fortran 77],		[_LT_LANG(F77)],
   [Fortran],		[_LT_LANG(FC)],
@@ -1846,6 +1861,29 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -1876,6 +1914,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -1978,7 +2020,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1986,6 +2034,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=no
@@ -1997,6 +2046,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	[lt_cv_ld_exported_symbols_list=no])
 	LDFLAGS="$save_LDFLAGS"
     ])
+
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       [lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
@@ -2014,7 +2064,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -2059,8 +2111,8 @@ _LT_EOF
 ])
 
 
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -2071,6 +2123,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
@@ -2354,14 +2408,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -2438,13 +2505,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -2624,6 +2691,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -2663,7 +2735,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -3209,7 +3281,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -3218,7 +3290,7 @@ aix3*)
   ;;
 
 aix[[4-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -3283,7 +3355,7 @@ beos*)
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -3422,7 +3494,7 @@ m4_if([$1], [],[
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -3430,10 +3502,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -3441,7 +3509,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -3459,7 +3527,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -3479,17 +3547,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -3550,7 +3619,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[[3-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -3566,7 +3635,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -3603,9 +3672,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -3668,7 +3737,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -3737,7 +3806,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -3762,7 +3831,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -3786,7 +3855,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -3817,7 +3886,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -3827,7 +3896,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -4249,7 +4318,7 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -4669,6 +4738,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -5253,7 +5323,9 @@ m4_if([$1], [CXX], [
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
       ;;
     esac
   else
@@ -5345,18 +5417,33 @@ m4_if([$1], [CXX], [
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -5516,7 +5603,9 @@ m4_if([$1], [CXX], [
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -5541,7 +5630,6 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -5792,8 +5880,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
 	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -6088,6 +6175,7 @@ _LT_EOF
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -6134,10 +6222,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -6150,7 +6234,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -6189,7 +6273,6 @@ _LT_EOF
       fi
       if test "$with_gnu_ld" = no; then
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -6631,9 +6714,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
@@ -6787,7 +6867,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -7157,7 +7236,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -7918,12 +7997,18 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
 
 _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 dnl Parse the compiler output and extract the necessary
@@ -8120,7 +8205,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -8253,7 +8337,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -8436,6 +8519,73 @@ CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -8505,6 +8655,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
@@ -9169,9 +9326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=default])
 
 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
@@ -9343,15 +9515,15 @@ m4_define([lt_dict_filter],
 
 # @configure_input@
 
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/bin/h5vers b/bin/h5vers
index 23e8185..138a8e9 100755
--- a/bin/h5vers
+++ b/bin/h5vers
@@ -71,7 +71,7 @@ use strict;
 # the command line) then the first line of the README.txt and RELEASE.txt files
 # one directory above the H5public.h file is also modified so it looks
 # something like: This is hdf5-1.2.3-pre1 currently under development.
-# The AC_INIT macro in configure.in will also change in this case to be
+# The AC_INIT macro in configure.ac will also change in this case to be
 # something like: AC_INIT([HDF5], [hdf5-1.2.3-pre1], [help at hdfgroup.org])
 # Version changes are also reflected in the Windows-maintained H5pubconf.h
 # file.
@@ -159,9 +159,9 @@ while ($_ = shift) {
 die "mutually exclusive options given\n" if $set && $inc;
 
 # Determine file to use as H5public.h, README.txt,
-# release_docs/RELEASE.txt, configure.in, windows/src/H5pubconf.h,
+# release_docs/RELEASE.txt, configure.ac, windows/src/H5pubconf.h,
 # vms/src/h5pubconf.h and config/lt_vers.am. 
-# The README.txt, release_docs/RELEASE.txt, configure.in, 
+# The README.txt, release_docs/RELEASE.txt, configure.ac, 
 # vms/src/h5pubconf.h, windows/src/H5pubconf.h, and config/lt_vers.am 
 # files are always in the directory above H5public.h
 unless ($file) {
@@ -183,9 +183,9 @@ die "unable to read file: $README\n" unless -r $file;
 my $RELEASE = $file;
 $RELEASE =~ s/[^\/]*$/..\/release_docs\/RELEASE.txt/;
 die "unable to read file: $RELEASE\n" unless -r $file;
-# configure.in
+# configure.ac
 my $CONFIGURE = $file;
-$CONFIGURE =~ s/[^\/]*$/..\/configure.in/;
+$CONFIGURE =~ s/[^\/]*$/..\/configure.ac/;
 die "unable to read file: $CONFIGURE\n" unless -r $file;
 # windows/src/H5pubconf.h
 my $H5PUBCONF = $file;
@@ -339,7 +339,7 @@ sub gen_configure {
   print FILE @contents;
   close FILE;
 
-  $conf =~ /^(.*?)\/?configure.in$/;
+  $conf =~ /^(.*?)\/?configure.ac$/;
 
   if ($1) {
     $rc = system("cd $1 && bin/reconfigure >/dev/null 2>/dev/null && rm -rf autom4te.cache");
@@ -352,7 +352,7 @@ sub gen_configure {
   }
 }
 
-# Update the configure.in files and regenerate them
+# Update the configure.ac files and regenerate them
 gen_configure("HDF5", $CONFIGURE) if $CONFIGURE;
 
 sub gen_h5pubconf {
diff --git a/bin/ltmain.sh b/bin/ltmain.sh
index 3061e3c..63ae69d 100644
--- a/bin/ltmain.sh
+++ b/bin/ltmain.sh
@@ -1,9 +1,9 @@
 
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -41,6 +41,7 @@
 #       --quiet, --silent    don't print informational messages
 #       --no-quiet, --no-silent
 #                            print informational messages (default)
+#       --no-warn            don't display warning messages
 #       --tag=TAG            use configuration variables from tag TAG
 #   -v, --verbose            print more informational messages than default
 #       --no-verbose         don't print the extra informational messages
@@ -69,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4
+#         $progname:	(GNU libtool) 2.4.2
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -79,9 +80,9 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4
+VERSION=2.4.2
 TIMESTAMP=""
-package_revision=1.3293
+package_revision=1.3337
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@ progpath="$0"
 
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="grep -E"}
-: ${FGREP="grep -F"}
-: ${GREP="grep"}
-: ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -387,7 +383,7 @@ case $progpath in
      ;;
   *)
      save_IFS="$IFS"
-     IFS=:
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS="$save_IFS"
        test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@ func_help ()
 	s*\$LTCFLAGS*'"$LTCFLAGS"'*
 	s*\$LD*'"$LD"'*
 	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
 	p
 	d
      }
@@ -1052,6 +1048,7 @@ opt_finish=false
 opt_help=false
 opt_help_all=false
 opt_silent=:
+opt_warning=:
 opt_verbose=:
 opt_silent=false
 opt_verbose=false
@@ -1120,6 +1117,10 @@ esac
 			opt_silent=false
 func_append preserve_args " $opt"
 			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
       --no-verbose)
 			opt_verbose=false
 func_append preserve_args " $opt"
@@ -2059,7 +2060,7 @@ func_mode_compile ()
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -3201,11 +3202,13 @@ func_mode_install ()
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -3470,7 +3473,7 @@ static const void *lt_preloaded_setup() {
 	  # linked before any other PIC object.  But we must not use
 	  # pic_flag when linking with -static.  The problem exists in
 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
@@ -3982,14 +3985,17 @@ func_exec_program_core ()
 # launches target application with the remaining arguments.
 func_exec_program ()
 {
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
   func_exec_program_core \${1+\"\$@\"}
 }
 
@@ -5057,9 +5063,15 @@ void lt_dump_script (FILE* f)
 {
 EOF
 	    func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
             cat <<"EOF"
 }
 EOF
@@ -5643,7 +5655,8 @@ func_mode_link ()
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
@@ -6147,7 +6160,8 @@ func_mode_link ()
 	lib=
 	found=no
 	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	  if test "$linkmode,$pass" = "prog,link"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
@@ -6831,7 +6845,7 @@ func_mode_link ()
 	         test "$hardcode_direct_absolute" = no; then
 		add="$dir/$linklib"
 	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
+		add_dir="-L$absdir"
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -7316,6 +7330,7 @@ func_mode_link ()
 	  # which has an extra 1 added just for fun
 	  #
 	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
 	  darwin|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
@@ -7432,7 +7447,7 @@ func_mode_link ()
 	  versuffix="$major.$revision"
 	  ;;
 
-	linux)
+	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
 	  versuffix="$major.$age.$revision"
@@ -8020,6 +8035,11 @@ EOF
 
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
 	if test "$hardcode_into_libs" = yes; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
@@ -8050,7 +8070,7 @@ EOF
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -8058,11 +8078,7 @@ EOF
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
 	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
 	    # We should set the runpath_var.
@@ -9152,6 +9168,8 @@ EOF
 	    esac
 	  done
 	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
 	eval cmds=\"$old_archive_cmds\"
 
 	func_len " $cmds"
@@ -9261,7 +9279,8 @@ EOF
 	      *.la)
 		func_basename "$deplib"
 		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		func_resolve_sysroot "$deplib"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
diff --git a/bin/trace b/bin/trace
index 188b858..3e82f43 100755
--- a/bin/trace
+++ b/bin/trace
@@ -38,6 +38,7 @@ $Source = "";
 	       "H5FD_mpio_chunk_opt_t"      => "Dh",
                "H5D_mpio_actual_io_mode_t"  => "Di",
                "H5D_layout_t"               => "Dl",
+               "H5D_mpio_no_collective_cause_t" => "Dn",
                "H5D_mpio_actual_chunk_opt_mode_t" => "Do",
                "H5D_space_status_t"         => "Ds",
                "H5FD_mpio_xfer_t"           => "Dt",
diff --git a/c++/CMakeLists.txt b/c++/CMakeLists.txt
index dad98f8..0076335 100644
--- a/c++/CMakeLists.txt
+++ b/c++/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_CPP)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Shared/Static Libs
 #-----------------------------------------------------------------------------
 IF (BUILD_SHARED_LIBS)
diff --git a/c++/Makefile.in b/c++/Makefile.in
index 0263607..8c82ca9 100644
--- a/c++/Makefile.in
+++ b/c++/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # Top-level HDF5-C++ Makefile(.in)
 # 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,24 +67,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = c++
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -78,6 +101,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -85,8 +113,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -113,7 +143,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -131,12 +161,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -408,6 +435,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -436,6 +467,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -453,12 +485,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -468,7 +500,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -482,37 +518,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -521,6 +526,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -584,6 +593,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -619,13 +642,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -661,10 +681,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -744,22 +769,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installcheck-local installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installcheck-local installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -793,7 +819,7 @@ check-clean ::
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -819,7 +845,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -843,7 +869,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -853,7 +879,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -943,7 +969,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -973,7 +999,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/c++/examples/Makefile.am b/c++/examples/Makefile.am
index dc2bc7c..cd9a9f6 100644
--- a/c++/examples/Makefile.am
+++ b/c++/examples/Makefile.am
@@ -23,7 +23,7 @@ include $(top_srcdir)/config/commence.am
 
 # These are the programs that 'make all' or 'make prog' will build and
 # which 'make check' will run.  List them in the order they should be run.
-TEST_PROG=create readdata writedata compound extend_ds chunks h5group
+EXAMPLE_PROG=create readdata writedata compound extend_ds chunks h5group
 TEST_SCRIPT=testh5c++.sh
 
 # These are the example files to be installed
diff --git a/c++/examples/Makefile.in b/c++/examples/Makefile.in
index cb4cc86..e9bbf47 100644
--- a/c++/examples/Makefile.in
+++ b/c++/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # built using h5cc (or h5fc, etc.) instead of the standard compilers.
 # This creates some extra work for us.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,31 +72,45 @@ build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/run-c++-ex.sh.in $(srcdir)/testh5c++.sh.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/examples.am
-TESTS =
+TESTS = $(TEST_SCRIPT)
 subdir = c++/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES = run-c++-ex.sh testh5c++.sh
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -98,12 +128,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -364,7 +391,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 
 # These are the programs that 'make all' or 'make prog' will build and
 # which 'make check' will run.  List them in the order they should be run.
-TEST_PROG = create readdata writedata compound extend_ds chunks h5group
+EXAMPLE_PROG = create readdata writedata compound extend_ds chunks h5group
 TEST_SCRIPT = testh5c++.sh
 
 # These are the example files to be installed
@@ -382,12 +409,11 @@ EXAMPLEDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/c++
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES = *.raw *.meta *.o
-CLEANFILES = $(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -400,6 +426,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -428,6 +458,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -453,6 +484,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -499,10 +532,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -646,8 +684,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
@@ -696,7 +734,7 @@ installcheck-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -722,7 +760,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -746,7 +784,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -756,7 +794,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -846,7 +884,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -876,7 +914,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/c++/examples/testh5c++.sh.in b/c++/examples/testh5c++.sh.in
index db6d7e2..ca4fc56 100644
--- a/c++/examples/testh5c++.sh.in
+++ b/c++/examples/testh5c++.sh.in
@@ -19,6 +19,8 @@
 # Modification:
 #
 
+srcdir=@srcdir@
+
 # Initializations
 TESTNAME=h5c++
 EXIT_SUCCESS=0
@@ -42,11 +44,6 @@ verbose=yes
 myos=`uname -s`
 myhostnama=`uname -n`
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # Generate some source files and library for tests.
 suffix=cpp		# source file suffix
 hdf5main=${H5TOOL}_hdf5main.$suffix
diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt
index d2bc71a..375bd4a 100644
--- a/c++/src/CMakeLists.txt
+++ b/c++/src/CMakeLists.txt
@@ -103,6 +103,9 @@ INSTALL (
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_CPP_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} cpplibraries)
+  
   INSTALL (
       TARGETS
           ${HDF5_CPP_LIB_TARGET}
diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp
index 6a8609f..dcc331f 100644
--- a/c++/src/H5CommonFG.cpp
+++ b/c++/src/H5CommonFG.cpp
@@ -68,25 +68,29 @@ namespace H5 {
 //--------------------------------------------------------------------------
 Group CommonFG::createGroup( const char* name, size_t size_hint ) const
 {
-   // Create group creation property list for size_hint
-   hid_t gcpl_id = H5Pcreate(H5P_GROUP_CREATE);
-
-   // If the creation of the property list failed, throw an exception
-   if( gcpl_id < 0 )
-      throwException("createGroup", "H5Pcreate failed");
+   // Group creation property list for size_hint
+   hid_t gcpl_id = 0;
 
    // Set the local heap size hint
-   if( H5Pset_local_heap_size_hint(gcpl_id, size_hint) < 0) {
-      H5Pclose(gcpl_id);
-      throwException("createGroup", "H5Pset_local_heap_size failed");
-   }
+   if(!(size_hint == (size_t)-1 || size_hint == 0)) {
+
+       // If the creation of the property list failed, throw an exception
+       if((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0)
+          throwException("createGroup", "H5Pcreate failed");
+
+       if( H5Pset_local_heap_size_hint(gcpl_id, size_hint) < 0) {
+          H5Pclose(gcpl_id);
+          throwException("createGroup", "H5Pset_local_heap_size failed");
+       }
+    }
 
    // Call C routine H5Gcreate2 to create the named group, giving the
    // location id which can be a file id or a group id
    hid_t group_id = H5Gcreate2( getLocId(), name, H5P_DEFAULT, gcpl_id, H5P_DEFAULT );
 
-   // Close the group creation property list
-   H5Pclose(gcpl_id);
+   // Close the group creation property list, if necessary
+   if(gcpl_id > 0)
+       H5Pclose(gcpl_id);
 
    // If the creation of the group failed, throw an exception
    if( group_id < 0 )
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index b33a033..c3ea22c 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -35,6 +34,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,6 +71,7 @@ build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/h5c++.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/lt_vers.am
@@ -64,7 +81,7 @@ DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
 TESTS =
 subdir = c++/src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -92,6 +109,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
 	"$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -104,14 +127,27 @@ am_libhdf5_cpp_la_OBJECTS = H5Exception.lo H5IdComponent.lo \
 	H5StrType.lo H5ArrayType.lo H5VarLenType.lo H5CompType.lo \
 	H5DataSet.lo H5CommonFG.lo H5Group.lo H5File.lo
 libhdf5_cpp_la_OBJECTS = $(am_libhdf5_cpp_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libhdf5_cpp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libhdf5_cpp_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
 SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -122,31 +158,34 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(libhdf5_cpp_la_SOURCES)
 DIST_SOURCES = $(libhdf5_cpp_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 HEADERS = $(include_HEADERS)
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -164,12 +203,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -431,7 +467,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 
 # Include src directory
@@ -484,6 +520,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -513,6 +553,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -526,7 +567,6 @@ h5c++: $(top_builddir)/config.status $(srcdir)/h5c++.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -534,6 +574,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -549,18 +591,23 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libhdf5_cpp.la: $(libhdf5_cpp_la_OBJECTS) $(libhdf5_cpp_la_DEPENDENCIES) 
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libhdf5_cpp.la: $(libhdf5_cpp_la_OBJECTS) $(libhdf5_cpp_la_DEPENDENCIES) $(EXTRA_libhdf5_cpp_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(libhdf5_cpp_la_LINK) -rpath $(libdir) $(libhdf5_cpp_la_OBJECTS) $(libhdf5_cpp_la_LIBADD) $(LIBS)
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -588,9 +635,7 @@ uninstall-binSCRIPTS:
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -628,26 +673,23 @@ distclean-compile:
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -656,8 +698,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -671,9 +716,7 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -724,6 +767,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -775,10 +832,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -866,8 +928,8 @@ uninstall-am: uninstall-binSCRIPTS uninstall-includeHEADERS \
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-generic clean-libLTLIBRARIES clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-generic clean-libLTLIBRARIES clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-binSCRIPTS \
 	install-data install-data-am install-dvi install-dvi-am \
@@ -919,7 +981,7 @@ mostlyclean-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -945,7 +1007,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -969,7 +1031,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -979,7 +1041,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1069,7 +1131,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1099,7 +1161,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/c++/test/Makefile.in b/c++/test/Makefile.in
index f7e4958..00a8056 100644
--- a/c++/test/Makefile.in
+++ b/c++/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # HDF5-C++ Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,16 +67,18 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/H5srcdir_str.h.in $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/Makefile.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 
 # Shared C++ libraries aren't universally supported.
 @CXX_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_1)
 subdir = c++/test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -76,9 +94,22 @@ am_testhdf5_OBJECTS = testhdf5.$(OBJEXT) dsets.$(OBJEXT) \
 testhdf5_OBJECTS = $(am_testhdf5_OBJECTS)
 testhdf5_LDADD = $(LDADD)
 testhdf5_DEPENDENCIES = $(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -89,30 +120,33 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(testhdf5_SOURCES)
 DIST_SOURCES = $(testhdf5_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -130,12 +164,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -422,6 +453,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -451,6 +486,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -471,7 +507,7 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-testhdf5$(EXEEXT): $(testhdf5_OBJECTS) $(testhdf5_DEPENDENCIES) 
+testhdf5$(EXEEXT): $(testhdf5_OBJECTS) $(testhdf5_DEPENDENCIES) $(EXTRA_testhdf5_DEPENDENCIES) 
 	@rm -f testhdf5$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(testhdf5_OBJECTS) $(testhdf5_LDADD) $(LIBS)
 
@@ -497,26 +533,23 @@ distclean-compile:
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -573,6 +606,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -622,10 +669,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -711,8 +763,8 @@ uninstall-am:
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -748,7 +800,7 @@ mostlyclean-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -774,7 +826,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -798,7 +850,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -808,7 +860,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -898,7 +950,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -928,7 +980,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp
index 88ffc03..df01752 100644
--- a/c++/test/tfile.cpp
+++ b/c++/test/tfile.cpp
@@ -110,15 +110,22 @@ static void test_file_create()
 
 	// try to create the same file with H5F_ACC_TRUNC. This should fail
 	// because file1 is the same file and is currently open.
+
+/* These three are failing with new/PGI compiler, HDFFV-8067
+   The line "H5File file2 (FILE1, H5F_ACC_TRUNC);  // should throw E"
+   Results in this message:
+       "terminate called without an active exception
+        Command terminated by signal 6"
+   Commenting it out until it's fixed  LK 20120626. 
 #ifndef H5_HAVE_FILE_VERSIONS
 	try {
 	    H5File file2 (FILE1, H5F_ACC_TRUNC);  // should throw E
-
 	    // Should FAIL but didn't, so throw an invalid action exception
 	    throw InvalidActionException("H5File constructor", "Attempted to create an existing file.");
 	}
 	catch( FileIException E ) // catch truncating existing file
 	{} // do nothing, FAIL expected
+
 #endif
 	// Close file1
 	delete file1;
@@ -152,13 +159,15 @@ static void test_file_create()
      	// Try with H5F_ACC_EXCL. This should fail too because the file already
      	// exists.
     	try {
-	    H5File file3 (FILE1, H5F_ACC_EXCL);  // should throw E
+//	    H5File file3 (FILE1, H5F_ACC_EXCL);  // should throw E
 
 	    // Should FAIL but didn't, so throw an invalid action exception
 	    throw InvalidActionException("H5File constructor", "H5F_ACC_EXCL attempt on an existing file.");
     	}
 	catch( FileIException E ) // catching H5F_ACC_EXCL on existing file
 	{} // do nothing, FAIL expected
+*/
+   std::cerr << "SKIPPED for HDFFV-8067" << std::endl;
 
     	// Get the file-creation template
 	FileCreatPropList tmpl1 = file1->getCreatePlist();
diff --git a/config/Makefile.am.blank b/config/Makefile.am.blank
index a091c60..05799fc 100755
--- a/config/Makefile.am.blank
+++ b/config/Makefile.am.blank
@@ -20,7 +20,7 @@
 #
 
 ## Makefile.am template
-## When automake is run, it scans configure.in to find all Makefiles used by
+## When automake is run, it scans configure.ac to find all Makefiles used by
 ## the build that come from Makefile.in files.  If there are Makefile.am's 
 ## in any of those locations, it parses the Makefile.am's to produce
 ## Makefile.in's, which configure uses to create Makefiles.
diff --git a/config/apple b/config/apple
index a2d6ae4..34085e0 100644
--- a/config/apple
+++ b/config/apple
@@ -28,6 +28,22 @@ fi
 
 # Figure out compiler flags
 . $srcdir/config/gnu-flags
+# temp patch: if GCC 4.2.1 is used in Lion or Mountain Lion systems, do not
+# use -O option as it causes failures in test/dt_arith.
+#echo host_os=$host_os
+case "$host_os" in
+    darwin1[12].*)   # lion & mountain lion
+	#echo cc_vendor=$cc_vendor'-'cc_version=$cc_version
+	case "$cc_vendor-$cc_version" in
+	    gcc-4.2.1)
+		# Remove any -O flags
+		#echo PROD_CFLAGS=$PROD_CFLAGS
+		PROD_CFLAGS="`echo $PROD_CFLAGS | sed -e 's/-O[0-3]*//'`"
+		#echo new PROD_CFLAGS=$PROD_CFLAGS
+		;;
+	esac
+	;;
+esac
  
 . $srcdir/config/intel-flags
 if test "X-" = "X-$FC"; then
diff --git a/config/cmake/CTestCustom.cmake b/config/cmake/CTestCustom.cmake
index c29cc60..f87f246 100755
--- a/config/cmake/CTestCustom.cmake
+++ b/config/cmake/CTestCustom.cmake
@@ -5,14 +5,15 @@ SET (CTEST_CUSTOM_WARNING_EXCEPTION
     "H5detect.c.[0-9]+.[ \t]*:[ \t]*warning C4090:"
     "H5detect.c.[0-9]+.[ \t]*:[ \t]*warning:[ \t]*passing argument"
     "H5detect.c[0-9 \t:]*warning:[ \t]*passing argument"
-    "H5detect.c[0-9 \t:]*note:[ \t]*expected .void .. but argument is of type .volatile"
-    "include/string.h[0-9 \t:]*note:[ \t]*expected .void .. but argument is of type .volatile"
-    "note:[ \t]*expected .void .. but argument is of type .volatile"
+    "note.*expected.*void.*but argument is of type.*volatile"
     "H5Tconv.c[0-9 \t:]*warning:[ \t]*comparison is always false due to limited range of data type"
     "H5Ztrans.c.[0-9]+.[ \t]*:[ \t]*warning C4244"
     "SZIP.src.*:[ \t]*warning"
     "POSIX name for this item is deprecated"
     "disabling jobserver mode"
+    "config.cmake.xlatefile.c"
+    "warning.*implicit declaration of function"
+#    "fpp:[ \t]*warning:[ \t]*cannot remove H5_DEBUG_API - not a predefined macro"
 )
  
 SET (CTEST_CUSTOM_MEMCHECK_IGNORE
@@ -35,11 +36,9 @@ SET (CTEST_CUSTOM_MEMCHECK_IGNORE
     hl_test-clear-objects
     hl_fortran_test-clear-objects
     ######### tools/h5copy #########
-    H5COPY-clearall-objects
     H5COPY-clear-refs
     H5COPY-clear-ext-links
     H5COPY-clear-misc
-    H5COPY-clear-samefile
     ######### tools/h5diff #########
     H5DIFF-clearall-objects
     ######### tools/h5dump #########
@@ -50,7 +49,22 @@ SET (CTEST_CUSTOM_MEMCHECK_IGNORE
     H5DUMP_PACKED_BITS-clearall-objects
     H5DUMP-XML-clearall-objects
     ######### tools/h5import #########
-    H5IMPORT-clear-objects
+    H5IMPORT-ASCII_I32-clear-objects
+    H5IMPORT-ASCII_I16-clear-objects
+    H5IMPORT-ASCII_I8-clear-objects
+    H5IMPORT-ASCII_UI16-clear-objects
+    H5IMPORT-ASCII_UI32-clear-objects
+    H5IMPORT-ASCII_F32-clear-objects
+    H5IMPORT-ASCII_F64-clear-objects
+    H5IMPORT-BINARY_F64-clear-objects
+    H5IMPORT-BINARY_I8-clear-objects
+    H5IMPORT-BINARY_I16-clear-objects
+    H5IMPORT-BINARY_I32-clear-objects
+    H5IMPORT-BINARY_UI16-clear-objects
+    H5IMPORT-BINARY_UI32-clear-objects
+    H5IMPORT-STR-clear-objects
+    H5IMPORT-BINARY_I8_EOF-clear-objects
+    H5IMPORT-ASCII_F64_R1-clear-objects
     ######### tools/h5jam #########
     H5JAM-SETUP-N_twithub_u10_c-clear-objects
     H5JAM-SETUP-N_twithub_u10_c
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index 930f3a9..84ee5b3 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -11,6 +11,7 @@ INCLUDE (${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
 INCLUDE (${CMAKE_ROOT}/Modules/CheckVariableExists.cmake)
 INCLUDE (${CMAKE_ROOT}/Modules/CheckFortranFunctionExists.cmake)
 INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
+INCLUDE (${CMAKE_ROOT}/Modules/TestForSTDNamespace.cmake)
 
 #-----------------------------------------------------------------------------
 # Always SET this for now IF we are on an OS X box
@@ -37,18 +38,6 @@ ENDIF (HDF5_Enable_Clear_File_Buffers)
 MARK_AS_ADVANCED (HDF5_Enable_Clear_File_Buffers)
 
 #-----------------------------------------------------------------------------
-# Option for --enable-instrument
-#-----------------------------------------------------------------------------
-IF (CMAKE_BUILD_TYPE MATCHES Debug)
-  SET (HDF5_Enable_Instrument ON)
-ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
-OPTION (HDF5_Enable_Instrument "Instrument The library" HDF5_Enable_Instrument)
-IF (HDF5_Enable_Instrument)
-  SET (H5_HAVE_INSTRUMENTED_LIBRARY 1)
-ENDIF (HDF5_Enable_Instrument)
-MARK_AS_ADVANCED (HDF5_Enable_Instrument)
-
-#-----------------------------------------------------------------------------
 # Option for --enable-strict-format-checks
 #-----------------------------------------------------------------------------
 OPTION (HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" OFF)
@@ -132,10 +121,13 @@ IF (WIN32)
   IF (MINGW)
     SET (H5_HAVE_MINGW 1)
     SET (WINDOWS 1) # MinGW tries to imitate Windows
+    SET (CMAKE_REQUIRED_FLAGS "-DWIN32_LEAN_AND_MEAN=1 -DNOGDI=1")
   ENDIF (MINGW)
   SET (H5_HAVE_WIN32_API 1)
+  SET (CMAKE_REQUIRED_LIBRARIES "ws2_32.lib;wsock32.lib")
   IF (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
     SET (WINDOWS 1)
+    SET (CMAKE_REQUIRED_FLAGS "/DWIN32_LEAN_AND_MEAN=1 /DNOGDI=1")
     IF (MSVC)
       SET (H5_HAVE_VISUAL_STUDIO 1)
     ENDIF (MSVC)
@@ -153,6 +145,8 @@ ENDIF (WIN32)
 # Should the Default Virtual File Driver be compiled?
 # This is hard-coded now but option should added to match configure
 #
+SET (H5_DEFAULT_VFD H5FD_SEC2)
+
 IF (WINDOWS)
   SET (H5_HAVE_WINDOWS 1)
   # ----------------------------------------------------------------------
@@ -160,24 +154,16 @@ IF (WINDOWS)
   # that is, "drive-letter:\" (e.g. "C:") or "drive-letter:/" (e.g. "C:/").
   # (This flag should be _unset_ for all machines, except for Windows)
   SET (H5_HAVE_WINDOW_PATH 1)
-  SET (LINK_LIBS ${LINK_LIBS} "kernel32")
 ENDIF (WINDOWS)
-SET (H5_DEFAULT_VFD H5FD_SEC2)
 
 IF (WINDOWS)
-  SET (H5_HAVE_IO_H 1)
-  SET (H5_HAVE_SETJMP_H 1)
   SET (H5_HAVE_STDDEF_H 1)
   SET (H5_HAVE_SYS_STAT_H 1)
-  SET (H5_HAVE_SYS_TIMEB_H 1)
   SET (H5_HAVE_SYS_TYPES_H 1)
-  SET (H5_HAVE_WINSOCK_H 1)
   SET (H5_HAVE_LIBM 1)
   SET (H5_HAVE_STRDUP 1)
   SET (H5_HAVE_SYSTEM 1)
-  SET (H5_HAVE_DIFFTIME 1)
   SET (H5_HAVE_LONGJMP 1)
-  SET (H5_STDC_HEADERS 1)
   IF (NOT MINGW)
     SET (H5_HAVE_GETHOSTNAME 1)
   ENDIF (NOT MINGW)
@@ -187,6 +173,11 @@ IF (WINDOWS)
   SET (H5_HAVE_TIMEZONE 1)
   SET (H5_HAVE_GETTIMEOFDAY 1)
   SET (H5_LONE_COLON 0)
+  IF (MINGW)
+    SET (H5_HAVE_WINSOCK2_H 1)
+  ENDIF (MINGW)
+  SET (H5_HAVE_LIBWS2_32 1)
+  SET (H5_HAVE_LIBWSOCK32 1)
 ENDIF (WINDOWS)
 
 #-----------------------------------------------------------------------------
@@ -194,9 +185,7 @@ ENDIF (WINDOWS)
 # something not quite correct with the actual test implementation. This affects
 # the 'dt_arith' test and most likely lots of other code
 # ----------------------------------------------------------------------------
-IF (WINDOWS)
-  SET (H5_FP_TO_ULLONG_RIGHT_MAXIMUM "" CACHE INTERNAL "")
-ENDIF (WINDOWS)
+SET (H5_FP_TO_ULLONG_RIGHT_MAXIMUM "" CACHE INTERNAL "")
 
 # ----------------------------------------------------------------------
 # END of WINDOWS Hard code Values
@@ -210,11 +199,11 @@ ENDIF (CYGWIN)
 #  Check for the math library "m"
 #-----------------------------------------------------------------------------
 IF (NOT WINDOWS)
-  CHECK_LIBRARY_EXISTS_CONCAT ("m" random     H5_HAVE_LIBM)
+  CHECK_LIBRARY_EXISTS_CONCAT ("m" ceil     H5_HAVE_LIBM)
+  CHECK_LIBRARY_EXISTS_CONCAT ("ws2_32" WSAStartup  H5_HAVE_LIBWS2_32)
+  CHECK_LIBRARY_EXISTS_CONCAT ("wsock32" gethostbyname H5_HAVE_LIBWSOCK32)
 ENDIF (NOT WINDOWS)
 
-CHECK_LIBRARY_EXISTS_CONCAT ("ws2_32" WSAStartup  H5_HAVE_LIBWS2_32)
-CHECK_LIBRARY_EXISTS_CONCAT ("wsock32" gethostbyname H5_HAVE_LIBWSOCK32)
 CHECK_LIBRARY_EXISTS_CONCAT ("ucb"    gethostname  H5_HAVE_LIBUCB)
 CHECK_LIBRARY_EXISTS_CONCAT ("socket" connect      H5_HAVE_LIBSOCKET)
 CHECK_LIBRARY_EXISTS ("c" gethostbyname "" NOT_NEED_LIBNSL)
@@ -223,13 +212,132 @@ IF (NOT NOT_NEED_LIBNSL)
   CHECK_LIBRARY_EXISTS_CONCAT ("nsl"    gethostbyname  H5_HAVE_LIBNSL)
 ENDIF (NOT NOT_NEED_LIBNSL)
 
+# For other tests to use the same libraries
+SET (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LINK_LIBS})
 
 SET (USE_INCLUDES "")
 IF (WINDOWS)
   SET (USE_INCLUDES ${USE_INCLUDES} "windows.h")
 ENDIF (WINDOWS)
 
-TEST_BIG_ENDIAN(H5_WORDS_BIGENDIAN)
+IF (NOT WINDOWS)
+  TEST_BIG_ENDIAN(H5_WORDS_BIGENDIAN)
+ENDIF (NOT WINDOWS)
+
+# For other specific tests, use this MACRO.
+MACRO (HDF5_FUNCTION_TEST OTHER_TEST)
+  IF ("H5_${OTHER_TEST}" MATCHES "^H5_${OTHER_TEST}$")
+    SET (MACRO_CHECK_FUNCTION_DEFINITIONS "-D${OTHER_TEST} ${CMAKE_REQUIRED_FLAGS}")
+    SET (OTHER_TEST_ADD_LIBRARIES)
+    IF (CMAKE_REQUIRED_LIBRARIES)
+      SET (OTHER_TEST_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+    ENDIF (CMAKE_REQUIRED_LIBRARIES)
+
+    FOREACH (def ${HDF5_EXTRA_TEST_DEFINITIONS})
+      SET (MACRO_CHECK_FUNCTION_DEFINITIONS "${MACRO_CHECK_FUNCTION_DEFINITIONS} -D${def}=${${def}}")
+    ENDFOREACH (def)
+
+    FOREACH (def
+        HAVE_SYS_TIME_H
+        HAVE_UNISTD_H
+        HAVE_SYS_TYPES_H
+        HAVE_SYS_SOCKET_H
+    )
+      IF ("${H5_${def}}")
+        SET (MACRO_CHECK_FUNCTION_DEFINITIONS "${MACRO_CHECK_FUNCTION_DEFINITIONS} -D${def}")
+      ENDIF ("${H5_${def}}")
+    ENDFOREACH (def)
+
+    IF (LARGEFILE)
+      SET (MACRO_CHECK_FUNCTION_DEFINITIONS
+          "${MACRO_CHECK_FUNCTION_DEFINITIONS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE"
+      )
+    ENDIF (LARGEFILE)
+
+    #MESSAGE (STATUS "Performing ${OTHER_TEST}")
+    TRY_COMPILE (${OTHER_TEST}
+        ${CMAKE_BINARY_DIR}
+        ${HDF5_RESOURCES_DIR}/HDF5Tests.c
+        CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+        "${OTHER_TEST_ADD_LIBRARIES}"
+        OUTPUT_VARIABLE OUTPUT
+    )
+    IF (${OTHER_TEST})
+      SET (H5_${OTHER_TEST} 1 CACHE INTERNAL "Other test ${FUNCTION}")
+      MESSAGE (STATUS "Performing Other Test ${OTHER_TEST} - Success")
+    ELSE (${OTHER_TEST})
+      MESSAGE (STATUS "Performing Other Test ${OTHER_TEST} - Failed")
+      SET (H5_${OTHER_TEST} "" CACHE INTERNAL "Other test ${FUNCTION}")
+      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+          "Performing Other Test ${OTHER_TEST} failed with the following output:\n"
+          "${OUTPUT}\n"
+      )
+    ENDIF (${OTHER_TEST})
+  ENDIF ("H5_${OTHER_TEST}" MATCHES "^H5_${OTHER_TEST}$")
+ENDMACRO (HDF5_FUNCTION_TEST)
+
+#-----------------------------------------------------------------------------
+# Check for these functions before the time headers are checked
+#-----------------------------------------------------------------------------
+HDF5_FUNCTION_TEST (STDC_HEADERS)
+
+CHECK_FUNCTION_EXISTS (difftime          H5_HAVE_DIFFTIME)
+#CHECK_FUNCTION_EXISTS (gettimeofday      H5_HAVE_GETTIMEOFDAY)
+#  Since gettimeofday is not defined any where standard, lets look in all the
+#  usual places. On MSVC we are just going to use ::clock()
+IF (NOT MSVC)
+  IF ("H5_HAVE_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_TIME_GETTIMEOFDAY$")
+    TRY_COMPILE (HAVE_TIME_GETTIMEOFDAY
+        ${CMAKE_BINARY_DIR}
+        ${HDF5_RESOURCES_DIR}/GetTimeOfDayTest.cpp
+        COMPILE_DEFINITIONS -DTRY_TIME_H
+        OUTPUT_VARIABLE OUTPUT
+    )
+    IF (HAVE_TIME_GETTIMEOFDAY STREQUAL "TRUE")
+      SET (H5_HAVE_TIME_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_TIME_GETTIMEOFDAY")
+      SET (H5_HAVE_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_GETTIMEOFDAY")
+    ENDIF (HAVE_TIME_GETTIMEOFDAY STREQUAL "TRUE")
+  ENDIF ("H5_HAVE_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_TIME_GETTIMEOFDAY$")
+
+  IF ("H5_HAVE_SYS_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_SYS_TIME_GETTIMEOFDAY$")
+    TRY_COMPILE (HAVE_SYS_TIME_GETTIMEOFDAY
+        ${CMAKE_BINARY_DIR}
+        ${HDF5_RESOURCES_DIR}/GetTimeOfDayTest.cpp
+        COMPILE_DEFINITIONS -DTRY_SYS_TIME_H
+        OUTPUT_VARIABLE OUTPUT
+    )
+    IF (HAVE_SYS_TIME_GETTIMEOFDAY STREQUAL "TRUE")
+      SET (H5_HAVE_SYS_TIME_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_SYS_TIME_GETTIMEOFDAY")
+      SET (H5_HAVE_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_GETTIMEOFDAY")
+    ENDIF (HAVE_SYS_TIME_GETTIMEOFDAY STREQUAL "TRUE")
+  ENDIF ("H5_HAVE_SYS_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_SYS_TIME_GETTIMEOFDAY$")
+
+  IF (NOT HAVE_SYS_TIME_GETTIMEOFDAY AND NOT H5_HAVE_GETTIMEOFDAY)
+    MESSAGE (STATUS "---------------------------------------------------------------")
+    MESSAGE (STATUS "Function 'gettimeofday()' was not found. HDF5 will use its")
+    MESSAGE (STATUS "  own implementation.. This can happen on older versions of")
+    MESSAGE (STATUS "  MinGW on Windows. Consider upgrading your MinGW installation")
+    MESSAGE (STATUS "  to a newer version such as MinGW 3.12")
+    MESSAGE (STATUS "---------------------------------------------------------------")
+  ENDIF (NOT HAVE_SYS_TIME_GETTIMEOFDAY AND NOT H5_HAVE_GETTIMEOFDAY)
+ENDIF (NOT MSVC)
+
+# Find the library containing clock_gettime()
+IF (NOT WINDOWS)
+  CHECK_FUNCTION_EXISTS(clock_gettime CLOCK_GETTIME_IN_LIBC)
+  CHECK_LIBRARY_EXISTS(rt clock_gettime "" CLOCK_GETTIME_IN_LIBRT)
+  CHECK_LIBRARY_EXISTS(posix4 clock_gettime "" CLOCK_GETTIME_IN_LIBPOSIX4)
+  IF(CLOCK_GETTIME_IN_LIBC)
+    SET(H5_HAVE_CLOCK_GETTIME 1)
+  ELSEIF(CLOCK_GETTIME_IN_LIBRT)
+    SET(H5_HAVE_CLOCK_GETTIME 1)
+    LIST(APPEND LINK_LIBS rt)
+  ELSEIF(CLOCK_GETTIME_IN_LIBPOSIX4)
+    SET(H5_HAVE_CLOCK_GETTIME 1)
+    LIST(APPEND LINK_LIBS posix4)
+  ENDIF(CLOCK_GETTIME_IN_LIBC)
+ENDIF (NOT WINDOWS)
+#-----------------------------------------------------------------------------
 
 #-----------------------------------------------------------------------------
 # Check IF header file exists and add it to the list.
@@ -244,43 +352,17 @@ ENDMACRO (CHECK_INCLUDE_FILE_CONCAT)
 #-----------------------------------------------------------------------------
 #  Check for the existence of certain header files
 #-----------------------------------------------------------------------------
-CHECK_INCLUDE_FILE_CONCAT ("globus/common.h" H5_HAVE_GLOBUS_COMMON_H)
-CHECK_INCLUDE_FILE_CONCAT ("io.h"            H5_HAVE_IO_H)
-CHECK_INCLUDE_FILE_CONCAT ("mfhdf.h"         H5_HAVE_MFHDF_H)
-CHECK_INCLUDE_FILE_CONCAT ("pdb.h"           H5_HAVE_PDB_H)
-CHECK_INCLUDE_FILE_CONCAT ("pthread.h"       H5_HAVE_PTHREAD_H)
-CHECK_INCLUDE_FILE_CONCAT ("setjmp.h"        H5_HAVE_SETJMP_H)
-CHECK_INCLUDE_FILE_CONCAT ("srbclient.h"     H5_HAVE_SRBCLIENT_H)
-CHECK_INCLUDE_FILE_CONCAT ("stddef.h"        H5_HAVE_STDDEF_H)
-CHECK_INCLUDE_FILE_CONCAT ("stdint.h"        H5_HAVE_STDINT_H)
-CHECK_INCLUDE_FILE_CONCAT ("string.h"        H5_HAVE_STRING_H)
-CHECK_INCLUDE_FILE_CONCAT ("strings.h"       H5_HAVE_STRINGS_H)
-CHECK_INCLUDE_FILE_CONCAT ("sys/ioctl.h"     H5_HAVE_SYS_IOCTL_H)
-CHECK_INCLUDE_FILE_CONCAT ("sys/proc.h"      H5_HAVE_SYS_PROC_H)
 CHECK_INCLUDE_FILE_CONCAT ("sys/resource.h"  H5_HAVE_SYS_RESOURCE_H)
-CHECK_INCLUDE_FILE_CONCAT ("sys/socket.h"    H5_HAVE_SYS_SOCKET_H)
-CHECK_INCLUDE_FILE_CONCAT ("sys/stat.h"      H5_HAVE_SYS_STAT_H)
-IF (CMAKE_SYSTEM_NAME MATCHES "OSF")
-  CHECK_INCLUDE_FILE_CONCAT ("sys/sysinfo.h" H5_HAVE_SYS_SYSINFO_H)
-ELSE (CMAKE_SYSTEM_NAME MATCHES "OSF")
-  SET (H5_HAVE_SYS_SYSINFO_H "" CACHE INTERNAL "" FORCE)
-ENDIF (CMAKE_SYSTEM_NAME MATCHES "OSF")
 CHECK_INCLUDE_FILE_CONCAT ("sys/time.h"      H5_HAVE_SYS_TIME_H)
-CHECK_INCLUDE_FILE_CONCAT ("time.h"          H5_HAVE_TIME_H)
-CHECK_INCLUDE_FILE_CONCAT ("mach/mach_time.h" H5_HAVE_MACH_MACH_TIME_H)
-CHECK_INCLUDE_FILE_CONCAT ("sys/timeb.h"     H5_HAVE_SYS_TIMEB_H)
-CHECK_INCLUDE_FILE_CONCAT ("sys/types.h"     H5_HAVE_SYS_TYPES_H)
 CHECK_INCLUDE_FILE_CONCAT ("unistd.h"        H5_HAVE_UNISTD_H)
-CHECK_INCLUDE_FILE_CONCAT ("stdlib.h"        H5_HAVE_STDLIB_H)
-CHECK_INCLUDE_FILE_CONCAT ("memory.h"        H5_HAVE_MEMORY_H)
-CHECK_INCLUDE_FILE_CONCAT ("dlfcn.h"         H5_HAVE_DLFCN_H)
+CHECK_INCLUDE_FILE_CONCAT ("sys/ioctl.h"     H5_HAVE_SYS_IOCTL_H)
+CHECK_INCLUDE_FILE_CONCAT ("sys/stat.h"      H5_HAVE_SYS_STAT_H)
+CHECK_INCLUDE_FILE_CONCAT ("sys/socket.h"    H5_HAVE_SYS_SOCKET_H)
+CHECK_INCLUDE_FILE_CONCAT ("sys/types.h"     H5_HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILE_CONCAT ("stddef.h"        H5_HAVE_STDDEF_H)
+CHECK_INCLUDE_FILE_CONCAT ("setjmp.h"        H5_HAVE_SETJMP_H)
 CHECK_INCLUDE_FILE_CONCAT ("features.h"      H5_HAVE_FEATURES_H)
-CHECK_INCLUDE_FILE_CONCAT ("inttypes.h"      H5_HAVE_INTTYPES_H)
-CHECK_INCLUDE_FILE_CONCAT ("netinet/in.h"    H5_HAVE_NETINET_IN_H)
-
-IF (NOT CYGWIN)
-  CHECK_INCLUDE_FILE_CONCAT ("winsock2.h"      H5_HAVE_WINSOCK_H)
-ENDIF (NOT CYGWIN)
+CHECK_INCLUDE_FILE_CONCAT ("stdint.h"        H5_HAVE_STDINT_H)
 
 # IF the c compiler found stdint, check the C++ as well. On some systems this
 # file will be found by C but not C++, only do this test IF the C++ compiler
@@ -293,6 +375,37 @@ IF (H5_HAVE_STDINT_H AND CMAKE_CXX_COMPILER_LOADED)
   ENDIF (NOT H5_HAVE_STDINT_H_CXX)
 ENDIF (H5_HAVE_STDINT_H AND CMAKE_CXX_COMPILER_LOADED)
 
+# Darwin
+CHECK_INCLUDE_FILE_CONCAT ("mach/mach_time.h" H5_HAVE_MACH_MACH_TIME_H)
+
+# Windows
+CHECK_INCLUDE_FILE_CONCAT ("io.h"            H5_HAVE_IO_H)
+IF (NOT CYGWIN)
+  CHECK_INCLUDE_FILE_CONCAT ("winsock2.h"      H5_HAVE_WINSOCK2_H)
+ENDIF (NOT CYGWIN)
+CHECK_INCLUDE_FILE_CONCAT ("sys/timeb.h"     H5_HAVE_SYS_TIMEB_H)
+
+IF (CMAKE_SYSTEM_NAME MATCHES "OSF")
+  CHECK_INCLUDE_FILE_CONCAT ("sys/sysinfo.h" H5_HAVE_SYS_SYSINFO_H)
+  CHECK_INCLUDE_FILE_CONCAT ("sys/proc.h"    H5_HAVE_SYS_PROC_H)
+ELSE (CMAKE_SYSTEM_NAME MATCHES "OSF")
+  SET (H5_HAVE_SYS_SYSINFO_H "" CACHE INTERNAL "" FORCE)
+  SET (H5_HAVE_SYS_PROC_H    "" CACHE INTERNAL "" FORCE)
+ENDIF (CMAKE_SYSTEM_NAME MATCHES "OSF")
+
+CHECK_INCLUDE_FILE_CONCAT ("globus/common.h" H5_HAVE_GLOBUS_COMMON_H)
+CHECK_INCLUDE_FILE_CONCAT ("pdb.h"           H5_HAVE_PDB_H)
+CHECK_INCLUDE_FILE_CONCAT ("pthread.h"       H5_HAVE_PTHREAD_H)
+CHECK_INCLUDE_FILE_CONCAT ("srbclient.h"     H5_HAVE_SRBCLIENT_H)
+CHECK_INCLUDE_FILE_CONCAT ("string.h"        H5_HAVE_STRING_H)
+CHECK_INCLUDE_FILE_CONCAT ("strings.h"       H5_HAVE_STRINGS_H)
+CHECK_INCLUDE_FILE_CONCAT ("time.h"          H5_HAVE_TIME_H)
+CHECK_INCLUDE_FILE_CONCAT ("stdlib.h"        H5_HAVE_STDLIB_H)
+CHECK_INCLUDE_FILE_CONCAT ("memory.h"        H5_HAVE_MEMORY_H)
+CHECK_INCLUDE_FILE_CONCAT ("dlfcn.h"         H5_HAVE_DLFCN_H)
+CHECK_INCLUDE_FILE_CONCAT ("inttypes.h"      H5_HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILE_CONCAT ("netinet/in.h"    H5_HAVE_NETINET_IN_H)
+
 #-----------------------------------------------------------------------------
 #  Check for large file support
 #-----------------------------------------------------------------------------
@@ -300,10 +413,19 @@ ENDIF (H5_HAVE_STDINT_H AND CMAKE_CXX_COMPILER_LOADED)
 # The linux-lfs option is deprecated.
 SET (LINUX_LFS 0)
 
+SET (HDF5_EXTRA_C_FLAGS)
 SET (HDF5_EXTRA_FLAGS)
 IF (NOT WINDOWS)
   # Linux Specific flags
-  SET (HDF5_EXTRA_FLAGS -D_POSIX_SOURCE -D_BSD_SOURCE)
+  # This was originally defined as _POSIX_SOURCE which was updated to
+  # _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
+  # functionality so clock_gettime and CLOCK_MONOTONIC are defined
+  # correctly.
+  # POSIX feature information can be found in the gcc manual at:
+  # http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
+  SET (HDF5_EXTRA_C_FLAGS -D_POSIX_C_SOURCE=199506L)
+  SET (HDF5_EXTRA_FLAGS -D_BSD_SOURCE)
+  
   OPTION (HDF5_ENABLE_LARGE_FILE "Enable support for large (64-bit) files on Linux." ON)
   IF (HDF5_ENABLE_LARGE_FILE)
     SET (msg "Performing TEST_LFS_WORKS")
@@ -340,6 +462,28 @@ ENDIF (NOT WINDOWS)
 ADD_DEFINITIONS (${HDF5_EXTRA_FLAGS})
 
 #-----------------------------------------------------------------------------
+# Check for HAVE_OFF64_T functionality
+#-----------------------------------------------------------------------------
+IF (NOT WINDOWS OR MINGW)
+  HDF5_FUNCTION_TEST (HAVE_OFF64_T)
+  IF (H5_HAVE_OFF64_T)
+    CHECK_FUNCTION_EXISTS (lseek64            H5_HAVE_LSEEK64)
+    CHECK_FUNCTION_EXISTS (fseeko64           H5_HAVE_FSEEKO64)
+    CHECK_FUNCTION_EXISTS (ftello64           H5_HAVE_FTELLO64)
+    CHECK_FUNCTION_EXISTS (ftruncate64        H5_HAVE_FTRUNCATE64)
+  ENDIF (H5_HAVE_OFF64_T)
+
+  CHECK_FUNCTION_EXISTS (fseeko               H5_HAVE_FSEEKO)
+  CHECK_FUNCTION_EXISTS (ftello               H5_HAVE_FTELLO)
+
+  HDF5_FUNCTION_TEST (HAVE_STAT64_STRUCT)
+  IF (HAVE_STAT64_STRUCT)
+    CHECK_FUNCTION_EXISTS (fstat64            H5_HAVE_FSTAT64)
+    CHECK_FUNCTION_EXISTS (stat64             H5_HAVE_STAT64)
+  ENDIF (HAVE_STAT64_STRUCT)
+ENDIF (NOT WINDOWS OR MINGW)
+
+#-----------------------------------------------------------------------------
 #  Check the size in bytes of all the int and float types
 #-----------------------------------------------------------------------------
 MACRO (H5_CHECK_TYPE_SIZE type var)
@@ -353,7 +497,6 @@ MACRO (H5_CHECK_TYPE_SIZE type var)
   ENDIF (NOT ${aVar})
 ENDMACRO (H5_CHECK_TYPE_SIZE)
 
-
 H5_CHECK_TYPE_SIZE (char           H5_SIZEOF_CHAR)
 H5_CHECK_TYPE_SIZE (short          H5_SIZEOF_SHORT)
 H5_CHECK_TYPE_SIZE (int            H5_SIZEOF_INT)
@@ -370,51 +513,106 @@ ENDIF (NOT H5_SIZEOF___INT64)
 H5_CHECK_TYPE_SIZE (float          H5_SIZEOF_FLOAT)
 H5_CHECK_TYPE_SIZE (double         H5_SIZEOF_DOUBLE)
 H5_CHECK_TYPE_SIZE ("long double"  H5_SIZEOF_LONG_DOUBLE)
+
 H5_CHECK_TYPE_SIZE (int8_t         H5_SIZEOF_INT8_T)
 H5_CHECK_TYPE_SIZE (uint8_t        H5_SIZEOF_UINT8_T)
 H5_CHECK_TYPE_SIZE (int_least8_t   H5_SIZEOF_INT_LEAST8_T)
 H5_CHECK_TYPE_SIZE (uint_least8_t  H5_SIZEOF_UINT_LEAST8_T)
 H5_CHECK_TYPE_SIZE (int_fast8_t    H5_SIZEOF_INT_FAST8_T)
 H5_CHECK_TYPE_SIZE (uint_fast8_t   H5_SIZEOF_UINT_FAST8_T)
+
 H5_CHECK_TYPE_SIZE (int16_t        H5_SIZEOF_INT16_T)
 H5_CHECK_TYPE_SIZE (uint16_t       H5_SIZEOF_UINT16_T)
 H5_CHECK_TYPE_SIZE (int_least16_t  H5_SIZEOF_INT_LEAST16_T)
 H5_CHECK_TYPE_SIZE (uint_least16_t H5_SIZEOF_UINT_LEAST16_T)
 H5_CHECK_TYPE_SIZE (int_fast16_t   H5_SIZEOF_INT_FAST16_T)
 H5_CHECK_TYPE_SIZE (uint_fast16_t  H5_SIZEOF_UINT_FAST16_T)
+
 H5_CHECK_TYPE_SIZE (int32_t        H5_SIZEOF_INT32_T)
 H5_CHECK_TYPE_SIZE (uint32_t       H5_SIZEOF_UINT32_T)
 H5_CHECK_TYPE_SIZE (int_least32_t  H5_SIZEOF_INT_LEAST32_T)
 H5_CHECK_TYPE_SIZE (uint_least32_t H5_SIZEOF_UINT_LEAST32_T)
 H5_CHECK_TYPE_SIZE (int_fast32_t   H5_SIZEOF_INT_FAST32_T)
 H5_CHECK_TYPE_SIZE (uint_fast32_t  H5_SIZEOF_UINT_FAST32_T)
+
 H5_CHECK_TYPE_SIZE (int64_t        H5_SIZEOF_INT64_T)
 H5_CHECK_TYPE_SIZE (uint64_t       H5_SIZEOF_UINT64_T)
 H5_CHECK_TYPE_SIZE (int_least64_t  H5_SIZEOF_INT_LEAST64_T)
 H5_CHECK_TYPE_SIZE (uint_least64_t H5_SIZEOF_UINT_LEAST64_T)
 H5_CHECK_TYPE_SIZE (int_fast64_t   H5_SIZEOF_INT_FAST64_T)
 H5_CHECK_TYPE_SIZE (uint_fast64_t  H5_SIZEOF_UINT_FAST64_T)
+
 IF (NOT APPLE)
   H5_CHECK_TYPE_SIZE (size_t       H5_SIZEOF_SIZE_T)
   H5_CHECK_TYPE_SIZE (ssize_t      H5_SIZEOF_SSIZE_T)
   IF (NOT H5_SIZEOF_SSIZE_T)
     SET (H5_SIZEOF_SSIZE_T 0)
   ENDIF (NOT H5_SIZEOF_SSIZE_T)
+  H5_CHECK_TYPE_SIZE (ptrdiff_t    H5_SIZEOF_PTRDIFF_T)
 ENDIF (NOT APPLE)
+
 H5_CHECK_TYPE_SIZE (off_t          H5_SIZEOF_OFF_T)
 H5_CHECK_TYPE_SIZE (off64_t        H5_SIZEOF_OFF64_T)
 IF (NOT H5_SIZEOF_OFF64_T)
   SET (H5_SIZEOF_OFF64_T 0)
 ENDIF (NOT H5_SIZEOF_OFF64_T)
 
+IF (NOT WINDOWS)
+  #-----------------------------------------------------------------------------
+  # Check if the dev_t type is a scalar type
+  #-----------------------------------------------------------------------------
+  HDF5_FUNCTION_TEST (DEV_T_IS_SCALAR)
 
-# For other tests to use the same libraries
-SET (CMAKE_REQUIRED_LIBRARIES ${LINK_LIBS})
+  # ----------------------------------------------------------------------
+  # Check for MONOTONIC_TIMER support (used in clock_gettime).  This has
+  # to be done after any POSIX/BSD defines to ensure that the test gets
+  # the correct POSIX level on linux.
+  CHECK_VARIABLE_EXISTS (CLOCK_MONOTONIC HAVE_CLOCK_MONOTONIC)
+
+  #-----------------------------------------------------------------------------
+  # Check a bunch of time functions
+  #-----------------------------------------------------------------------------
+  FOREACH (test
+      HAVE_TM_GMTOFF
+      HAVE___TM_GMTOFF
+#      HAVE_TIMEZONE
+      HAVE_STRUCT_TIMEZONE
+      GETTIMEOFDAY_GIVES_TZ
+      TIME_WITH_SYS_TIME
+      HAVE_TM_ZONE
+      HAVE_STRUCT_TM_TM_ZONE
+  )
+    HDF5_FUNCTION_TEST (${test})
+  ENDFOREACH (test)
+  IF (NOT CYGWIN AND NOT MINGW)
+      HDF5_FUNCTION_TEST (HAVE_TIMEZONE)
+#      HDF5_FUNCTION_TEST (HAVE_STAT_ST_BLOCKS)
+  ENDIF (NOT CYGWIN AND NOT MINGW)
+
+  # ----------------------------------------------------------------------
+  # Does the struct stat have the st_blocks field?  This field is not Posix.
+  #
+  HDF5_FUNCTION_TEST (HAVE_STAT_ST_BLOCKS)
+
+  # ----------------------------------------------------------------------
+  # How do we figure out the width of a tty in characters?
+  #
+  CHECK_FUNCTION_EXISTS (ioctl             H5_HAVE_IOCTL)
+  HDF5_FUNCTION_TEST (HAVE_STRUCT_VIDEOCONFIG)
+  HDF5_FUNCTION_TEST (HAVE_STRUCT_TEXT_INFO)
+  CHECK_FUNCTION_EXISTS (_getvideoconfig   H5_HAVE__GETVIDEOCONFIG)
+  CHECK_FUNCTION_EXISTS (gettextinfo       H5_HAVE_GETTEXTINFO)
+  CHECK_FUNCTION_EXISTS (_scrsize          H5_HAVE__SCRSIZE)
+  CHECK_FUNCTION_EXISTS (GetConsoleScreenBufferInfo    H5_HAVE_GETCONSOLESCREENBUFFERINFO)
+  CHECK_SYMBOL_EXISTS (TIOCGWINSZ "sys/ioctl.h" H5_HAVE_TIOCGWINSZ)
+  CHECK_SYMBOL_EXISTS (TIOCGETD   "sys/ioctl.h" H5_HAVE_TIOCGETD)
+ENDIF (NOT WINDOWS)
 
 #-----------------------------------------------------------------------------
 # Check for some functions that are used
 #
 CHECK_FUNCTION_EXISTS (alarm             H5_HAVE_ALARM)
+#CHECK_FUNCTION_EXISTS (BSDgettimeofday   H5_HAVE_BSDGETTIMEOFDAY)
 CHECK_FUNCTION_EXISTS (fork              H5_HAVE_FORK)
 CHECK_FUNCTION_EXISTS (frexpf            H5_HAVE_FREXPF)
 CHECK_FUNCTION_EXISTS (frexpl            H5_HAVE_FREXPL)
@@ -447,18 +645,15 @@ CHECK_FUNCTION_EXISTS (vasprintf         H5_HAVE_VASPRINTF)
 CHECK_FUNCTION_EXISTS (waitpid           H5_HAVE_WAITPID)
 
 CHECK_FUNCTION_EXISTS (vsnprintf         H5_HAVE_VSNPRINTF)
-CHECK_FUNCTION_EXISTS (ioctl             H5_HAVE_IOCTL)
-#CHECK_FUNCTION_EXISTS (gettimeofday      H5_HAVE_GETTIMEOFDAY)
-CHECK_FUNCTION_EXISTS (difftime          H5_HAVE_DIFFTIME)
-CHECK_FUNCTION_EXISTS (fseeko            H5_HAVE_FSEEKO)
-CHECK_FUNCTION_EXISTS (ftello            H5_HAVE_FTELLO)
-CHECK_FUNCTION_EXISTS (fseeko64          H5_HAVE_FSEEKO64)
-CHECK_FUNCTION_EXISTS (ftello64          H5_HAVE_FTELLO64)
-CHECK_FUNCTION_EXISTS (fstat64           H5_HAVE_FSTAT64)
-CHECK_FUNCTION_EXISTS (stat64            H5_HAVE_STAT64)
+IF (NOT WINDOWS)
+  IF (H5_HAVE_VSNPRINTF)
+    HDF5_FUNCTION_TEST (VSNPRINTF_WORKS)
+  ENDIF (H5_HAVE_VSNPRINTF)
+ENDIF (NOT WINDOWS)
 
 #-----------------------------------------------------------------------------
 # sigsetjmp is special; may actually be a macro
+#-----------------------------------------------------------------------------
 IF (NOT H5_HAVE_SIGSETJMP)
   IF (H5_HAVE_SETJMP_H)
     CHECK_SYMBOL_EXISTS (sigsetjmp "setjmp.h" H5_HAVE_MACRO_SIGSETJMP)
@@ -469,71 +664,30 @@ IF (NOT H5_HAVE_SIGSETJMP)
 ENDIF (NOT H5_HAVE_SIGSETJMP)
 
 #-----------------------------------------------------------------------------
-#  Since gettimeofday is not defined any where standard, lets look in all the
-#  usual places. On MSVC we are just going to use ::clock()
-#-----------------------------------------------------------------------------
-IF (NOT MSVC)
-  IF ("H5_HAVE_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_TIME_GETTIMEOFDAY$")
-    TRY_COMPILE (HAVE_TIME_GETTIMEOFDAY
-        ${CMAKE_BINARY_DIR}
-        ${HDF5_RESOURCES_DIR}/GetTimeOfDayTest.cpp
-        COMPILE_DEFINITIONS -DTRY_TIME_H
-        OUTPUT_VARIABLE OUTPUT
-    )
-    IF (HAVE_TIME_GETTIMEOFDAY STREQUAL "TRUE")
-      SET (H5_HAVE_TIME_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_TIME_GETTIMEOFDAY")
-      SET (H5_HAVE_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_GETTIMEOFDAY")
-    ENDIF (HAVE_TIME_GETTIMEOFDAY STREQUAL "TRUE")
-  ENDIF ("H5_HAVE_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_TIME_GETTIMEOFDAY$")
-
-  IF ("H5_HAVE_SYS_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_SYS_TIME_GETTIMEOFDAY$")
-    TRY_COMPILE (HAVE_SYS_TIME_GETTIMEOFDAY
-        ${CMAKE_BINARY_DIR}
-        ${HDF5_RESOURCES_DIR}/GetTimeOfDayTest.cpp
-        COMPILE_DEFINITIONS -DTRY_SYS_TIME_H
-        OUTPUT_VARIABLE OUTPUT
-    )
-    IF (HAVE_SYS_TIME_GETTIMEOFDAY STREQUAL "TRUE")
-      SET (H5_HAVE_SYS_TIME_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_SYS_TIME_GETTIMEOFDAY")
-      SET (H5_HAVE_GETTIMEOFDAY "1" CACHE INTERNAL "H5_HAVE_GETTIMEOFDAY")
-    ENDIF (HAVE_SYS_TIME_GETTIMEOFDAY STREQUAL "TRUE")
-  ENDIF ("H5_HAVE_SYS_TIME_GETTIMEOFDAY" MATCHES "^H5_HAVE_SYS_TIME_GETTIMEOFDAY$")
-
-  IF (NOT HAVE_SYS_TIME_GETTIMEOFDAY AND NOT H5_HAVE_GETTIMEOFDAY)
-    MESSAGE (STATUS "---------------------------------------------------------------")
-    MESSAGE (STATUS "Function 'gettimeofday()' was not found. HDF5 will use its")
-    MESSAGE (STATUS "  own implementation.. This can happen on older versions of")
-    MESSAGE (STATUS "  MinGW on Windows. Consider upgrading your MinGW installation")
-    MESSAGE (STATUS "  to a newer version such as MinGW 3.12")
-    MESSAGE (STATUS "---------------------------------------------------------------")
-  ENDIF (NOT HAVE_SYS_TIME_GETTIMEOFDAY AND NOT H5_HAVE_GETTIMEOFDAY)
-ENDIF (NOT MSVC)
-
 # Check for Symbols
 CHECK_SYMBOL_EXISTS (tzname "time.h" H5_HAVE_DECL_TZNAME)
 
 #-----------------------------------------------------------------------------
-#
+# Check a bunch of other functions
 #-----------------------------------------------------------------------------
 IF (NOT WINDOWS)
-  CHECK_SYMBOL_EXISTS (TIOCGWINSZ "sys/ioctl.h" H5_HAVE_TIOCGWINSZ)
-  CHECK_SYMBOL_EXISTS (TIOCGETD   "sys/ioctl.h" H5_HAVE_TIOCGETD)
+  FOREACH (test
+      LONE_COLON
+      HAVE_ATTRIBUTE
+      HAVE_C99_FUNC
+      HAVE_FUNCTION
+      HAVE_C99_DESIGNATED_INITIALIZER
+      SYSTEM_SCOPE_THREADS
+      HAVE_SOCKLEN_T
+      CXX_HAVE_OFFSETOF
+  )
+    HDF5_FUNCTION_TEST (${test})
+  ENDFOREACH (test)
 ENDIF (NOT WINDOWS)
 
-#-----------------------------------------------------------------------------
-#  Check for the Stream VFD driver
-#-----------------------------------------------------------------------------
-IF (HDF5_STREAM_VFD)
-  CHECK_INCLUDE_FILE_CONCAT ("netdb.h"       H5_HAVE_NETDB_H)
-  CHECK_INCLUDE_FILE_CONCAT ("netinet/tcp.h" H5_HAVE_NETINET_TCP_H)
-  CHECK_INCLUDE_FILE_CONCAT ("sys/filio.h"   H5_HAVE_SYS_FILIO_H)
-  SET (H5_HAVE_STREAM 1)
-ENDIF (HDF5_STREAM_VFD)
-
-
-# For other other specific tests, use this MACRO.
-MACRO (HDF5_FUNCTION_TEST OTHER_TEST)
-  IF ("H5_${OTHER_TEST}" MATCHES "^H5_${OTHER_TEST}$")
+# For other CXX specific tests, use this MACRO.
+MACRO (HDF5_CXX_FUNCTION_TEST OTHER_TEST)
+  IF ("${OTHER_TEST}" MATCHES "^${OTHER_TEST}$")
     SET (MACRO_CHECK_FUNCTION_DEFINITIONS "-D${OTHER_TEST} ${CMAKE_REQUIRED_FLAGS}")
     SET (OTHER_TEST_ADD_LIBRARIES)
     IF (CMAKE_REQUIRED_LIBRARIES)
@@ -564,61 +718,87 @@ MACRO (HDF5_FUNCTION_TEST OTHER_TEST)
     #MESSAGE (STATUS "Performing ${OTHER_TEST}")
     TRY_COMPILE (${OTHER_TEST}
         ${CMAKE_BINARY_DIR}
-        ${HDF5_RESOURCES_DIR}/HDF5Tests.c
+        ${HDF5_RESOURCES_DIR}/HDF5CXXTests.cpp
         CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
         "${OTHER_TEST_ADD_LIBRARIES}"
         OUTPUT_VARIABLE OUTPUT
     )
-    IF (${OTHER_TEST})
-      SET (H5_${OTHER_TEST} 1 CACHE INTERNAL "Other test ${FUNCTION}")
-      MESSAGE (STATUS "Performing Other Test ${OTHER_TEST} - Success")
-    ELSE (${OTHER_TEST})
-      MESSAGE (STATUS "Performing Other Test ${OTHER_TEST} - Failed")
-      SET (H5_${OTHER_TEST} "" CACHE INTERNAL "Other test ${FUNCTION}")
+    IF ("${OTHER_TEST}" EQUAL 0)
+      SET (${OTHER_TEST} 1 CACHE INTERNAL "CXX test ${FUNCTION}")
+      MESSAGE (STATUS "Performing CXX Test ${OTHER_TEST} - Success")
+    ELSE ("${OTHER_TEST}" EQUAL 0)
+      MESSAGE (STATUS "Performing CXX Test ${OTHER_TEST} - Failed")
+      SET (${OTHER_TEST} "" CACHE INTERNAL "CXX test ${FUNCTION}")
       FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
-          "Performing Other Test ${OTHER_TEST} failed with the following output:\n"
+          "Performing CXX Test ${OTHER_TEST} failed with the following output:\n"
           "${OUTPUT}\n"
       )
-    ENDIF (${OTHER_TEST})
-  ENDIF ("H5_${OTHER_TEST}" MATCHES "^H5_${OTHER_TEST}$")
-ENDMACRO (HDF5_FUNCTION_TEST)
+    ENDIF ("${OTHER_TEST}" EQUAL 0)
+  ENDIF ("${OTHER_TEST}" MATCHES "^${OTHER_TEST}$")
+ENDMACRO (HDF5_CXX_FUNCTION_TEST)
 
 #-----------------------------------------------------------------------------
-# Check a bunch of other functions
+# Check a bunch of cxx functions
 #-----------------------------------------------------------------------------
-IF (NOT WINDOWS)
+IF (CMAKE_CXX_COMPILER_LOADED)
   FOREACH (test
-      TIME_WITH_SYS_TIME
-      STDC_HEADERS
-      HAVE_TM_ZONE
-      HAVE_STRUCT_TM_TM_ZONE
-      HAVE_ATTRIBUTE
-      HAVE_FUNCTION
-      HAVE_TM_GMTOFF
-#      HAVE_TIMEZONE
-      HAVE_STRUCT_TIMEZONE
-      HAVE_STAT_ST_BLOCKS
-      HAVE_FUNCTION
-      SYSTEM_SCOPE_THREADS
-      HAVE_SOCKLEN_T
-      DEV_T_IS_SCALAR
-      HAVE_OFF64_T
-      GETTIMEOFDAY_GIVES_TZ
-      VSNPRINTF_WORKS
-      HAVE_C99_FUNC
-      HAVE_C99_DESIGNATED_INITIALIZER
-      CXX_HAVE_OFFSETOF
-      LONE_COLON
+      OLD_HEADER_FILENAME
+      H5_NO_NAMESPACE
+      H5_NO_STD
+      BOOL_NOTDEFINED
+      NO_STATIC_CAST
   )
-    HDF5_FUNCTION_TEST (${test})
+    HDF5_CXX_FUNCTION_TEST (${test})
   ENDFOREACH (test)
-  IF (NOT CYGWIN AND NOT MINGW)
-      HDF5_FUNCTION_TEST (HAVE_TIMEZONE)
-#      HDF5_FUNCTION_TEST (HAVE_STAT_ST_BLOCKS)
-  ENDIF (NOT CYGWIN AND NOT MINGW)
+ENDIF (CMAKE_CXX_COMPILER_LOADED)
+
+#-----------------------------------------------------------------------------
+#  Check if Direct I/O driver works
+#-----------------------------------------------------------------------------
+IF (NOT WINDOWS)
+  OPTION (HDF5_ENABLE_DIRECT_VFD "Build the Direct I/O Virtual File Driver" ON)
+  IF (HDF5_ENABLE_DIRECT_VFD)
+    SET (msg "Performing TEST_DIRECT_VFD_WORKS")
+    SET (MACRO_CHECK_FUNCTION_DEFINITIONS "-DTEST_DIRECT_VFD_WORKS -D_GNU_SOURCE ${CMAKE_REQUIRED_FLAGS}")
+    TRY_RUN (TEST_DIRECT_VFD_WORKS_RUN   TEST_DIRECT_VFD_WORKS_COMPILE
+        ${HDF5_BINARY_DIR}/CMake
+        ${HDF5_RESOURCES_DIR}/HDF5Tests.c
+        CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+        OUTPUT_VARIABLE OUTPUT
+    )
+    IF (TEST_DIRECT_VFD_WORKS_COMPILE)
+      IF (TEST_DIRECT_VFD_WORKS_RUN  MATCHES 0)
+        HDF5_FUNCTION_TEST (HAVE_DIRECT)
+        SET (CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE")
+        ADD_DEFINITIONS ("-D_GNU_SOURCE")
+      ELSE (TEST_DIRECT_VFD_WORKS_RUN  MATCHES 0)
+        SET (TEST_DIRECT_VFD_WORKS "" CACHE INTERNAL ${msg})
+        MESSAGE (STATUS "${msg}... no")
+        FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+              "Test TEST_DIRECT_VFD_WORKS Run failed with the following output and exit code:\n ${OUTPUT}\n"
+        )
+      ENDIF (TEST_DIRECT_VFD_WORKS_RUN  MATCHES 0)
+    ELSE (TEST_DIRECT_VFD_WORKS_COMPILE )
+      SET (TEST_DIRECT_VFD_WORKS "" CACHE INTERNAL ${msg})
+      MESSAGE (STATUS "${msg}... no")
+      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+          "Test TEST_DIRECT_VFD_WORKS Compile failed with the following output:\n ${OUTPUT}\n"
+      )
+    ENDIF (TEST_DIRECT_VFD_WORKS_COMPILE)
+  ENDIF (HDF5_ENABLE_DIRECT_VFD)
 ENDIF (NOT WINDOWS)
 
 #-----------------------------------------------------------------------------
+#  Check for the Stream VFD driver
+#-----------------------------------------------------------------------------
+IF (HDF5_STREAM_VFD)
+  CHECK_INCLUDE_FILE_CONCAT ("netdb.h"       H5_HAVE_NETDB_H)
+  CHECK_INCLUDE_FILE_CONCAT ("netinet/tcp.h" H5_HAVE_NETINET_TCP_H)
+  CHECK_INCLUDE_FILE_CONCAT ("sys/filio.h"   H5_HAVE_SYS_FILIO_H)
+  SET (H5_HAVE_STREAM 1)
+ENDIF (HDF5_STREAM_VFD)
+
+#-----------------------------------------------------------------------------
 # Check if InitOnceExecuteOnce is available
 #-----------------------------------------------------------------------------
 IF (WINDOWS)
@@ -682,7 +862,6 @@ IF (WINDOWS)
   ENDIF("${H5_HAVE_IOEO}" MATCHES "^${H5_HAVE_IOEO}$")
   ENDIF (NOT HDF5_NO_IOEO_TEST)
 ENDIF (WINDOWS)
-  
 
 #-----------------------------------------------------------------------------
 # Option to see if GPFS is available on this filesystem --enable-gpfs
@@ -697,13 +876,6 @@ ENDIF (HDF5_ENABLE_GPFS)
 MARK_AS_ADVANCED (HDF5_ENABLE_GPFS)
 
 #-----------------------------------------------------------------------------
-# Look for 64 bit file stream capability
-#-----------------------------------------------------------------------------
-IF (HAVE_OFF64_T)
-  CHECK_FUNCTION_EXISTS (lseek64           H5_HAVE_LSEEK64)
-ENDIF (HAVE_OFF64_T)
-
-#-----------------------------------------------------------------------------
 # Determine how 'inline' is used
 #-----------------------------------------------------------------------------
 SET (HDF5_EXTRA_TEST_DEFINITIONS INLINE_TEST_INLINE)
@@ -934,6 +1106,31 @@ H5ConversionTests (H5_ULLONG_TO_LDOUBLE_PRECISION "Checking IF converting unsign
 #
 H5ConversionTests (H5_FP_TO_INTEGER_OVERFLOW_WORKS  "Checking IF overflows normally converting floating-point to integer values")
 # ----------------------------------------------------------------------
+# Set the flag to indicate that the machine is using a special algorithm to convert
+# 'long double' to '(unsigned) long' values.  (This flag should only be set for 
+# the IBM Power6 Linux.  When the bit sequence of long double is 
+# 0x4351ccf385ebc8a0bfcc2a3c3d855620, the converted value of (unsigned)long 
+# is 0x004733ce17af227f, not the same as the library's conversion to 0x004733ce17af2282.
+# The machine's conversion gets the correct value.  We define the macro and disable
+# this kind of test until we figure out what algorithm they use.
+#
+IF (H5_LDOUBLE_TO_LONG_SPECIAL MATCHES ^H5_LDOUBLE_TO_LONG_SPECIAL$)
+  SET (H5_LDOUBLE_TO_LONG_SPECIAL 0 CACHE INTERNAL "Define if your system converts long double to (unsigned) long values with special algorithm")
+  MESSAGE (STATUS "Checking IF your system converts long double to (unsigned) long values with special algorithm... no")
+ENDIF (H5_LDOUBLE_TO_LONG_SPECIAL MATCHES ^H5_LDOUBLE_TO_LONG_SPECIAL$)
+# ----------------------------------------------------------------------
+# Set the flag to indicate that the machine is using a special algorithm
+# to convert some values of '(unsigned) long' to 'long double' values.  
+# (This flag should be off for all machines, except for IBM Power6 Linux, 
+# when the bit sequences are 003fff..., 007fff..., 00ffff..., 01ffff..., 
+# ..., 7fffff..., the compiler uses a unknown algorithm.  We define a 
+# macro and skip the test for now until we know about the algorithm.
+#
+IF (H5_LONG_TO_LDOUBLE_SPECIAL MATCHES ^H5_LONG_TO_LDOUBLE_SPECIAL$)
+  SET (H5_LONG_TO_LDOUBLE_SPECIAL 0 CACHE INTERNAL "Define if your system can convert (unsigned) long to long double values with special algorithm")
+  MESSAGE (STATUS "Checking IF your system can convert (unsigned) long to long double values with special algorithm... no")
+ENDIF (H5_LONG_TO_LDOUBLE_SPECIAL MATCHES ^H5_LONG_TO_LDOUBLE_SPECIAL$)
+# ----------------------------------------------------------------------
 # Set the flag to indicate that the machine can accurately convert
 # 'long double' to '(unsigned) long long' values.  (This flag should be set for
 # all machines, except for Mac OS 10.4 and SGI IRIX64 6.5.  When the bit sequence
@@ -951,10 +1148,23 @@ H5ConversionTests (H5_LDOUBLE_TO_LLONG_ACCURATE "Checking IF correctly convertin
 # as big as they should be.
 #
 H5ConversionTests (H5_LLONG_TO_LDOUBLE_CORRECT "Checking IF correctly converting (unsigned) long long to long double values")
+# ----------------------------------------------------------------------
+# Set the flag to indicate that the machine generates bad code
+# for the H5V_log2_gen() routine in src/H5Vprivate.h
+# (This flag should be set to no for all machines, except for SGI IRIX64,
+# where the cache value is set to yes in it's config file)
+#
+IF (H5_BAD_LOG2_CODE_GENERATED MATCHES ^H5_BAD_LOG2_CODE_GENERATED$)
+  SET (H5_BAD_LOG2_CODE_GENERATED 0 CACHE INTERNAL "Define if your system generates wrong code for log2 routine")
+  MESSAGE (STATUS "Checking IF your system generates wrong code for log2 routine... no")
+ENDIF (H5_BAD_LOG2_CODE_GENERATED MATCHES ^H5_BAD_LOG2_CODE_GENERATED$)
+# ----------------------------------------------------------------------
+# Check if pointer alignments are enforced
+#
 H5ConversionTests (H5_NO_ALIGNMENT_RESTRICTIONS "Checking IF alignment restrictions are strictly enforced")
 
 # Define a macro for Cygwin (on XP only) where the compiler has rounding
 #   problem converting from unsigned long long to long double */
 IF (CYGWIN)
   SET (H5_CYGWIN_ULLONG_TO_LDOUBLE_ROUND_PROBLEM 1)
-ENDIF (CYGWIN)
\ No newline at end of file
+ENDIF (CYGWIN)
diff --git a/config/cmake/FindHDF5.cmake b/config/cmake/FindHDF5.cmake
deleted file mode 100644
index 33532b0..0000000
--- a/config/cmake/FindHDF5.cmake
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-# To be used by projects that make use of Cmakeified hdf5-1.8
-#
-
-#
-# Find the HDF5 includes and get all installed hdf5 library settings from
-# HDF5-config.cmake file : Requires a CMake compatible hdf5-1.8.5 or later 
-# for this feature to work. The following vars are set if hdf5 is found.
-#
-# HDF5_FOUND               - True if found, otherwise all other vars are undefined
-# HDF5_INCLUDE_DIR         - The include dir for main *.h files
-# HDF5_FORTRAN_INCLUDE_DIR - The include dir for fortran modules and headers
-# HDF5_VERSION_STRING      - full version (e.g. 1.8.5)
-# HDF5_VERSION_MAJOR       - major part of version (e.g. 1.8)
-# HDF5_VERSION_MINOR       - minor part (e.g. 5)
-# 
-# The following boolean vars will be defined
-# HDF5_ENABLE_PARALLEL  - 1 if HDF5 parallel supported
-# HDF5_BUILD_FORTRAN    - 1 if HDF5 was compiled with fortran on
-# HDF5_BUILD_CPP_LIB    - 1 if HDF5 was compiled with cpp on
-# HDF5_BUILD_TOOLS      - 1 if HDF5 was compiled with tools on
-# HDF5_BUILD_HL_LIB     - 1 if HDF5 was compiled with high level on
-# HDF5_BUILD_HL_CPP_LIB - 1 if HDF5 was compiled with high level and cpp on
-# 
-# Target names that are valid (depending on enabled options)
-# will be the following
-#
-# hdf5              : HDF5 C library
-# hdf5_tools        : the tools library
-# hdf5_f90cstub     : used by Fortran to C interface
-# hdf5_fortran      : Fortran HDF5 library
-# hdf5_cpp          : HDF5 cpp interface library
-# hdf5_hl           : High Level library
-# hdf5_hl_f90cstub  : used by Fortran to C interface to High Level library
-# hdf5_hl_fortran   : Fortran High Level library
-# hdf5_hl_cpp       : High Level cpp interface library
-# 
-# To aid in finding HDF5 as part of a subproject set
-# HDF5_ROOT_DIR_HINT to the location where hdf5-config.cmake lies
-
-INCLUDE (SelectLibraryConfigurations)
-INCLUDE (FindPackageHandleStandardArgs)
-
-# The HINTS option should only be used for values computed from the system.
-SET (_HDF5_HINTS
-    $ENV{HOME}/.local
-    $ENV{HDF5_ROOT}
-    $ENV{HDF5_ROOT_DIR_HINT}
-)
-# Hard-coded guesses should still go in PATHS. This ensures that the user
-# environment can always override hard guesses.
-SET (_HDF5_PATHS
-    $ENV{HOME}/.local
-    $ENV{HDF5_ROOT}
-    $ENV{HDF5_ROOT_DIR_HINT}
-    /usr/lib/hdf5
-    /usr/share/hdf5
-    /usr/local/hdf5
-    /usr/local/hdf5/share
-)
-
-FIND_PATH (HDF5_ROOT_DIR "hdf5-config.cmake"
-    HINTS ${_HDF5_HINTS}
-    PATHS ${_HDF5_PATHS}
-    PATH_SUFFIXES
-        lib/cmake/hdf5
-        share/cmake/hdf5
-)
-
-FIND_PATH (HDF5_INCLUDE_DIRS "H5public.h"
-    HINTS ${_HDF5_HINTS}
-    PATHS ${_HDF5_PATHS}
-    PATH_SUFFIXES
-        include
-        Include
-)
-
-# For backwards compatibility we set HDF5_INCLUDE_DIR to the value of
-# HDF5_INCLUDE_DIRS
-SET ( HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIRS}" )
-
-IF (HDF5_INCLUDE_DIR)
-  SET (HDF5_FOUND "YES")
-  INCLUDE (${HDF5_ROOT_DIR}/hdf5-config.cmake)
-ENDIF (HDF5_INCLUDE_DIR)
diff --git a/config/cmake/FindHDF5.cmake.in b/config/cmake/FindHDF5.cmake.in
new file mode 100644
index 0000000..1b51ed4
--- /dev/null
+++ b/config/cmake/FindHDF5.cmake.in
@@ -0,0 +1,86 @@
+#
+# To be used by projects that make use of Cmakeified hdf5- at HDF5_PACKAGE_VERSION@
+#
+
+#
+# Find the HDF5 includes and get all installed hdf5 library settings from
+# HDF5-config.cmake file : Requires a CMake compatible hdf5-1.8.5 or later 
+# for this feature to work. The following vars are set if hdf5 is found.
+#
+# HDF5_FOUND               - True if found, otherwise all other vars are undefined
+# HDF5_INCLUDE_DIR         - The include dir for main *.h files
+# HDF5_FORTRAN_INCLUDE_DIR - The include dir for fortran modules and headers
+# HDF5_VERSION_STRING      - full version (e.g. @HDF5_PACKAGE_VERSION@)
+# HDF5_VERSION_MAJOR       - major part of version (e.g. @HDF5_PACKAGE_VERSION_MAJOR@)
+# HDF5_VERSION_MINOR       - minor part (e.g. @HDF5_PACKAGE_VERSION_MINOR@)
+# 
+# The following boolean vars will be defined
+# HDF5_ENABLE_PARALLEL  - 1 if HDF5 parallel supported
+# HDF5_BUILD_FORTRAN    - 1 if HDF5 was compiled with fortran on
+# HDF5_BUILD_CPP_LIB    - 1 if HDF5 was compiled with cpp on
+# HDF5_BUILD_TOOLS      - 1 if HDF5 was compiled with tools on
+# HDF5_BUILD_HL_LIB     - 1 if HDF5 was compiled with high level on
+# HDF5_BUILD_HL_CPP_LIB - 1 if HDF5 was compiled with high level and cpp on
+# 
+# Target names that are valid (depending on enabled options)
+# will be the following
+#
+# hdf5              : HDF5 C library
+# hdf5_tools        : the tools library
+# hdf5_f90cstub     : used by Fortran to C interface
+# hdf5_fortran      : Fortran HDF5 library
+# hdf5_cpp          : HDF5 cpp interface library
+# hdf5_hl           : High Level library
+# hdf5_hl_f90cstub  : used by Fortran to C interface to High Level library
+# hdf5_hl_fortran   : Fortran High Level library
+# hdf5_hl_cpp       : High Level cpp interface library
+# 
+# To aid in finding HDF5 as part of a subproject set
+# HDF5_ROOT_DIR_HINT to the location where @HDF5_PACKAGE@@HDF_PACKAGE_EXT at -config.cmake lies
+
+INCLUDE (SelectLibraryConfigurations)
+INCLUDE (FindPackageHandleStandardArgs)
+
+# The HINTS option should only be used for values computed from the system.
+SET (_HDF5_HINTS
+    $ENV{HOME}/.local
+    $ENV{HDF5_ROOT}
+    $ENV{HDF5_ROOT_DIR_HINT}
+)
+# Hard-coded guesses should still go in PATHS. This ensures that the user
+# environment can always override hard guesses.
+SET (_HDF5_PATHS
+    $ENV{HOME}/.local
+    $ENV{HDF5_ROOT}
+    $ENV{HDF5_ROOT_DIR_HINT}
+    /usr/lib/@HDF5_PACKAGE@
+    /usr/share/@HDF5_PACKAGE@
+    /usr/local/@HDF5_PACKAGE@
+    /usr/local/@HDF5_PACKAGE@/share
+)
+
+FIND_PATH (HDF5_ROOT_DIR "@HDF5_PACKAGE@@HDF_PACKAGE_EXT at -config.cmake"
+    HINTS ${_HDF5_HINTS}
+    PATHS ${_HDF5_PATHS}
+    PATH_SUFFIXES
+        cmake/@HDF5_PACKAGE@
+        lib/cmake/@HDF5_PACKAGE@
+        share/cmake/@HDF5_PACKAGE@
+)
+
+FIND_PATH (HDF5_INCLUDE_DIRS "H5public.h"
+    HINTS ${_HDF5_HINTS}
+    PATHS ${_HDF5_PATHS}
+    PATH_SUFFIXES
+        include
+        Include
+)
+
+# For backwards compatibility we set HDF5_INCLUDE_DIR to the value of
+# HDF5_INCLUDE_DIRS
+SET ( HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIRS}" )
+
+IF (HDF5_INCLUDE_DIR)
+  SET (HDF5_FOUND "YES")
+  INCLUDE (${HDF5_ROOT_DIR}/@HDF5_PACKAGE@@HDF_PACKAGE_EXT at -config.cmake)
+ENDIF (HDF5_INCLUDE_DIR)
diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in
index a87efd1..4745696 100644
--- a/config/cmake/H5pubconf.h.in
+++ b/config/cmake/H5pubconf.h.in
@@ -15,24 +15,6 @@
 /* Define if using a Windows compiler (i.e. Visual Studio) */
 #cmakedefine H5_HAVE_VISUAL_STUDIO @H5_HAVE_VISUAL_STUDIO@
 
-/* Defined if HDF5 was built with CMake AND build as a shared library */
-#cmakedefine H5_BUILT_AS_DYNAMIC_LIB @H5_BUILT_AS_DYNAMIC_LIB@
-
-/* Defined if HDF5 was built with CMake AND build as a static library */
-#cmakedefine H5_BUILT_AS_STATIC_LIB @H5_BUILT_AS_STATIC_LIB@
-
-/* Defined if HDF5 CPP  was built with CMake AND build as a shared library  */
-#cmakedefine H5_CPP_BUILT_AS_DYNAMIC_LIB @H5_CPP_BUILT_AS_DYNAMIC_LIB@
-
-/* Defined if HDF5 CPP  was built with CMake AND build as a static library  */
-#cmakedefine H5_CPP_BUILT_AS_STATIC_LIB @H5_CPP_BUILT_AS_STATIC_LIB@
-
-/* Defined if HDF5 HL was built with CMake AND build as a shared library */
-#cmakedefine H5_HL_BUILT_AS_DYNAMIC_LIB @H5_HL_BUILT_AS_DYNAMIC_LIB@
-
-/* Defined if HDF5 HL was built with CMake AND build as a static library */
-#cmakedefine H5_HL_BUILT_AS_STATIC_LIB @H5_HL_BUILT_AS_STATIC_LIB@
-
 /* Define if building universal (internal helper macro) */
 #cmakedefine H5_AC_APPLE_UNIVERSAL_BUILD @H5_AC_APPLE_UNIVERSAL_BUILD@
 
@@ -105,6 +87,9 @@
 /* Define if the compiler understands the __func__ keyword */
 #cmakedefine H5_HAVE_C99_FUNC @H5_HAVE_C99_FUNC@
 
+/* Define to 1 if you have the `clock_gettime' function. */
+#cmakedefine H5_HAVE_CLOCK_GETTIME @H5_HAVE_CLOCK_GETTIME@
+
 /* Define if the function stack tracing code is to be compiled in */
 #cmakedefine H5_HAVE_CODESTACK @H5_HAVE_CODESTACK@
 
@@ -257,6 +242,9 @@
 /* Define to 1 if you have the `sz' library (-lsz). */
 #cmakedefine H5_HAVE_LIBSZ @H5_HAVE_LIBSZ@
 
+/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
+#cmakedefine H5_HAVE_LIBWS2_32 @H5_HAVE_LIBWS2_32@
+
 /* Define to 1 if you have the `z' library (-lz). */
 #cmakedefine H5_HAVE_LIBZ @H5_HAVE_LIBZ@
 
@@ -458,7 +446,7 @@
 #cmakedefine H5_HAVE_WINDOW_PATH @H5_HAVE_WINDOW_PATH@
 
 /* Define to 1 if you have the <winsock.h> header file. */
-#cmakedefine H5_HAVE_WINSOCK_H @H5_HAVE_WINSOCK_H@
+#cmakedefine H5_HAVE_WINSOCK2_H @H5_HAVE_WINSOCK2_H@
 
 /* Define to 1 if you have the <zlib.h> header file. */
 #cmakedefine H5_HAVE_ZLIB_H @H5_HAVE_ZLIB_H@
diff --git a/config/cmake/HDF5CXXTests.cpp b/config/cmake/HDF5CXXTests.cpp
new file mode 100644
index 0000000..7003cc8
--- /dev/null
+++ b/config/cmake/HDF5CXXTests.cpp
@@ -0,0 +1,56 @@
+
+#ifdef OLD_HEADER_FILENAME
+
+#include <iostream>
+
+int main(void) { return 0; }
+
+#endif
+
+
+#ifdef H5_NO_NAMESPACE
+
+namespace H5 {
+int fnord;
+}
+
+int main(void) {
+   using namespace H5;
+   fnord = 37;
+   return 0;
+}
+
+#endif
+
+#ifdef H5_NO_STD
+
+#include <string>
+
+using namespace std;
+
+int main(void) {
+   string myString("testing namespace std");
+   return 0;
+}
+
+#endif
+
+#ifdef BOOL_NOTDEFINED
+int main(void) {
+   bool flag;
+   return 0;
+}
+
+#endif
+
+#ifdef NO_STATIC_CAST
+
+int main(void) {
+   float test_float;
+   int test_int;
+   test_float = 37.0;
+   test_int = static_cast <int> (test_float);
+   return 0;
+}
+
+#endif
diff --git a/config/cmake/HDF5Tests.c b/config/cmake/HDF5Tests.c
index 4887454..2f69ec8 100644
--- a/config/cmake/HDF5Tests.c
+++ b/config/cmake/HDF5Tests.c
@@ -1,38 +1,5 @@
 #define SIMPLE_TEST(x) int main(){ x; return 0; }
 
-#ifdef CXX_HAVE_OFFSETOF
-  #include <stdio.h>
-#include <stddef.h>
-
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-extern "C"
-#  endif
-int FC_DUMMY_MAIN()
-{ return 1;}
-#endif
-#endif
-int
-main ()
-{
-
-  struct index_st
-  {
-    unsigned char type;
-    unsigned char num;
-    unsigned int len;
-  };
-  typedef struct index_st index_t;
-  int x,y;
-  x = offsetof(struct index_st, len);
-  y = offsetof(index_t, num)
-
-  ;
-  return 0;
-}
-#endif
-
 #ifdef HAVE_C99_DESIGNATED_INITIALIZER
 
 #ifdef FC_DUMMY_MAIN
@@ -106,7 +73,7 @@ int test_vsnprintf(const char *fmt,...)
 
 int main(void)
 {
-    exit(test_vsnprintf("%s","A string that is longer than 16 characters"));
+    return(test_vsnprintf("%s","A string that is longer than 16 characters"));
 }
 #endif
 
@@ -215,6 +182,16 @@ SIMPLE_TEST(struct tm tm; tm.tm_gmtoff=0);
 
 #endif /* HAVE_TM_GMTOFF */
 
+#ifdef HAVE___TM_GMTOFF
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <time.h>
+SIMPLE_TEST(struct tm tm; tm.__tm_gmtoff=0);
+
+#endif /* HAVE_TM_GMTOFF */
+
 #ifdef HAVE_TIMEZONE
 
 #ifdef HAVE_SYS_TIME_H
@@ -269,10 +246,10 @@ int main(void)
     if (strcmp(s, "1099511627776") == 0)
       {
       printf("PRINTF_LL_WIDTH=[%s]\n", *currentArg);
-      exit(0);
+      return 0;
       }
     }
-  exit(1);
+  return 1;
 }
 
 #endif /* PRINTF_LL_WIDTH */
@@ -288,7 +265,9 @@ int main(void)
 
     pthread_attr_init(&attribute);
     ret=pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
-    exit(ret==0 ? 0 : 1);
+    if (ret==0)
+        return 0;
+    return 1;
 }
 
 #endif /* SYSTEM_SCOPE_THREADS */
@@ -336,6 +315,35 @@ int main()
 }
 #endif
 
+#ifdef HAVE_STAT64_STRUCT
+#include <sys/types.h>
+#include <sys/stat.h>],
+struct stat64 sb;
+int main()
+{
+  return 0;
+}
+#endif
+
+#ifdef TEST_DIRECT_VFD_WORKS
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+int main(void)
+{
+   int fid;
+   if((fid=open("tst_file", O_CREAT | O_TRUNC | O_DIRECT, 0755))<0)
+       return 1;
+   close(fid);
+   remove("tst_file");
+   return 0;
+}
+#endif
+
+#ifdef HAVE_DIRECT
+       SIMPLE_TEST(posix_memalign());
+#endif
+
 #ifdef TEST_LFS_WORKS
 /* Return 0 when LFS is available and 1 otherwise.  */
 #define _LARGEFILE_SOURCE
@@ -354,7 +362,7 @@ int main(int argc, char **argv)
   if (OFF_T_64 % 2147483647 != 1)
     return 1;
 
-  // stat breaks on SCO OpenServer
+  /* stat breaks on SCO OpenServer */
   struct stat buf;
   stat( argv[0], &buf );
   if (!S_ISREG(buf.st_mode))
@@ -382,8 +390,8 @@ int main(void)
  gettimeofday(&tv, &tz);
     /* Check whether the function returned any value at all */
  if(tz.tz_minuteswest == 7777 && tz.tz_dsttime == 7)
-    exit(1);
- else exit (0);
+     return 1;
+ else return 0;
 }
 #endif
 
@@ -394,6 +402,41 @@ int main(int argc, char * argv)
 }
 #endif
 
+#ifdef CXX_HAVE_OFFSETOF
+
+#include <stdio.h>
+#include <stddef.h>
+
+#ifdef FC_DUMMY_MAIN
+#ifndef FC_DUMMY_MAIN_EQ_F77
+#  ifdef __cplusplus
+extern "C"
+#  endif
+int FC_DUMMY_MAIN()
+{ return 1;}
+#endif
+#endif
+int
+main ()
+{
+
+  struct index_st
+  {
+    unsigned char type;
+    unsigned char num;
+    unsigned int len;
+  };
+  typedef struct index_st index_t;
+  int x,y;
+  x = offsetof(struct index_st, len);
+  y = offsetof(index_t, num)
+
+  ;
+  return 0;
+}
+
+#endif
+
 #ifdef HAVE_GPFS
 
 #include <gpfs.h>
@@ -411,18 +454,30 @@ int main ()
 typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
 int main ()
 {
-  PGNSI pGNSI;
-  pGNSI = (PGNSI) GetProcAddress(
+	PGNSI pGNSI;
+	pGNSI = (PGNSI) GetProcAddress(
       GetModuleHandle(TEXT("kernel32.dll")), 
       "InitOnceExecuteOnce");
-  if(NULL == pGNSI)
-    return 1;
-  else
-    return 0;
+	if(NULL == pGNSI)
+		return 1;
+	else
+		return 0;
 }
 
 #endif /* HAVE_IOEO */
 
+#ifdef HAVE_STRUCT_VIDEOCONFIG
+
+SIMPLE_TEST(struct videoconfig w; w.numtextcols=0);
+
+#endif /* HAVE_TM_GMTOFF */
+
+#ifdef HAVE_STRUCT_TEXT_INFO
+
+SIMPLE_TEST(struct text_info w; w.screenwidth=0);
+
+#endif /* HAVE_TM_GMTOFF */
+
 
 #if defined( INLINE_TEST_inline ) || defined( INLINE_TEST___inline__ ) || defined( INLINE_TEST___inline )
 #ifndef __cplusplus
diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake
index c1c5acb..323c9ef 100644
--- a/config/cmake/HDF5UseFortran.cmake
+++ b/config/cmake/HDF5UseFortran.cmake
@@ -114,6 +114,11 @@ CHECK_FORTRAN_FEATURE(iso_c_binding
   "
        PROGRAM main
             USE iso_c_binding
+            IMPLICIT NONE
+            TYPE(C_PTR) :: ptr
+            TYPE(C_FUNPTR) :: funptr
+            CHARACTER(LEN=80, KIND=c_char), TARGET :: ichr
+            ptr = C_LOC(ichr(1:1))
        END PROGRAM
   "
   FORTRAN_HAVE_ISO_C_BINDING
diff --git a/config/cmake/HDFLibMacros.cmake b/config/cmake/HDFLibMacros.cmake
index b9c1fbb..57e6be7 100644
--- a/config/cmake/HDFLibMacros.cmake
+++ b/config/cmake/HDFLibMacros.cmake
@@ -10,6 +10,7 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
         INSTALL_COMMAND ""
         CMAKE_ARGS
             -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+            -DHDF_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT}
             -DJPEG_EXTERNALLY_CONFIGURED:BOOL=OFF
             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
             -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
@@ -25,6 +26,7 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
         INSTALL_COMMAND ""
         CMAKE_ARGS
             -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+            -DHDF_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT}
             -DJPEG_EXTERNALLY_CONFIGURED:BOOL=OFF
             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
             -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
@@ -59,8 +61,8 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
         )
       ELSE (MINGW)
         SET_TARGET_PROPERTIES(jpeg PROPERTIES
-            IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
-            IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
+            IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
+            IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
       ENDIF (MINGW)
     ELSE (WIN32)
@@ -80,7 +82,7 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
   ELSE (${libtype} MATCHES "SHARED")
     IF (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(jpeg PROPERTIES
-          IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/lib${JPEG_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
+          IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/lib${JPEG_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
       )
     ELSE (WIN32 AND NOT MINGW)
@@ -122,6 +124,7 @@ MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
         INSTALL_COMMAND ""
         CMAKE_ARGS
             -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+            -DHDF_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT}
             -DSZIP_EXTERNALLY_CONFIGURED:BOOL=OFF
             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
             -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
@@ -138,6 +141,7 @@ MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
         INSTALL_COMMAND ""
         CMAKE_ARGS
             -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+            -DHDF_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT}
             -DSZIP_EXTERNALLY_CONFIGURED:BOOL=OFF
             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
             -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
@@ -173,8 +177,8 @@ MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
         )
       ELSE (MINGW)
         SET_TARGET_PROPERTIES(szip PROPERTIES
-            IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
-            IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
+            IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
+            IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
       ENDIF (MINGW)
     ELSE (WIN32)
@@ -194,7 +198,7 @@ MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
   ELSE (${libtype} MATCHES "SHARED")
     IF (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(szip PROPERTIES
-          IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/lib${SZIP_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
+          IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/lib${SZIP_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
       )
     ELSE (WIN32 AND NOT MINGW)
@@ -236,6 +240,7 @@ MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
         INSTALL_COMMAND ""
         CMAKE_ARGS
             -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+            -DHDF_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT}
             -DZLIB_EXTERNALLY_CONFIGURED:BOOL=OFF
             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
             -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
@@ -251,6 +256,7 @@ MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
         INSTALL_COMMAND ""
         CMAKE_ARGS
             -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+            -DHDF_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT}
             -DZLIB_EXTERNALLY_CONFIGURED:BOOL=OFF
             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
             -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
@@ -289,8 +295,8 @@ MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
         )
       ELSE (MINGW)
         SET_TARGET_PROPERTIES(zlib PROPERTIES
-            IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
-            IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
+            IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
+            IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
       ENDIF (MINGW)
     ELSE (WIN32)
@@ -310,7 +316,7 @@ MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
   ELSE (${libtype} MATCHES "SHARED")
     IF (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(zlib PROPERTIES
-          IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${BLDTYPE}/lib${ZLIB_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
+          IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/lib${ZLIB_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
       )
     ELSE (WIN32 AND NOT MINGW)
diff --git a/config/cmake/HDFMacros.cmake b/config/cmake/HDFMacros.cmake
index b90d718..499c227 100644
--- a/config/cmake/HDFMacros.cmake
+++ b/config/cmake/HDFMacros.cmake
@@ -34,20 +34,51 @@ MACRO (IDE_SOURCE_PROPERTIES SOURCE_PATH HEADERS SOURCES)
 ENDMACRO (IDE_SOURCE_PROPERTIES)
 
 #-------------------------------------------------------------------------------
-MACRO (TARGET_NAMING target libtype)
+MACRO (TARGET_NAMING libtarget libtype)
   IF (WIN32)
     IF (${libtype} MATCHES "SHARED")
       IF (HDF_LEGACY_NAMING)
-        SET_TARGET_PROPERTIES (${target} PROPERTIES OUTPUT_NAME "dll")
-        SET_TARGET_PROPERTIES (${target} PROPERTIES PREFIX "${target}")
+        SET_TARGET_PROPERTIES (${libtarget} PROPERTIES OUTPUT_NAME "dll")
+        SET_TARGET_PROPERTIES (${libtarget} PROPERTIES PREFIX "${libtarget}")
       ELSE (HDF_LEGACY_NAMING)
-        SET_TARGET_PROPERTIES (${target} PROPERTIES OUTPUT_NAME "${target}dll")
+        SET_TARGET_PROPERTIES (${libtarget} PROPERTIES OUTPUT_NAME "${libtarget}dll")
       ENDIF (HDF_LEGACY_NAMING)
     ENDIF (${libtype} MATCHES "SHARED")
   ENDIF (WIN32)
 ENDMACRO (TARGET_NAMING)
 
 #-------------------------------------------------------------------------------
+MACRO (INSTALL_TARGET_PDB libtarget targetdestination targetcomponent)
+  IF (WIN32 AND MSVC)
+    GET_TARGET_PROPERTY (target_name ${libtarget} RELWITHDEBINFO_OUTPUT_NAME)
+    INSTALL (
+      FILES
+          ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${CMAKE_IMPORT_LIBRARY_PREFIX}${target_name}.pdb
+      DESTINATION
+          ${targetdestination}
+      CONFIGURATIONS RelWithDebInfo
+      COMPONENT ${targetcomponent}
+  )
+  ENDIF (WIN32 AND MSVC)
+ENDMACRO (INSTALL_TARGET_PDB)
+
+#-------------------------------------------------------------------------------
+MACRO (INSTALL_PROGRAM_PDB progtarget targetdestination targetcomponent)
+  IF (WIN32 AND MSVC)
+    GET_TARGET_PROPERTY (target_name ${progtarget} RELWITHDEBINFO_OUTPUT_NAME)
+    GET_TARGET_PROPERTY (target_prefix ${progtarget} PREFIX)
+    INSTALL (
+      FILES
+          ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${target_prefix}${target_name}.pdb
+      DESTINATION
+          ${targetdestination}
+      CONFIGURATIONS RelWithDebInfo
+      COMPONENT ${targetcomponent}
+  )
+  ENDIF (WIN32 AND MSVC)
+ENDMACRO (INSTALL_PROGRAM_PDB)
+
+#-------------------------------------------------------------------------------
 MACRO (HDF_SET_LIB_OPTIONS libtarget libname libtype)
   # message (STATUS "${libname} libtype: ${libtype}")
   IF (${libtype} MATCHES "SHARED")
@@ -105,16 +136,16 @@ MACRO (HDF_SET_LIB_OPTIONS libtarget libname libtype)
 ENDMACRO (HDF_SET_LIB_OPTIONS)
 
 #-------------------------------------------------------------------------------
-MACRO (TARGET_FORTRAN_WIN_PROPERTIES target addlinkflags)
+MACRO (TARGET_FORTRAN_WIN_PROPERTIES forttarget addlinkflags)
   IF (WIN32 AND MSVC)
     IF (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${target}
+      SET_TARGET_PROPERTIES (${forttarget}
           PROPERTIES
               COMPILE_FLAGS "/dll"
               LINK_FLAGS "/SUBSYSTEM:CONSOLE ${addlinkflags}"
       ) 
     ELSE (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${target}
+      SET_TARGET_PROPERTIES (${forttarget}
           PROPERTIES
               COMPILE_FLAGS "/MD"
               LINK_FLAGS "/SUBSYSTEM:CONSOLE ${addlinkflags}"
diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake
index b49df17..312e9f3 100755
--- a/config/cmake/cacheinit.cmake
+++ b/config/cmake/cacheinit.cmake
@@ -8,6 +8,8 @@ SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE)
 
 SET (BUILD_TESTING ON CACHE BOOL "Build HDF5 Unit Testing" FORCE)
 
+SET (HDF_PACKAGE_EXT "" CACHE STRING "Name of HDF package extension" FORCE)
+
 SET (HDF5_BUILD_CPP_LIB ON CACHE BOOL "Build HDF5 C++ Library" FORCE)
 
 SET (HDF5_BUILD_EXAMPLES ON CACHE BOOL "Build HDF5 Library Examples" FORCE)
@@ -20,6 +22,8 @@ SET (HDF5_BUILD_HL_LIB ON CACHE BOOL "Build HIGH Level HDF5 Library" FORCE)
 
 SET (HDF5_BUILD_TOOLS ON CACHE BOOL "Build HDF5 Tools" FORCE)
 
+SET (HDF5_BUILD_GENERATORS OFF CACHE BOOL "Build Test Generators" FORCE)
+
 SET (HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE)
 
 SET (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
@@ -28,12 +32,18 @@ SET (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" FORCE)
 
 SET (HDF5_ENABLE_HSIZET ON CACHE BOOL "Enable datasets larger than memory" FORCE)
 
+SET (HDF5_ENABLE_UNSUPPORTED OFF CACHE BOOL "Enable unsupported combinations of configuration options" FORCE)
+
 SET (HDF5_ENABLE_DEPRECATED_SYMBOLS ON CACHE BOOL "Enable deprecated public API symbols" FORCE)
 
+SET (HDF5_ENABLE_DIRECT_VFD OFF CACHE BOOL "Build the Direct I/O Virtual File Driver" FORCE)
+
 SET (HDF5_ENABLE_PARALLEL OFF CACHE BOOL "Enable parallel build (requires MPI)" FORCE)
 
 SET (MPIEXEC_MAX_NUMPROCS "3" CACHE STRING "Minimum number of processes for HDF parallel tests" FORCE)
 
+SET (HDF5_BUILD_PARALLEL_ALL OFF CACHE BOOL "Build Parallel Programs" FORCE)
+
 SET (HDF5_ENABLE_COVERAGE OFF CACHE BOOL "Enable code coverage for Libraries and Programs" FORCE)
 
 SET (HDF5_ENABLE_USING_MEMCHECKER OFF CACHE BOOL "Indicate that a memory checker is used" FORCE)
@@ -59,3 +69,7 @@ SET (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZ
 SET (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE)
 
 SET (SZIP_TGZ_NAME "SZip.tar.gz" CACHE STRING "Use SZip from compressed file" FORCE)
+
+SET (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" FORCE)
+
+SET (SZIP_PACKAGE_NAME "szip" CACHE STRING "Name of SZIP package" FORCE)
diff --git a/config/cmake/grepTest.cmake b/config/cmake/grepTest.cmake
index 9b5148c..365d9c3 100644
--- a/config/cmake/grepTest.cmake
+++ b/config/cmake/grepTest.cmake
@@ -43,18 +43,21 @@ MESSAGE (STATUS "COMMAND Error: ${TEST_ERROR}")
 # now grep the output with the reference
 FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
 
+# TEST_REFERENCE should always be matched
+STRING(REGEX MATCH "${TEST_REFERENCE}" TEST_MATCH ${TEST_STREAM}) 
+STRING(COMPARE EQUAL "${TEST_REFERENCE}" "${TEST_MATCH}" TEST_RESULT) 
+IF (${TEST_RESULT} STREQUAL "0")
+  MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not contain ${TEST_REFERENCE}")
+ENDIF (${TEST_RESULT} STREQUAL "0")
+
 STRING(REGEX MATCH "${TEST_FILTER}" TEST_MATCH ${TEST_STREAM}) 
-IF (${TEST_EXPECT})
+IF (${TEST_EXPECT} STREQUAL "1")
+  # TEST_EXPECT (1) interperts TEST_FILTER as NOT to match
   STRING(LENGTH "${TEST_MATCH}" TEST_RESULT) 
   IF (NOT ${TEST_RESULT} STREQUAL "0")
-    MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did contain ${TEST_REFERENCE}")
+    MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did contain ${TEST_FILTER}")
   ENDIF (NOT ${TEST_RESULT} STREQUAL "0")
-ELSE (${TEST_EXPECT})
-  STRING(COMPARE EQUAL "${TEST_REFERENCE}" "${TEST_MATCH}" TEST_RESULT) 
-  IF (${TEST_RESULT} STREQUAL "0")
-    MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not contain ${TEST_REFERENCE}")
-  ENDIF (${TEST_RESULT} STREQUAL "0")
-ENDIF (${TEST_EXPECT})
+ENDIF (${TEST_EXPECT} STREQUAL "0")
 
 # everything went fine...
 MESSAGE ("Passed: The output of ${TEST_PROGRAM} matched")
diff --git a/config/cmake/hdf5-config.cmake.build.in b/config/cmake/hdf5-config.cmake.build.in
index ccf5e67..881985e 100644
--- a/config/cmake/hdf5-config.cmake.build.in
+++ b/config/cmake/hdf5-config.cmake.build.in
@@ -42,6 +42,12 @@ IF (HDF5_BUILD_TOOLS)
   SET (HDF5_INCLUDE_DIR_TOOLS ${HDF5_INCLUDE_DIR} )
 ENDIF (HDF5_BUILD_TOOLS)
 
+IF (HDF5_BUILD_SHARED_LIBS)
+  SET (H5_BUILT_AS_DYNAMIC_LIB 1 )
+ELSE (HDF5_BUILD_SHARED_LIBS)
+  SET (H5_BUILT_AS_STATIC_LIB 1 )
+ENDIF (HDF5_BUILD_SHARED_LIBS)
+
 #-----------------------------------------------------------------------------
 # Version Strings
 #-----------------------------------------------------------------------------
@@ -53,7 +59,7 @@ SET (HDF5_VERSION_MINOR  @HDF5_VERSION_MINOR@)
 # Don't include targets if this file is being picked up by another
 # project which has already build hdf5 as a subproject
 #-----------------------------------------------------------------------------
-IF (NOT TARGET "hdf5")
-  INCLUDE (${SELF_DIR}/hdf5-targets.cmake)
+IF (NOT TARGET "@HDF5_PACKAGE@")
+  INCLUDE (${SELF_DIR}/@HDF5_PACKAGE@@HDF_PACKAGE_EXT at -targets.cmake)
   SET (HDF5_LIBRARIES "@HDF5_LIBRARIES_TO_EXPORT@")
-ENDIF (NOT TARGET "hdf5")
+ENDIF (NOT TARGET "@HDF5_PACKAGE@")
diff --git a/config/cmake/hdf5-config.cmake.install.in b/config/cmake/hdf5-config.cmake.install.in
index 268d5ed..6b90496 100644
--- a/config/cmake/hdf5-config.cmake.install.in
+++ b/config/cmake/hdf5-config.cmake.install.in
@@ -4,7 +4,9 @@
 GET_FILENAME_COMPONENT (SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
 GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${SELF_DIR}" PATH)
 GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
-GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+IF (NOT WIN32)
+  GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+ENDIF (NOT WIN32)
 
 #-----------------------------------------------------------------------------
 # User Options
@@ -43,8 +45,8 @@ IF (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
 ENDIF (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
 
 IF (HDF5_BUILD_TOOLS)
-  SET (HDF5_INCLUDE_DIR_TOOLS "${_IMPORT_PREFIX}/include/tools" )
-  SET (HDF5_TOOLS_DIR "${_IMPORT_PREFIX}/bin/tools" )
+  SET (HDF5_INCLUDE_DIR_TOOLS "${_IMPORT_PREFIX}/include" )
+  SET (HDF5_TOOLS_DIR "${_IMPORT_PREFIX}/bin" )
 ENDIF (HDF5_BUILD_TOOLS)
 
 #-----------------------------------------------------------------------------
@@ -58,34 +60,14 @@ SET (HDF5_VERSION_MINOR  @HDF5_VERSION_MINOR@)
 # Don't include targets if this file is being picked up by another
 # project which has already built hdf5 as a subproject
 #-----------------------------------------------------------------------------
-IF (NOT TARGET "hdf5")
+IF (NOT TARGET "@HDF5_PACKAGE@")
   IF (HDF5_ENABLE_Z_LIB_SUPPORT AND HDF5_PACKAGE_EXTLIBS AND NOT TARGET "zlib")
-    INCLUDE (${SELF_DIR}/../ZLIB/ZLIB-targets.cmake)
+    INCLUDE (${SELF_DIR}/../ZLIB/@ZLIB_PACKAGE_NAME@@HDF_PACKAGE_EXT at -targets.cmake)
   ENDIF (HDF5_ENABLE_Z_LIB_SUPPORT AND HDF5_PACKAGE_EXTLIBS AND NOT TARGET "zlib")
   IF (HDF5_ENABLE_SZIP_SUPPORT AND HDF5_PACKAGE_EXTLIBS AND NOT TARGET "szip")
-    INCLUDE (${SELF_DIR}/../SZIP/SZIP-targets.cmake)
+    INCLUDE (${SELF_DIR}/../SZIP/@SZIP_PACKAGE_NAME@@HDF_PACKAGE_EXT at -targets.cmake)
   ENDIF (HDF5_ENABLE_SZIP_SUPPORT AND HDF5_PACKAGE_EXTLIBS AND NOT TARGET "szip")
-  INCLUDE (${SELF_DIR}/hdf5-targets.cmake)
+  INCLUDE (${SELF_DIR}/@HDF5_PACKAGE@@HDF_PACKAGE_EXT at -targets.cmake)
   SET (HDF5_LIBRARIES "@HDF5_LIBRARIES_TO_EXPORT@")
-ENDIF (NOT TARGET "hdf5")
+ENDIF (NOT TARGET "@HDF5_PACKAGE@")
 
-#-----------------------------------------------------------------------------
-# Unfinished
-#-----------------------------------------------------------------------------
-#
-# To be continued (maybe) ...
-#
-# XXX_INCLUDE_DIRS         no, use one per library as in HDF5_FORTRAN_INCLUDE_DIR
-# XXX_LIBRARIES             not needed - see hdf5-targets.cmake
-# XXX_DEFINITIONS           Definitions to use when compiling code that uses XXX. This really shouldn't include options such as (-DHAS_JPEG) that a client source-code file uses to decide whether to #include <jpeg.h>
-# XXX_EXECUTABLE            Where to find the XXX tool.
-# XXX_YYY_EXECUTABLE        Where to find the YYY tool that comes with XXX.
-# XXX_LIBRARY_DIRS         Optionally, the final set of library directories listed in one variable for use by client code.  This should not be a cache entry.
-# XXX_ROOT_DIR              Where to find the base directory of XXX.
-# XXX_VERSION_YY           Expect Version YY if true. Make sure at most one of these is ever true.
-# XXX_WRAP_YY               If False, do not try to use the relevent CMake wrapping command.
-# XXX_YY_FOUND              If False, optional YY part of XXX sytem is not available.
-# XXX_FOUND                 Set to false, or undefined, if we haven't found, or don't want to use XXX.
-# XXX_RUNTIME_LIBRARY_DIRS Optionally, the runtime library search path for use when running an executable linked to shared libraries.
-#                          The list should be used by user code to create the PATH on windows or LD_LIBRARY_PATH on unix.
-#                          This should not be a cache entry.
diff --git a/config/cmake/mccacheinit.cmake b/config/cmake/mccacheinit.cmake
index 10b2824..418e178 100755
--- a/config/cmake/mccacheinit.cmake
+++ b/config/cmake/mccacheinit.cmake
@@ -14,10 +14,14 @@ SET (HDF5_BUILD_EXAMPLES ON CACHE BOOL "Build HDF5 Library Examples" FORCE)
 
 SET (HDF5_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE)
 
+SET (HDF5_ENABLE_F2003 OFF CACHE BOOL "Enable FORTRAN 2003 Standard" FORCE)
+
 SET (HDF5_BUILD_HL_LIB ON CACHE BOOL "Build HIGH Level HDF5 Library" FORCE)
 
 SET (HDF5_BUILD_TOOLS ON CACHE BOOL "Build HDF5 Tools" FORCE)
 
+SET (HDF5_BUILD_GENERATORS OFF CACHE BOOL "Build Test Generators" FORCE)
+
 SET (HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE)
 
 SET (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
@@ -26,22 +30,34 @@ SET (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" FORCE)
 
 SET (HDF5_ENABLE_HSIZET ON CACHE BOOL "Enable datasets larger than memory" FORCE)
 
+SET (HDF5_ENABLE_UNSUPPORTED OFF CACHE BOOL "Enable unsupported combinations of configuration options" FORCE)
+
 SET (HDF5_ENABLE_DEPRECATED_SYMBOLS ON CACHE BOOL "Enable deprecated public API symbols" FORCE)
 
+SET (HDF5_ENABLE_DIRECT_VFD OFF CACHE BOOL "Build the Direct I/O Virtual File Driver" FORCE)
+
 SET (HDF5_ENABLE_PARALLEL OFF CACHE BOOL "Enable parallel build (requires MPI)" FORCE)
 
+SET (MPIEXEC_MAX_NUMPROCS "3" CACHE STRING "Minimum number of processes for HDF parallel tests" FORCE)
+
+SET (HDF5_BUILD_PARALLEL_ALL OFF CACHE BOOL "Build Parallel Programs" FORCE)
+
 SET (HDF5_ENABLE_COVERAGE OFF CACHE BOOL "Enable code coverage for Libraries and Programs" FORCE)
 
 SET (HDF5_ENABLE_USING_MEMCHECKER ON CACHE BOOL "Indicate that a memory checker is used" FORCE)
 
 SET (HDF5_DISABLE_COMPILER_WARNINGS OFF CACHE BOOL "Disable compiler warnings" FORCE)
 
+SET (HDF5_USE_FOLDERS ON CACHE BOOL "Enable folder grouping of projects in IDEs." FORCE)
+
 SET (HDF5_USE_16_API_DEFAULT OFF CACHE BOOL "Use the HDF5 1.6.x API by default" FORCE)
 
 SET (HDF5_ENABLE_THREADSAFE OFF CACHE BOOL "(WINDOWS)Enable Threadsafety" FORCE)
 
 SET (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libraries" FORCE)
 
+SET (HDF5_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE)
+
 SET (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building" FORCE)
 
 SET (ZLIB_SVN_URL "http://svn.hdfgroup.uiuc.edu/zlib/trunk" CACHE STRING "Use ZLib from HDF repository" FORCE)
diff --git a/config/cmake/runTest.cmake b/config/cmake/runTest.cmake
index 34fac1f..4738523 100644
--- a/config/cmake/runTest.cmake
+++ b/config/cmake/runTest.cmake
@@ -24,7 +24,9 @@ IF (NOT TEST_SKIP_COMPARE AND NOT TEST_REFERENCE)
   MESSAGE (FATAL_ERROR "Require TEST_REFERENCE to be defined")
 ENDIF (NOT TEST_SKIP_COMPARE AND NOT TEST_REFERENCE)
 
-SET (ERROR_APPEND 1)
+IF (NOT TEST_ERRREF)
+  SET (ERROR_APPEND 1)
+ENDIF (NOT TEST_ERRREF)
 
 MESSAGE (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
 
@@ -51,7 +53,7 @@ IF (ERROR_APPEND)
 ENDIF (ERROR_APPEND)
 
 IF (TEST_APPEND)
-  FILE (APPEND ${TEST_OUTPUT} "${TEST_APPEND} ${TEST_RESULT}\n") 
+  FILE (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_APPEND} ${TEST_RESULT}\n") 
 ENDIF (TEST_APPEND)
 
 # if the return value is !=${TEST_EXPECT} bail out
@@ -74,7 +76,11 @@ IF (TEST_MASK_MOD)
 ENDIF (TEST_MASK_MOD)
 
 IF (TEST_MASK_ERROR)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+  IF (NOT TEST_ERRREF)
+    FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+  ELSE (NOT TEST_ERRREF)
+    FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM)
+  ENDIF (NOT TEST_ERRREF)
   STRING(REGEX REPLACE "thread [0-9]*:" "thread (IDs):" TEST_STREAM "${TEST_STREAM}") 
   STRING(REGEX REPLACE ": ([^\n]*)[.]c " ": (file name) " TEST_STREAM "${TEST_STREAM}") 
   STRING(REGEX REPLACE " line [0-9]*" " line (number)" TEST_STREAM "${TEST_STREAM}") 
@@ -82,7 +88,11 @@ IF (TEST_MASK_ERROR)
   STRING(REGEX REPLACE "[1-9]*[.][0-9]*[.][0-9]*[^)]*" "version (number)" TEST_STREAM "${TEST_STREAM}") 
   STRING(REGEX REPLACE "H5Eget_auto[1-2]*" "H5Eget_auto(1 or 2)" TEST_STREAM "${TEST_STREAM}") 
   STRING(REGEX REPLACE "H5Eset_auto[1-2]*" "H5Eset_auto(1 or 2)" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+  IF (NOT TEST_ERRREF)
+    FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+  ELSE (NOT TEST_ERRREF)
+    FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT}.err "${TEST_STREAM}")
+  ENDIF (NOT TEST_ERRREF)
 ENDIF (TEST_MASK_ERROR)
 
 IF (TEST_FILTER)
@@ -109,6 +119,26 @@ IF (NOT TEST_SKIP_COMPARE)
   IF (NOT ${TEST_RESULT} STREQUAL 0)
     MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not match ${TEST_REFERENCE}")
   ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
+  
+  IF (TEST_ERRREF)
+    IF (WIN32 AND NOT MINGW)
+      FILE (READ ${TEST_FOLDER}/${TEST_ERRREF} TEST_STREAM)
+      FILE (WRITE ${TEST_FOLDER}/${TEST_ERRREF} "${TEST_STREAM}")
+    ENDIF (WIN32 AND NOT MINGW)
+
+    # now compare the error output with the error reference
+    EXECUTE_PROCESS (
+        COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_FOLDER}/${TEST_OUTPUT}.err ${TEST_FOLDER}/${TEST_ERRREF}
+        RESULT_VARIABLE TEST_RESULT
+    )
+
+    MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
+
+    # again, if return value is !=0 scream and shout
+    IF (NOT ${TEST_RESULT} STREQUAL 0)
+      MESSAGE (FATAL_ERROR "Failed: The error output of ${TEST_PROGRAM} did not match ${TEST_ERRREF}")
+    ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
+  ENDIF (TEST_ERRREF)
 ENDIF (NOT TEST_SKIP_COMPARE)
 
 # everything went fine...
diff --git a/config/commence.am b/config/commence.am
index 3d098d9..4bc005e 100644
--- a/config/commence.am
+++ b/config/commence.am
@@ -87,13 +87,6 @@ TRACE=perl $(top_srcdir)/bin/trace
 F9XMODEXT=@F9XMODEXT@
 F9XMODFLAG=@F9XMODFLAG@
 
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF=/home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOMAKE=/home1/packages/automake/automake-1.9.6/bin/automake-1.9
-AUTOHEADER=/home1/packages/autoconf/autoconf-2.60/bin/autoheader
-ACLOCAL=/home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-
 # .chkexe files are used to mark tests that have run successfully.
 # .chklog files are output from those tests.
 # *.clog are from the MPE option.
diff --git a/config/conclude.am b/config/conclude.am
index 830b60c..1ba56fb 100644
--- a/config/conclude.am
+++ b/config/conclude.am
@@ -27,13 +27,18 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
       $(noinst_LTLIBRARIES) $(check_LIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LIB)
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TESTS = $(TEST_PROG) $(TEST_SCRIPT) $(EXTRA_TEST) 
+
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS =
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -59,7 +64,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -83,7 +88,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -93,7 +98,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -188,7 +193,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -218,7 +223,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/config/examples.am b/config/examples.am
index bd3bac4..bf0708c 100644
--- a/config/examples.am
+++ b/config/examples.am
@@ -44,13 +44,12 @@
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES=*.raw *.meta *.o
 CHECK_CLEANFILES+=*.h5
-CLEANFILES=$(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES=$(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # How to create EXAMPLEDIR if it doesn't already exist
 $(EXAMPLEDIR):
@@ -68,8 +67,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
diff --git a/config/ibm-aix b/config/ibm-aix
index c8b1fc3..28498e2 100644
--- a/config/ibm-aix
+++ b/config/ibm-aix
@@ -56,12 +56,12 @@ fi
 # to ensure the flag is present for both configure as well as for the build.
 if test "X-" = "X-$f9x_flags_set"; then
   F9XSUFFIXFLAG="-qsuffix=f=f90"
-  FCFLAGS="$FCFLAGS -O ${F9XSUFFIXFLAG}"
-  H5_FCFLAGS="$H5_FCFLAGS -O ${F9XSUFFIXFLAG}"
+  FCFLAGS="$FCFLAGS ${F9XSUFFIXFLAG}"
+  H5_FCFLAGS="$H5_FCFLAGS ${F9XSUFFIXFLAG}"
   FSEARCH_DIRS="-I./ -I../src"
-  DEBUG_FCFLAGS="-O"
+  DEBUG_FCFLAGS="-g"
   PROD_FCFLAGS="-O"
-  PROFILE_FCFLAGS="-O"
+  PROFILE_FCFLAGS="-g -pg"
   f9x_flags_set=yes
 fi
 
diff --git a/config/lt_vers.am b/config/lt_vers.am
index 0306462..f508c95 100644
--- a/config/lt_vers.am
+++ b/config/lt_vers.am
@@ -17,7 +17,7 @@
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 
 ## If the API changes *at all*, increment LT_VERS_INTERFACE and
diff --git a/configure b/configure
index cb357ef..15f8dcd 100755
--- a/configure
+++ b/configure
@@ -1,14 +1,12 @@
 #! /bin/sh
-# From configure.in Id: configure.in 22270 2012-04-09 19:54:57Z mamcgree .
+# From configure.ac Id: configure.ac 22979 2012-10-27 00:14:40Z acheng .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for HDF5 1.8.9.
+# Generated by GNU Autoconf 2.69 for HDF5 1.8.10.
 #
 # Report bugs to <help at hdfgroup.org>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -137,6 +135,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -170,7 +193,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -223,21 +247,25 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -340,6 +368,14 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -461,6 +497,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -495,16 +535,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -516,28 +556,8 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -571,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='HDF5'
 PACKAGE_TARNAME='hdf5'
-PACKAGE_VERSION='1.8.9'
-PACKAGE_STRING='HDF5 1.8.9'
+PACKAGE_VERSION='1.8.10'
+PACKAGE_STRING='HDF5 1.8.10'
 PACKAGE_BUGREPORT='help at hdfgroup.org'
 PACKAGE_URL=''
 
@@ -738,6 +758,7 @@ HDF5_INTERFACES
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -795,6 +816,8 @@ MAINTAINER_MODE_FALSE
 MAINTAINER_MODE_TRUE
 AM_BACKSLASH
 AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 am__untar
 am__tar
 AMTAR
@@ -1377,8 +1400,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1464,7 +1485,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures HDF5 1.8.9 to adapt to many kinds of systems.
+\`configure' configures HDF5 1.8.10 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1534,7 +1555,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of HDF5 1.8.9:";;
+     short | recursive ) echo "Configuration of HDF5 1.8.10:";;
    esac
   cat <<\_ACEOF
 
@@ -1542,12 +1563,15 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
   --enable-unsupported    Allow unsupported combinations of configure options
   --enable-fortran        Compile the Fortran 77/90/95 interface [default=no]
   --enable-fortran2003    Compile the Fortran 2003 interface, must also
@@ -1622,7 +1646,7 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
@@ -1645,7 +1669,7 @@ Optional Packages:
   --with-mpe=DIR          Use MPE instrumentation [default=no]
   --with-default-vfd=driver
                           Specify default file driver [default=sec2]
-  --with-default-api-version=(v16|v18)
+  --with-default-api-version=(v16|v18|v110)
                           Specify default release version of public symbols
                           [default=v18]
 
@@ -1730,10 +1754,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-HDF5 configure 1.8.9
-generated by GNU Autoconf 2.68
+HDF5 configure 1.8.10
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1847,7 +1871,7 @@ $as_echo "$ac_try_echo"; } >&5
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -2237,7 +2261,7 @@ $as_echo "$ac_try_echo"; } >&5
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -2283,7 +2307,7 @@ $as_echo "$ac_try_echo"; } >&5
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -2488,7 +2512,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2512,7 +2537,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2546,7 +2572,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2570,7 +2597,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2612,7 +2640,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2819,8 +2848,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by HDF5 $as_me 1.8.9, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by HDF5 $as_me 1.8.10, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -3201,7 +3230,10 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
 
-am__api_version='1.11'
+
+## AM_INIT_AUTOMAKE takes a list of options that should be applied to
+## every Makefile.am when automake is run.
+am__api_version='1.12'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -3240,7 +3272,7 @@ case $as_dir/ in #((
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
 	  if test $ac_prog = install &&
 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
 	    # AIX install.  It has an incompatible calling convention.
@@ -3298,9 +3330,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -3311,32 +3340,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
@@ -3348,6 +3385,16 @@ Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -3374,8 +3421,8 @@ if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
 if test x"${install_sh}" != xset; then
@@ -3387,10 +3434,10 @@ if test x"${install_sh}" != xset; then
   esac
 fi
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
 if test "$cross_compiling" != no; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -3409,7 +3456,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3449,7 +3496,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3500,7 +3547,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
 	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
 	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
 	     'mkdir (GNU coreutils) '* | \
 	     'mkdir (coreutils) '* | \
@@ -3529,12 +3576,6 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3553,7 +3594,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3639,7 +3680,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='hdf5'
- VERSION='1.8.9'
+ VERSION='1.8.10'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3667,13 +3708,19 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
@@ -3684,14 +3731,51 @@ if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
 fi
 
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=0;;
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
 esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
 AM_BACKSLASH='\'
 
 
+## AM_MAINTAINER_MODE turns off "rebuild rules" that contain dependencies
+## for Makefiles, configure, src/H5config.h, etc.  If AM_MAINTAINER_MODE
+## is *not* included here, these files will be rebuilt if out of date.
+## This is a problem because if users try to build on a machine with
+## the wrong versions of autoconf and automake, these files will be
+## rebuilt with the wrong versions and bad things can happen.
+## Also, CVS doesn't preserve dependencies between timestamps, so
+## Makefiles will often think rebuilding needs to occur when it doesn't.
+## Developers should './configure --enable-maintainer-mode' to turn on
+## rebuild rules.
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
@@ -3716,9 +3800,26 @@ fi
 
 
 
-ac_config_commands="$ac_config_commands default-1"
+## ----------------------------------------------------------------------
+## Set prefix default (install directory) to a directory in the build area.
+## This allows multiple src-dir builds within one host.
+
+
+## Run post processing on files created by configure.
+## src/H5pubconf.h:
+## Generate src/H5pubconf.h from src/H5config.h by prepending H5_ to all
+## macro names. This avoid name conflict between HDF5 macro names and those
+## generated by another software package that uses the HDF5 library.
+## src/libhdf5.settings:
+## Remove all lines begun with "#" which are generated by CONDITIONAL's of
+## configure.
+ac_config_commands="$ac_config_commands pubconf"
 
 
+## It's possible to configure for a host other than the one on which
+## configure is currently running by using the --host=foo flag.
+## For machines on which HDF5 is often configured, it can be convenient
+## to specify the name of the machine rather than its canonical type.
 case $host_alias in
   redstorm)
     host_alias=x86_64-redstorm-linux-gnu
@@ -3798,18 +3899,23 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
 
+## H5_CFLAGS (and company) are for CFLAGS that should be used on HDF5, but
+## not exported to h5cc (or h5fc, etc.)
 
 
 
 
 
 
+## AM_CFLAGS (and company) are for CFLAGS that should be used on HDF5,
+## and WILL be exported to h5cc (or h5fc, etc) if set by configure.
 
 
 
 
 
 
+## Make sure flags are set to something (otherwise macros may set them later).
 AM_CFLAGS="${AM_CFLAGS}"
 AM_CXXFLAGS="${AM_CXXFLAGS}"
 AM_FCFLAGS="${AM_FCFLAGS}"
@@ -3821,26 +3927,57 @@ FCFLAGS="${FCFLAGS}"
 CPPFLAGS="${CPPFLAGS}"
 LDFLAGS="${LDFLAGS}"
 
+## Configure may need to alter any of the *FLAGS variables in order for
+## various checks to work correctly. Save the user's value here so it
+## can be restored once all configure checks are complete.
 saved_user_CFLAGS="$CFLAGS"
 saved_user_CXXFLAGS="$CXXFLAGS"
 saved_user_FCFLAGS="$FCFLAGS"
 saved_user_LDFLAGS="$LDFLAGS"
 saved_user_CPPFLAGS="$CPPFLAGS"
 
+## Different compilers may need default libraries. They are specified in
+## the config/* files, so we put this statement here so that it'll be
+## set by the code which follows...
+##
 DEFAULT_LIBS=""
 
+## Support F9X variable to define Fortran compiler if FC variable is
+## not used.  This should be deprecated in the future.
 if test "x" = "x$FC"; then
   FC=${F9X}
 fi
 
-
-
+## ----------------------------------------------------------------------
+## Dump all shell variables values.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking shell variables initial values" >&5
 $as_echo_n "checking shell variables initial values... " >&6; }
 set >&5
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
 $as_echo "done" >&6; }
 
+## Define all symbol variables used for configure summary.
+## EXTERNAL_FILTERS equals all external filters. Default none.
+## MPE: whether MPE option is enabled. Default no.
+## STATIC_EXEC: whether static-exec is enabled. Default no.
+## HDF_FORTRAN: whether Fortran is enabled. Default no.
+## HDF_FORTRAN2003: whether Fortran 2003 is enabled. Default no.
+## FC: Fortran compiler.
+## HDF_CXX: whether C++ is enabled. Default no.
+## CXX: C++ compiler.
+## HDF5_HL: whether high-level library is enabled. Default is yes.
+## GPFS: whether gpfs is enabled. Default no.
+## LARGEFILE: whether largefile support is enabled. Default yes.
+## INSTRUMENT: whether INSTRUMENT is enabled. No default set here.
+## CODESTACK: whether CODESTACK is enabled. Default no.
+## HAVE_DMALLOC: whether system has dmalloc support. Default no.
+## DIRECT_VFD: whether DIRECT_VFD is enabled. Default no.
+## THREADSAFE: whether THREADSAFE is enabled. Default no.
+## STATIC_SHARED: whether static and/or shared libraries are requested.
+## enable_shared: whether shared lib is enabled.
+## enable_static: whether static lib is enabled.
+## UNAME_INFO: System information.
 
 
  MPE=no
@@ -3864,7 +4001,17 @@ $as_echo "done" >&6; }
 
  UNAME_INFO=`uname -a`
 
+## ----------------------------------------------------------------------
+## Some platforms have broken basename, and/or xargs programs. Check
+## that it actually does what it's supposed to do. Catch this early
+## since configure relies upon them heavily and there's no use continuing
+## if it's broken.
+##
 
+## Avoid depending upon Character Ranges.
+## These are defined by autoconf.
+## as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+## as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if basename works" >&5
 $as_echo_n "checking if basename works... " >&6; }
@@ -3886,6 +4033,10 @@ else
 $as_echo "yes" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Check that the cache file was build on the same host as what we're
+## running on now.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cached host" >&5
 $as_echo_n "checking for cached host... " >&6; }
 if ${hdf5_cv_host+:} false; then :
@@ -3903,6 +4054,23 @@ elif test $hdf5_cv_host != $host; then
   as_fn_error $? "config.cache file is invalid" "$LINENO" 5
 fi
 
+## ----------------------------------------------------------------------
+## Source any special files that we need.  These files normally aren't
+## present but can be used by the maintainers to fine tune things like
+## turning on debug or profiling flags for the compiler.  The search order
+## is:
+##
+##	CPU-VENDOR-OS
+##	VENDOR-OS
+##	CPU-OS
+##	CPU-VENDOR
+##	OS
+##	VENDOR
+##	CPU
+##
+## If the `OS' ends with a version number then remove it. For instance,
+## `freebsd3.1' would become `freebsd'
+
 case $host_os in
   aix*)
     host_os_novers=aix
@@ -3958,6 +4126,7 @@ if test "X$host_config" != "Xnone"; then
   . $host_config
 fi
 
+## Source any special site-specific file
 hname="`hostname`"
 while test -n "$hname"; do
   file=$srcdir/config/site-specific/host-$hname
@@ -3976,16 +4145,28 @@ $as_echo "no" >&6; }
   test "$hname_tmp" = "$hname" && break
 done
 
+## ----------------------------------------------------------------------
+## Some built-in configure checks can only see CFLAGS (not AM_CFLAGS), so
+## we need to add this in so configure works as intended. We will need to
+## reset this value at the end of configure, to preserve the user's settings.
 CFLAGS="${AM_CFLAGS} ${CFLAGS}"
 FCFLAGS="${AM_FCFLAGS} ${FCFLAGS}"
 CXXFLAGS="${AM_CXXFLAGS} ${CXXFLAGS}"
 CPPFLAGS="${AM_CPPFLAGS} ${CPPFLAGS}"
 LDFLAGS="${AM_LDFLAGS} ${LDFLAGS}"
 
+## ----------------------------------------------------------------------
+## Enable dependency tracking unless the configure options or a
+## site-specific file told us not to.  This prevents configure from
+## silently disabling dependencies for some compilers.
+##
 if test -z "${enable_dependency_tracking}"; then
   enable_dependency_tracking="yes"
 fi
 
+## ----------------------------------------------------------------------
+## Check for programs.
+##
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4008,7 +4189,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4048,7 +4229,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4101,7 +4282,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4142,7 +4323,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -4200,7 +4381,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4244,7 +4425,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4690,8 +4871,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4794,7 +4974,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -4827,6 +5007,7 @@ fi
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -4849,8 +5030,9 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -4884,16 +5066,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -4902,16 +5084,16 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -4967,6 +5149,11 @@ fi
 
 CC_BASENAME="`echo $CC | cut -f1 -d' ' | xargs basename 2>/dev/null`"
 
+## ----------------------------------------------------------------------------
+## Configure disallows unsupported combinations of options. However, users
+## may want to override and build with unsupported combinations for their
+## own use. They can use the --enable-unsupported configure flag, which
+## ignores any errors from configure due to incompatible flags.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if unsupported combinations of configure options are allowed" >&5
 $as_echo_n "checking if unsupported combinations of configure options are allowed... " >&6; }
 # Check whether --enable-unsupported was given.
@@ -4988,6 +5175,9 @@ $as_echo "yes" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Check if they would like the Fortran interface compiled
+##
  HDF5_INTERFACES=""
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran interface enabled" >&5
 $as_echo_n "checking if Fortran interface enabled... " >&6; }
@@ -5004,6 +5194,9 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## Check if they would like the Fortran 2003 interface compiled
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 2003 interface enabled" >&5
 $as_echo_n "checking if Fortran 2003 interface enabled... " >&6; }
 # Check whether --enable-fortran2003 was given.
@@ -5012,6 +5205,9 @@ if test "${enable_fortran2003+set}" = set; then :
 fi
 
 
+## ----------------------------------------------------------------------
+## Check to make sure --enable-fortran is present if --enable-fortran2003
+## was specified
 
 if test "X$HDF_FORTRAN2003" = "Xyes" && test "X$HDF_FORTRAN" = "Xno"; then
   echo "no"
@@ -5030,9 +5226,15 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
 
   HDF5_INTERFACES="$HDF5_INTERFACES fortran"
 
-        HAVE_FORTRAN_2003="no"
+  ## --------------------------------------------------------------------
+  ## Default for FORTRAN 2003 compliant compilers
+  ##
+  HAVE_FORTRAN_2003="no"
   HAVE_F2003_REQUIREMENTS="no"
 
+  ## --------------------------------------------------------------------
+  ## HDF5 integer variables for the H5fortran_types.f90 file.
+  ##
 
 
 
@@ -5042,15 +5244,21 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
 
 
 
-        AM_FCFLAGS="${AM_FCFLAGS} ${FFLAGS}"
+  ## --------------------------------------------------------------------
+  ## General Fortran flags
+  ##
+  AM_FCFLAGS="${AM_FCFLAGS} ${FFLAGS}"
   FCFLAGS="${FCFLAGS} ${FFLAGS}"
 
-        ac_ext=${ac_fc_srcext-f}
+  ## --------------------------------------------------------------------
+  ## Fortran source extention
+  ##
+  ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 if test -n "$ac_tool_prefix"; then
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
+  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
@@ -5068,7 +5276,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5094,7 +5302,7 @@ fi
 fi
 if test -z "$FC"; then
   ac_ct_FC=$FC
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
+  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -5112,7 +5320,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_FC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5245,6 +5453,11 @@ else
   fi
 fi
 
+if test $ac_compiler_gnu = yes; then
+  GFC=yes
+else
+  GFC=
+fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
@@ -5264,7 +5477,11 @@ else
 ac_fcflags_srcext_save=$ac_fcflags_srcext
 ac_fcflags_srcext=
 ac_cv_fc_srcext_f90=unknown
-for ac_flag in none -qsuffix=f=f90 -Tf; do
+case $ac_ext in #(
+  [fF]77) ac_try=f77;; #(
+  *) ac_try=f95;;
+esac
+for ac_flag in none -qsuffix=f=f90 -Tf "-x $ac_try"; do
   test "x$ac_flag" != xnone && ac_fcflags_srcext="$ac_flag"
   cat > conftest.$ac_ext <<_ACEOF
       program main
@@ -5306,7 +5523,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-        ac_ext=${ac_fc_srcext-f}
+  ## --------------------------------------------------------------------
+  ## Check for a Fortran 9X compiler and how to include modules.
+  ##
+  ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
@@ -5329,7 +5549,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5373,7 +5593,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_FC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5506,6 +5726,11 @@ else
   fi
 fi
 
+if test $ac_compiler_gnu = yes; then
+  GFC=yes
+else
+  GFC=
+fi
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -5604,15 +5829,22 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-        F77=$FC
+  ## It seems that libtool (as of Libtool 1.5.14) is trying to
+  ## configure itself for Fortran 77.
+  ## Tell it that our F77 compiler is $FC (actually a F9X compiler)
+  F77=$FC
 
-    ac_ext=${ac_fc_srcext-f}
+  ## Change to the Fortran 90 language
+  ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
 
-        ac_ext=${ac_fc_srcext-f}
+  ## --------------------------------------------------------------------
+  ## Define wrappers for the C compiler to use Fortran function names
+  ##
+  ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
@@ -5666,9 +5898,16 @@ ac_fc_v_output="`echo $ac_fc_v_output |
 #        that detects unbalanced quotes in FLIBS should be implemented
 #        and (ugh) tested at some point.
 case $ac_fc_v_output in
-  # If we are using xlf then replace all the commas with spaces.
+  # With xlf replace commas with spaces,
+  # and remove "-link" and closing parenthesis.
   *xlfentry*)
-    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+    ac_fc_v_output=`echo $ac_fc_v_output |
+      sed '
+        s/,/ /g
+        s/ -link / /g
+        s/) *$//
+      '
+    ` ;;
 
   # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
   # $LIBS confuse us, and the libraries appear later in the output anyway).
@@ -5684,6 +5923,16 @@ case $ac_fc_v_output in
 	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
 	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
 
+  # If we are using fort77 (the f2c wrapper) then filter output and delete quotes.
+  *fort77*f2c*gcc*)
+    ac_fc_v_output=`echo "$ac_fc_v_output" | sed -n '
+        /:[	 ]\+Running[	 ]\{1,\}"gcc"/{
+          /"-c"/d
+          /[.]c"*/d
+          s/^.*"gcc"/"gcc"/
+          s/"//gp
+        }'` ;;
+
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
     ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"//g'` ;;
@@ -5757,9 +6006,16 @@ ac_fc_v_output="`echo $ac_fc_v_output |
 #        that detects unbalanced quotes in FLIBS should be implemented
 #        and (ugh) tested at some point.
 case $ac_fc_v_output in
-  # If we are using xlf then replace all the commas with spaces.
+  # With xlf replace commas with spaces,
+  # and remove "-link" and closing parenthesis.
   *xlfentry*)
-    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+    ac_fc_v_output=`echo $ac_fc_v_output |
+      sed '
+        s/,/ /g
+        s/ -link / /g
+        s/) *$//
+      '
+    ` ;;
 
   # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
   # $LIBS confuse us, and the libraries appear later in the output anyway).
@@ -5775,6 +6031,16 @@ case $ac_fc_v_output in
 	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
 	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
 
+  # If we are using fort77 (the f2c wrapper) then filter output and delete quotes.
+  *fort77*f2c*gcc*)
+    ac_fc_v_output=`echo "$ac_fc_v_output" | sed -n '
+        /:[	 ]\+Running[	 ]\{1,\}"gcc"/{
+          /"-c"/d
+          /[.]c"*/d
+          s/^.*"gcc"/"gcc"/
+          s/"//gp
+        }'` ;;
+
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
     ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"//g'` ;;
@@ -5833,7 +6099,11 @@ fi
 	  |-LANG:=* | -LIST:* | -LNO:* | -link)
 	  ;;
 	-lkernel32)
-	  test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+	  case $host_os in
+	  *cygwin*) ;;
+	  *) ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+	    ;;
+	  esac
 	  ;;
 	-[LRuYz])
 	  # These flags, when seen by themselves, take an argument.
@@ -6256,8 +6526,13 @@ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
 
+  ## --------------------------------------------------------------------
+  ## See if the compiler will support the "-I." option
+  ##
 
 
+  ## --------------------------------------------------------------------
+  ## See if the fortran compiler supports the intrinsic function "SIZEOF"
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran compiler supports intrinsic SIZEOF" >&5
 $as_echo_n "checking if Fortran compiler supports intrinsic SIZEOF... " >&6; }
@@ -6287,6 +6562,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 fi
 
 
+  ## Check to see if -r8 was specified to determine if we need to
+  ## compile the DOUBLE PRECISION interfaces.
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran default REAL is DOUBLE PRECISION" >&5
 $as_echo_n "checking if Fortran default REAL is DOUBLE PRECISION... " >&6; }
@@ -6327,7 +6604,7 @@ $as_echo "no" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-       FORTRAN_DEFAULT_REALisDBLE="yes"
+        FORTRAN_DEFAULT_REALisDBLE="yes"
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -6336,6 +6613,8 @@ fi
 
   if test "X$HDF_FORTRAN2003" = "Xyes"; then
 
+    ## Checking if the compiler supports the required Fortran 2003 features and
+    ## disable Fortran 2003 if it does not.
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran compiler version compatible with Fortran 2003 HDF" >&5
 $as_echo_n "checking if Fortran compiler version compatible with Fortran 2003 HDF... " >&6; }
@@ -6365,18 +6644,19 @@ else
 $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
     if test "X$HAVE_F2003_REQUIREMENTS" = "Xno"; then
-          as_fn_error $? "Fortran compiler lacks required Fortran 2003 features; unsupported Fortran 2003 compiler, remove --enable-fortran2003" "$LINENO" 5
+    ##  echo $HAVE_FORTRAN_2003
+      as_fn_error $? "Fortran compiler lacks required Fortran 2003 features; unsupported Fortran 2003 compiler, remove --enable-fortran2003" "$LINENO" 5
     else
+    ##  echo $HAVE_FORTRAN_2003
       HAVE_FORTRAN_2003="yes"
-        fi
-
+    fi
   fi
 else
   FC="no"
 fi
 
+## Change back to the C language
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -6409,6 +6689,12 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## Check if they would like the C++ interface compiled
+##
+## We need to check for a C++ compiler unconditionally, since
+## AC_PROG_CXX defines some macros that Automake 1.9.x uses and will
+## miss even if c++ is not enabled.
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -6437,7 +6723,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6481,7 +6767,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CXX="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6709,8 +6995,9 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -6744,16 +7031,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -6762,16 +7049,16 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -6957,6 +7244,7 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
+	## this is checked for when AC_HEADER_STDC is done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if c++ interface enabled" >&5
 $as_echo_n "checking if c++ interface enabled... " >&6; }
@@ -6971,7 +7259,8 @@ if test "X$HDF_CXX" = "Xyes"; then
   echo "yes"
   HDF5_INTERFACES="$HDF5_INTERFACES c++"
 
-    ac_ext=cpp
+  ## Change to the C++ language
+  ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
@@ -7206,6 +7495,7 @@ else
   CXX="no"
 fi
 
+## Change back to the C language
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -7213,6 +7503,10 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+## ----------------------------------------------------------------------
+## Check if they have Perl installed on their system. We only need Perl
+## if they're using a GNU compiler.
+##
  PERL=""
 if test "X$GCC" = "Xyes"; then
   for ac_prog in perl
@@ -7233,7 +7527,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_PERL="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7260,6 +7554,11 @@ done
 fi
 
 
+## ----------------------------------------------------------------------
+## Check which archiving tool to use. This needs to be done before
+## the AM_PROG_LIBTOOL macro.
+##
+
 if test -z "$AR"; then
   for ac_prog in ar xar
 do
@@ -7279,7 +7578,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7307,6 +7606,8 @@ test -n "$AR" || AR=":"
 fi
 
 
+## Export the AR macro so that it will be placed in the libtool file
+## correctly.
 export AR
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
@@ -7343,6 +7644,8 @@ fi
 
 
 
+## ----------------------------------------------------------------------
+## Check that the tr utility is working properly.
 
 # Extract the first word of "tr", so it can be a program name with args.
 set dummy tr; ac_word=$2
@@ -7362,7 +7665,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7391,6 +7694,10 @@ if test "X${TR_TEST}" != "XTEST"; then
 fi
 
 
+## ----------------------------------------------------------------------
+## Check that time can be used with srcdir.  This is okay on most systems,
+## but seems to cause problems on Cygwin.
+## The solution on Cygwin is not to record execution time for tests.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if srcdir= and time commands work together" >&5
 $as_echo_n "checking if srcdir= and time commands work together... " >&6; }
 
@@ -7408,18 +7715,64 @@ $as_echo "no" >&6; }
 fi
 
 
-
-
-
-
-
+## The following variables are used to distinguish between building a
+## serial and parallel library.
+##
+##    HAVE_PARALLEL	-- defined in H5config.h if we are building
+##			   a parallel library even if configure wasn't
+##			   able to find some header file or library that
+##			   might be required. This is defined if the
+##			   compiler looks like a parallel compiler (e.g.,
+##			   mpicc or mpcc) or if the user explicitly states
+##			   that a parallel library is being built by supplying
+##			   the `--enable-parallel' configure switch.
+##
+##    PARALLEL		-- This variable is set to a non-null value if
+##			   configure thinks we're compiling a parallel
+##			   version of the library.
+##
+##    RUNSERIAL	-- This is a command which will be prepended to
+##			   the executable name to run the executable using
+##			   a single process. For serial versions of the
+##			   library this will normally be empty. For parallel
+##			   versions it might be something like `mpiexec -n 1'.
+##			   The value of this variable is substituted in *.in
+##			   files.
+##
+##    RUNPARALLEL	-- This is a command which will be prepended to
+##			   the executable name to run the executable on
+##			   multiple processors. For the serial library the
+##			   value will normally be the empty string. For
+##			   parallel library it should be something like
+##			   "mpiexec -n \$\${NPROCS:=6}" where NPROCS will
+##			   eventually contain the number of processors on which
+##			   to run the executable (the double dollarsigns are to
+##			   protect the expansion until make executes the
+##			   command).  The value of this variable is
+##			   substituted in *.in files.
+##
+
+
+
+
+
+## ----------------------------------------------------------------------
+## If the compiler is obviously a parallel compiler then we're building
+## a parallel version of hdf5 and should define HAVE_PARALLEL. Furthermore,
+## the name of the compiler might tell us how to run the resulting
+## executable. For `mpicc' the executable should be run with `mpiexec' from
+## the same directory as mpicc if it exists.
+##
 case "$CC_BASENAME" in
   mpicc)
-            PARALLEL=mpicc
+    ## The mpich compiler. Use mpiexec from the same directory if it
+    ## exists.
+    PARALLEL=mpicc
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpiexec" >&5
 $as_echo_n "checking for mpiexec... " >&6; }
 
-        cmd="`echo $CC | cut -f1 -d' '`"
+    ## Find the path where mpicc is located.
+    cmd="`echo $CC | cut -f1 -d' '`"
     if (echo $cmd | grep / >/dev/null); then
       path="`echo $cmd | sed 's/\(.*\)\/.*$/\1/'`"
     else
@@ -7430,7 +7783,8 @@ $as_echo_n "checking for mpiexec... " >&6; }
       done
     fi
 
-        if test -x $path/mpiexec; then
+    ## Is there an mpiexec at that path?
+    if test -x $path/mpiexec; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $path/mpiexec" >&5
 $as_echo "$path/mpiexec" >&6; }
       RUNSERIAL="${RUNSERIAL:-none}"
@@ -7445,15 +7799,27 @@ $as_echo "none" >&6; }
     ;;
 
   mpcc|mpcc_r)
-        PARALLEL="$CC_BASENAME"
+    ## The IBM compiler
+    PARALLEL="$CC_BASENAME"
     ;;
 
   *)
-            ;;
+    ## Probably not a parallel compiler, but if `--enable-parallel'
+    ## is defined below then we're still building a parallel hdf5.
+    ;;
 esac
 
+## ----------------------------------------------------------------------
+## If the Fortran compiler is obviously a parallel compiler then we're
+## building a parallel version of hdf5 and should define HAVE_PARALLEL.
+## Furthermore, the name of the compiler might tell us how to run the
+## resulting executable. For `mpif90' the executable should be run with
+## `mpiexec' from the same directory as mpif90 if it exists.
+##
+
 if test "X$HDF_FORTRAN" = "Xyes" ; then
-    ac_ext=${ac_fc_srcext-f}
+  ## Change to the Fortran 90 language
+  ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
@@ -7461,11 +7827,14 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
   case "$FC" in
     *mpif90*)
-                  PARALLEL=mpif90
+      ## The Fortran mpich compiler. Use mpiexec from the same directory
+      ## if it exists.
+      PARALLEL=mpif90
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpiexec" >&5
 $as_echo_n "checking for mpiexec... " >&6; }
 
-            cmd=`echo $FC |cut -f1 -d' '`
+      ## Find the path where mpif90 is located.
+      cmd=`echo $FC |cut -f1 -d' '`
       if (echo $cmd |grep / >/dev/null); then
         path="`echo $cmd |sed 's/\(.*\)\/.*$/\1/'`"
       else
@@ -7476,7 +7845,8 @@ $as_echo_n "checking for mpiexec... " >&6; }
         done
       fi
 
-            if test -x $path/mpiexec; then
+      ## Is there an mpiexec at that path?
+      if test -x $path/mpiexec; then
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $path/mpiexec" >&5
 $as_echo "$path/mpiexec" >&6; }
         RUNSERIAL="${RUNSERIAL:-none}"
@@ -7491,14 +7861,18 @@ $as_echo "none" >&6; }
       ;;
 
     *mpxlf* | *mpxlf_r* | *mpxlf90* | *mpxlf90_r* | *mpxlf95* | *mpxlf95_r*)
-            PARALLEL="$FC"
+      ## The IBM compiler
+      PARALLEL="$FC"
       ;;
 
     *)
-                  ;;
+      ## Probably not a parallel compiler, but if `--enable-parallel'
+      ## is defined below then we're still building a parallel hdf5.
+      ;;
   esac
 
-    ac_ext=c
+  ## Change to the C language
+  ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
@@ -7506,6 +7880,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 fi
 
+## -----------------------------------------------------------------------------
+## If shared libraries are being used with parallel, disable them, unless the
+## user explicity enables them via the '--enable-shared' option.
+
 if test "X${enable_shared}" = "X" -a "X${enable_parallel}" = "Xyes"; then
     echo '    shared libraries disabled in parallel'
     enable_shared="no"
@@ -7518,6 +7896,10 @@ elif test "X${enable_shared}" = "Xyes" -a "X${PARALLEL}" != "X"; then
     echo '    shared libraries explicitly enabled by user'
 fi
 
+## ----------------------------------------------------------------------
+## Fortran libraries are not currently supported on Mac. Disable them.
+## (this is overridable with --enable-unsupported).
+##
 
 H5_FORTRAN_SHARED="no"
 if test "X${HDF_FORTRAN}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
@@ -7525,14 +7907,18 @@ if test "X${HDF_FORTRAN}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
 $as_echo_n "checking if shared Fortran libraries are supported... " >&6; }
   H5_FORTRAN_SHARED="yes"
 
-    case "`uname`" in
+  ## Disable fortran shared libraries on Mac. (MAM - 03/30/11)
+
+  case "`uname`" in
     Darwin*)
     H5_FORTRAN_SHARED="no"
     CHECK_WARN="Shared Fortran libraries not currently supported on Mac."
       ;;
   esac
 
-    if test "X${H5_FORTRAN_SHARED}" = "Xno"; then
+  ## Report results of check(s)
+
+  if test "X${H5_FORTRAN_SHARED}" = "Xno"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $CHECK_WARN" >&5
@@ -7565,6 +7951,9 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## Disable C++ shared libraries if +DD64 flag is detected.
+##
 
 H5_CXX_SHARED="no"
 if test "X${HDF_CXX}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
@@ -7572,12 +7961,16 @@ if test "X${HDF_CXX}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
 $as_echo_n "checking if shared C++ libraries are supported... " >&6; }
   H5_CXX_SHARED="yes"
 
-    if (echo dummy ${CXX} ${CXXLD} ${CFLAGS} ${CXXFLAGS} ${LDFLAGS} | grep 'DD64') > /dev/null; then
+  ## Disable C++ shared libraries if DD64 flag is being used.
+
+  if (echo dummy ${CXX} ${CXXLD} ${CFLAGS} ${CXXFLAGS} ${LDFLAGS} | grep 'DD64') > /dev/null; then
     H5_CXX_SHARED="no"
     CHECK_WARN="Shared C++ libraries not currently supported with +DD64 flag."
   fi
 
-    if test "X${H5_CXX_SHARED}" = "Xno"; then
+  ## Report results of check(s)
+
+  if test "X${H5_CXX_SHARED}" = "Xno"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $CHECK_WARN" >&5
@@ -7609,11 +8002,21 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## pgcc version 6.0x have optimization (-O, -O2 or -O3) problem.  Detect
+## these versions and add option "-Mx,28,0x8" to the compiler to avoid
+## the problem if optimization is enabled.
+##
+
 if (${CC-cc} -V 2>&1 | grep '^pgcc 6.0') > /dev/null && test "X$enable_production" = "Xyes"; then
     echo 'adding compiler flag to avoid optimization problem in pgcc'
     CC="${CC-cc} -Mx,28,0x8"
 fi
 
+## ----------------------------------------------------------------------
+## Shared libraries are not currently supported under Cygwin, so configure
+## disables them unless --enable-unsupported has been supplied by the user.
+
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   case "`uname`" in
     CYGWIN*)
@@ -7627,6 +8030,12 @@ if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   esac
 fi
 
+## ----------------------------------------------------------------------
+## The GCC compiler on Cygwin running on Windows XP has rounding problem
+## in the data conversion dt_arith.c from unsigned long long to long
+## double (see bug HDFFV-1264).  I define a macro here to skip the test for
+## Cygwin.  I'll come back and figure out the problem once I'm available.
+## 2010/5/5 - SLU
 case "`uname`" in
   CYGWIN*)
 
@@ -7635,6 +8044,9 @@ $as_echo "#define CYGWIN_ULLONG_TO_LDOUBLE_ROUND_PROBLEM 1" >>confdefs.h
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Windows won't create DLLs without the following macro.
+##
 enable_win32_dll=yes
 
 case $host in
@@ -7656,7 +8068,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AS="${ac_tool_prefix}as"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7696,7 +8108,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AS="as"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7748,7 +8160,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7788,7 +8200,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7840,7 +8252,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7880,7 +8292,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7939,6 +8351,9 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
+## ----------------------------------------------------------------------
+## Create libtool.  If shared/static libraries are going to be enabled
+## or disabled, it should happen before these macros.
 
 case `pwd` in
   *\ * | *\	*)
@@ -7948,8 +8363,8 @@ esac
 
 
 
-macro_version='2.4'
-macro_revision='1.3293'
+macro_version='2.4.2'
+macro_revision='1.3337'
 
 
 
@@ -8056,7 +8471,7 @@ do
     for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+      as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
 case `"$ac_path_SED" --version 2>&1` in
@@ -8132,7 +8547,7 @@ do
     for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -8198,7 +8613,7 @@ do
     for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -8265,7 +8680,7 @@ do
     for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+      as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
 case `"$ac_path_FGREP" --version 2>&1` in
@@ -8521,7 +8936,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8565,7 +8980,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8723,6 +9138,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -8762,7 +9182,7 @@ else
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -8984,7 +9404,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9024,7 +9444,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9188,7 +9608,7 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -9327,7 +9747,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9367,7 +9787,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9467,7 +9887,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9511,7 +9931,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9644,7 +10064,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9684,7 +10104,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9743,7 +10163,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9783,7 +10203,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9833,13 +10253,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -9986,6 +10406,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -10382,7 +10803,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -10393,7 +10814,20 @@ sparc*-*solaris*)
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -10426,7 +10860,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10466,7 +10900,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10546,7 +10980,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10586,7 +11020,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10638,7 +11072,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10678,7 +11112,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10730,7 +11164,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10770,7 +11204,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_LIPO="lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10822,7 +11256,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10862,7 +11296,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL="otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10914,7 +11348,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10954,7 +11388,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -11033,7 +11467,13 @@ else
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&5
@@ -11044,6 +11484,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -11084,6 +11525,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
 $as_echo_n "checking for -force_load linker flag... " >&6; }
 if ${lt_cv_ld_force_load+:} false; then :
@@ -11105,7 +11547,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&5
@@ -11525,7 +11969,22 @@ fi
 
 # Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
   pic_mode=default
 fi
@@ -11603,6 +12062,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+
+
+
+
 test -z "$LN_S" && LN_S="ln -s"
 
 
@@ -12058,7 +12521,9 @@ lt_prog_compiler_static=
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl='-Xlinker '
-      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
       ;;
     esac
   else
@@ -12149,18 +12614,33 @@ lt_prog_compiler_static=
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl='-Wl,'
 	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -12522,7 +13002,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct=no
   hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
@@ -12772,8 +13251,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
 	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -13168,6 +13646,7 @@ fi
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
 	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	old_postinstall_cmds='chmod 644 $oldlib'
@@ -13213,6 +13692,7 @@ fi
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec=''
   fi
@@ -13241,10 +13721,6 @@ fi
       hardcode_shlibpath_var=no
       ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -13257,7 +13733,7 @@ fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
       hardcode_minus_L=yes
@@ -13296,7 +13772,6 @@ fi
       fi
       if test "$with_gnu_ld" = no; then
 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
 	hardcode_libdir_separator=:
 	hardcode_direct=yes
 	hardcode_direct_absolute=yes
@@ -13920,11 +14395,6 @@ esac
 
 
 
-
-
-
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -14014,7 +14484,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -14023,7 +14493,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -14088,7 +14558,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -14227,7 +14697,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -14235,10 +14705,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -14246,7 +14712,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -14264,7 +14730,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14284,17 +14750,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -14355,7 +14822,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -14371,7 +14838,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -14408,9 +14875,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -14500,7 +14967,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -14569,7 +15036,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -14594,7 +15061,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -14618,7 +15085,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -14649,7 +15116,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -14659,7 +15126,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -15624,7 +16091,6 @@ export_dynamic_flag_spec_CXX=
 hardcode_direct_CXX=no
 hardcode_direct_absolute_CXX=no
 hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
 hardcode_libdir_separator_CXX=
 hardcode_minus_L_CXX=no
 hardcode_shlibpath_var_CXX=unsupported
@@ -16224,6 +16690,7 @@ fi
   hardcode_shlibpath_var_CXX=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec_CXX=''
   fi
@@ -16268,7 +16735,7 @@ fi
         esac
         ;;
 
-      freebsd[12]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         ld_shlibs_CXX=no
@@ -16944,6 +17411,7 @@ _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -17733,7 +18201,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
       exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
@@ -17886,8 +18356,6 @@ esac
 
 
 
-
-
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -17913,7 +18381,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -17922,7 +18390,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -17987,7 +18455,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -18124,7 +18592,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -18132,10 +18600,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -18143,7 +18607,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -18161,7 +18625,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -18181,17 +18645,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -18252,7 +18717,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -18268,7 +18733,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -18305,9 +18770,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -18397,7 +18862,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -18466,7 +18931,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -18491,7 +18956,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -18515,7 +18980,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -18546,7 +19011,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -18556,7 +19021,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -18705,7 +19170,6 @@ export_dynamic_flag_spec_FC=
 hardcode_direct_FC=no
 hardcode_direct_absolute_FC=no
 hardcode_libdir_flag_spec_FC=
-hardcode_libdir_flag_spec_ld_FC=
 hardcode_libdir_separator_FC=
 hardcode_minus_L_FC=no
 hardcode_automatic_FC=no
@@ -18861,6 +19325,7 @@ _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -19087,7 +19552,9 @@ lt_prog_compiler_static_FC=
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl_FC='-Xlinker '
-      lt_prog_compiler_pic_FC='-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic_FC"; then
+        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
+      fi
       ;;
     esac
   else
@@ -19178,18 +19645,33 @@ lt_prog_compiler_static_FC=
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  lt_prog_compiler_pic_FC='-KPIC'
 	  lt_prog_compiler_static_FC='-Bstatic'
 	  lt_prog_compiler_wl_FC=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic_FC='-KPIC'
+	  lt_prog_compiler_static_FC='-Bstatic'
+	  lt_prog_compiler_wl_FC='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic_FC='-KPIC'
 	  lt_prog_compiler_static_FC='-Bstatic'
 	  lt_prog_compiler_wl_FC='-Wl,'
 	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl_FC='-Wl,'
+	  lt_prog_compiler_pic_FC='-fPIC'
+	  lt_prog_compiler_static_FC='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl_FC='-Wl,'
+	  lt_prog_compiler_pic_FC='-fpic'
+	  lt_prog_compiler_static_FC='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -19536,7 +20018,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct_FC=no
   hardcode_direct_absolute_FC=no
   hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_flag_spec_ld_FC=
   hardcode_libdir_separator_FC=
   hardcode_minus_L_FC=no
   hardcode_shlibpath_var_FC=unsupported
@@ -19786,8 +20267,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC=
-	  hardcode_libdir_flag_spec_ld_FC='-rpath $libdir'
+	  hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
 	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
@@ -20154,6 +20634,7 @@ fi
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
 	enable_shared_with_static_runtimes_FC=yes
+	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	old_postinstall_cmds_FC='chmod 644 $oldlib'
@@ -20199,6 +20680,7 @@ fi
   hardcode_shlibpath_var_FC=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    compiler_needs_object_FC=yes
   else
     whole_archive_flag_spec_FC=''
   fi
@@ -20227,10 +20709,6 @@ fi
       hardcode_shlibpath_var_FC=no
       ;;
 
-    freebsd1*)
-      ld_shlibs_FC=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -20243,7 +20721,7 @@ fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct_FC=yes
       hardcode_minus_L_FC=yes
@@ -20282,7 +20760,6 @@ fi
       fi
       if test "$with_gnu_ld" = no; then
 	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld_FC='+b $libdir'
 	hardcode_libdir_separator_FC=:
 	hardcode_direct_FC=yes
 	hardcode_direct_absolute_FC=yes
@@ -20769,8 +21246,6 @@ esac
 
 
 
-
-
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -20796,7 +21271,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -20805,7 +21280,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -20870,7 +21345,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -21007,7 +21482,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -21015,10 +21490,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -21026,7 +21497,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -21044,7 +21515,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -21064,17 +21535,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -21135,7 +21607,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -21151,7 +21623,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -21188,9 +21660,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -21266,7 +21738,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -21335,7 +21807,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -21360,7 +21832,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -21384,7 +21856,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -21415,7 +21887,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -21425,7 +21897,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -21553,6 +22025,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+
         ac_config_commands="$ac_config_commands libtool"
 
 
@@ -21562,6 +22036,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+## ----------------------------------------------------------------------
+## Check if we should install only statically linked executables.
+##   This check needs to occur after libtool is initialized because
+##   we check a libtool cache value and may issue a warning based
+##   on its result.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should install only statically linked executables" >&5
 $as_echo_n "checking if we should install only statically linked executables... " >&6; }
 # Check whether --enable-static_exec was given.
@@ -21572,7 +22051,8 @@ fi
 
 if test "X$STATIC_EXEC" = "Xyes"; then
   echo "yes"
-    if test "X$lt_cv_prog_compiler_static_works" = "Xno"; then
+  ## Issue a warning if -static flag is not supported.
+  if test "X$lt_cv_prog_compiler_static_works" = "Xno"; then
       echo "    warning: -static flag not supported on this system; executable won't statically link shared system libraries."
   fi
   LT_STATIC_EXEC="-all-static"
@@ -21583,12 +22063,19 @@ fi
 
 
 
+## Fix up the INSTALL macro if it's a relative path. We want the
+## full-path to the binary instead.
 case "$INSTALL" in
   *install-sh*)
     INSTALL='\${top_srcdir}/bin/install-sh -c'
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Some users have reported problems with libtool's use of '-Wl,-rpath' to
+## link shared libraries in nondefault directories. Allow users to
+## disable embedding the rpath information in the executables and to
+## instead solely rely on the information in LD_LIBRARY_PATH.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -Wl,-rpath should be used to link shared libs in nondefault directories" >&5
 $as_echo_n "checking if -Wl,-rpath should be used to link shared libs in nondefault directories... " >&6; }
 # Check whether --enable-sharedlib-rpath was given.
@@ -21619,10 +22106,15 @@ esac
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking make" >&5
 $as_echo_n "checking make... " >&6; }
 
+## ----------------------------------------------------------------------
+## Sometimes makes think the `.PATH:' appearing before the first rule
+## with an action should override the `all' default target. So we have
+## to decide what the proper syntax is.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how make searches directories" >&5
 $as_echo_n "checking how make searches directories... " >&6; }
 while true; do #for break
-  # The most common method is `VPATH=DIR1 DIR2 ...'
+  ## The most common method is `VPATH=DIR1 DIR2 ...'
   cat >maketest <<EOF
 VPATH=$srcdir/config $srcdir/src $srcdir/bin
 .c.o:
@@ -21641,7 +22133,9 @@ $as_echo "VPATH=DIR1 DIR2 ..." >&6; }
     break
   fi
 
-      cat >maketest <<EOF
+  ## The second most common method is like above except with the
+  ## directories separated by colons.
+  cat >maketest <<EOF
 VPATH=$srcdir/config:$srcdir/src:$srcdir/bin
 .c.o:
 	cp $< H5.o
@@ -21659,7 +22153,8 @@ $as_echo "VPATH=DIR1:DIR2:..." >&6; }
     break
   fi
 
-    cat >maketest <<EOF
+  ## pmake uses the construct `.PATH: DIR1 DIR2
+  cat >maketest <<EOF
 .PATH: $srcdir/config $srcdir/src $srcdir/bin
 .c.o:
 	cp $< H5.o
@@ -21677,7 +22172,8 @@ $as_echo ".PATH: DIR1 DIR2 ..." >&6; }
     break
   fi
 
-    SEARCH_RULE='## SEARCH DISABLED: '
+  ## No way for make to search directories
+  SEARCH_RULE='## SEARCH DISABLED: '
   SEARCH_SEP=' '
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: it doesn't" >&5
 $as_echo "it doesn't" >&6; }
@@ -21688,8 +22184,13 @@ $as_echo "it doesn't" >&6; }
 done
 rm maketest
 
+## ----------------------------------------------------------------------
+## pmake will throw an error if variables are undefined in a Makefile.
+## These errors can be changed to warnings using the -V flag.
+##
  AM_MAKEFLAGS=""
 
+## Don't run test if MAKE is defined but is the empty string
 if test -n "${MAKE-make}"; then
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make will build with undefined variables" >&5
@@ -21712,6 +22213,10 @@ $as_echo "no, setting -V flag" >&6; }
   rm maketest
 fi
 
+## ----------------------------------------------------------------------
+## Production flags?  Save the value in $CONFIG_MODE so we have it for
+## the record.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for production mode" >&5
 $as_echo_n "checking for production mode... " >&6; }
 # Check whether --enable-production was given.
@@ -21759,6 +22264,9 @@ $as_echo "user-defined" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Check for system libraries.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ceil in -lm" >&5
 $as_echo_n "checking for ceil in -lm... " >&6; }
 if ${ac_cv_lib_m_ceil+:} false; then :
@@ -21814,7 +22322,8 @@ fi
 
 
 if test "`uname`" = "SunOS" -o "`uname -sr`" = "HP-UX B.11.00"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
+  ## ...for Solaris
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
 $as_echo_n "checking for socket in -lsocket... " >&6; }
 if ${ac_cv_lib_socket_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -21923,6 +22432,9 @@ fi
 fi
 
 
+## ----------------------------------------------------------------------
+## Check for system header files.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if ${ac_cv_header_stdc+:} false; then :
@@ -22087,6 +22599,11 @@ $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
 fi
 
 
+## ----------------------------------------------------------------------
+## Check for these two functions before the time headers are checked
+## for, otherwise they are not detected correctly on Solaris (the
+## configure test will fail due to multiply-defined symbols).
+##
 for ac_func in difftime
 do :
   ac_fn_c_check_func "$LINENO" "difftime" "ac_cv_func_difftime"
@@ -22189,6 +22706,7 @@ fi
 done
 
 
+## Unix
 for ac_header in sys/resource.h sys/time.h unistd.h sys/ioctl.h sys/stat.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -22241,6 +22759,7 @@ fi
 done
 
 
+## Darwin
 for ac_header in mach/mach_time.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "mach/mach_time.h" "ac_cv_header_mach_mach_time_h" "$ac_includes_default"
@@ -22254,6 +22773,7 @@ fi
 done
 
 
+## Windows
 case "`uname`" in
   CYGWIN*)
     for ac_header in io.h sys/timeb.h
@@ -22270,8 +22790,71 @@ fi
 done
 
     ;;
+  MINGW*)
+    for ac_header in io.h winsock2.h sys/timeb.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lws2_32" >&5
+$as_echo_n "checking for main in -lws2_32... " >&6; }
+if ${ac_cv_lib_ws2_32_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lws2_32  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#ifdef FC_DUMMY_MAIN
+#ifndef FC_DUMMY_MAIN_EQ_F77
+#  ifdef __cplusplus
+     extern "C"
+#  endif
+   int FC_DUMMY_MAIN() { return 1; }
+#endif
+#endif
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ws2_32_main=yes
+else
+  ac_cv_lib_ws2_32_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ws2_32_main" >&5
+$as_echo "$ac_cv_lib_ws2_32_main" >&6; }
+if test "x$ac_cv_lib_ws2_32_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBWS2_32 1
+_ACEOF
+
+  LIBS="-lws2_32 $LIBS"
+
+fi
+ac_cv_lib_ws2_32=ac_cv_lib_ws2_32_main
+
+    ;;
   *)
-    for ac_header in io.h winsock.h sys/timeb.h
+    for ac_header in io.h winsock2.h sys/timeb.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -22289,7 +22872,11 @@ esac
 
 case "$host" in
   alpha*-dec*-osf*)
-                    for ac_header in sys/sysinfo.h sys/proc.h
+    ## The <sys/sysinfo.h> and <sys/proc.h> are needed on the DEC
+    ## Alpha to turn off UAC fixing. We do *not* attempt to
+    ## locate these files on other systems because there are too
+    ## many problems with including them.
+    for ac_header in sys/sysinfo.h sys/proc.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -22304,7 +22891,11 @@ done
 
     ;;
   mips*-sgi*-irix*)
-                    for ac_header in sys/fpu.h
+    ## The <sys/fpu.h> is needed on the SGI machines to turn off
+    ## denormalized floating-point values going to zero.  We do *not*
+    ## attempt to locate these files on other systems because there
+    ## may be problems with including them.
+    for ac_header in sys/fpu.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/fpu.h" "ac_cv_header_sys_fpu_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_fpu_h" = xyes; then :
@@ -22330,22 +22921,33 @@ done
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Some platforms require that all symbols are resolved when a library
+## is linked. We can use the -no-undefined flag to tell libtool that
+## it will be able to build shared libraries on these architectures,
+## as it will not do so by default.
+##
 if test "X${enable_shared}" = "Xyes"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool needs -no-undefined flag to build shared libraries" >&5
 $as_echo_n "checking if libtool needs -no-undefined flag to build shared libraries... " >&6; }
   case "`uname`" in
     CYGWIN*|MINGW*|AIX*)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+      ## Add in the -no-undefined flag to LDFLAGS for libtool.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
       H5_LDFLAGS="$H5_LDFLAGS -no-undefined"
       ;;
     *)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+      ## Don't add in anything.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
       ;;
   esac
 fi
 
+## ----------------------------------------------------------------------
+## Test for Largefile support.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if configure should try to set up large file support" >&5
 $as_echo_n "checking if configure should try to set up large file support... " >&6; }
 
@@ -22355,6 +22957,9 @@ if test "${enable_largefile+set}" = set; then :
 fi
 
 
+## The linux-lfs option is deprecated, but if it is used to disable
+## largefile support on linux and the largefile option is not specified,
+## then go ahead and disable large-file support.
 case "$host_cpu-$host_vendor-$host_os" in
   *linux*)
     # Check whether --enable-linux-lfs was given.
@@ -22371,11 +22976,14 @@ fi
     ;;
 esac
 
+## If largefile support is enabled, then set up appropriate compiler options.
 if test "$enable_largefile" != no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+  ## Check for needed compiler options. This check is pulled drectly
+  ## from autoconf's AC_SYS_LARGEFILE macro, as of Autoconf v2.65.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
 $as_echo_n "checking for special C compiler options needed for large files... " >&6; }
 if ${ac_cv_sys_largefile_CC+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22384,9 +22992,9 @@ else
      if test "$GCC" != yes; then
        ac_save_CC=$CC
        while :; do
-     # IRIX 6.2 and later do not support large files by default,
-     # so use the C compiler's -n32 option if that helps.
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+         ## IRIX 6.2 and later do not support large files by default,
+         ## so use the C compiler's -n32 option if that helps.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -22413,16 +23021,16 @@ main ()
   return 0;
 }
 _ACEOF
-     if ac_fn_c_try_compile "$LINENO"; then :
+         if ac_fn_c_try_compile "$LINENO"; then :
   break
 fi
 rm -f core conftest.err conftest.$ac_objext
-     CC="$CC -n32"
-     if ac_fn_c_try_compile "$LINENO"; then :
+         CC="$CC -n32"
+         if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_sys_largefile_CC=' -n32'; break
 fi
 rm -f core conftest.err conftest.$ac_objext
-     break
+         break
        done
        CC=$ac_save_CC
        rm -f conftest.$ac_ext
@@ -22434,8 +23042,15 @@ $as_echo "$ac_cv_sys_largefile_CC" >&6; }
     CC=$CC$ac_cv_sys_largefile_CC
   fi
 
+  ## Use the macro _AC_SYS_LARGEFILE_MACRO_VALUE to test defines
+  ## that might need to be set for largefile support to behave
+  ## correctly. This macro is defined in acsite.m4 and overrides
+  ## the version provided by Autoconf (as of v2.65). The custom
+  ## macro additionally adds the appropriate defines to AM_CPPFLAGS
+  ## so that later configure checks have them visible.
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+  ## Check for _FILE_OFFSET_BITS
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
 if ${ac_cv_sys_file_offset_bits+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22521,7 +23136,8 @@ _ACEOF
 esac
 rm -rf conftest*
 
-    if test $ac_cv_sys_file_offset_bits = unknown; then
+  ## Check for _LARGE_FILES
+  if test "$ac_cv_sys_file_offset_bits" = unknown; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
 if ${ac_cv_sys_large_files+:} false; then :
@@ -22609,7 +23225,9 @@ esac
 rm -rf conftest*
   fi
 
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if large (64-bit) files are supported on this system." >&5
+  ## Now actually test to see if we can create large files after we've
+  ## checked for any needed defines.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if large (64-bit) files are supported on this system." >&5
 $as_echo_n "checking if large (64-bit) files are supported on this system.... " >&6; }
   if ${hdf5_cv_have_lfs+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22669,18 +23287,49 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Add necessary defines for Linux Systems.
+##
 case "$host_cpu-$host_vendor-$host_os" in
   *linux*)
-            if test "X$LARGEFILE" != "Xno"; then
+    ## If largefile support is enabled, then make available various
+    ## LFS-related routines using the following _LARGEFILE*_SOURCE macros.
+    if test "X$LARGEFILE" != "Xno"; then
         AM_CPPFLAGS="-D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE $AM_CPPFLAGS"
     fi
 
-                                                                H5_CPPFLAGS="-D_POSIX_C_SOURCE=199506L $H5_CPPFLAGS"
-
-                                    AM_CPPFLAGS="-D_BSD_SOURCE $AM_CPPFLAGS"
+    ## Add POSIX support on Linux systems, so <features.h> defines
+    ## __USE_POSIX, which is required to get the prototype for fdopen
+    ## defined correctly in <stdio.h>.
+    ## This flag was removed from h5cc as of 2009-10-17 when it was found
+    ## that the flag broke compiling netCDF-4 code with h5cc, but kept in
+    ## H5_CPPFLAGS because fdopen and HDfdopen fail without it. HDfdopen
+    ## is used only by H5_debug_mask which is used only when debugging in
+    ## H5_init_library (all in H5.c).  When the flag was removed this was
+    ## the only compile failure noted.
+    ## This was originally defined as _POSIX_SOURCE which was updated to
+    ## _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
+    ## functionality so clock_gettime and CLOCK_MONOTONIC are defined
+    ## correctly.
+    ## POSIX feature information can be found in the gcc manual at:
+    ## http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
+    H5_CPPFLAGS="-D_POSIX_C_SOURCE=199506L $H5_CPPFLAGS"
+
+    ## Also add BSD support on Linux systems, so <features.h> defines
+    ## __USE_BSD, which is required to get the prototype for strdup
+    ## defined correctly in <string.h> and snprintf & vsnprintf defined
+    ## correctly in <stdio.h>
+    ## Linking to the bsd-compat library is required as per the gcc manual:
+    ## http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
+    ## however, we do not do this since it breaks the big test on some
+    ## older platforms.
+    AM_CPPFLAGS="-D_BSD_SOURCE $AM_CPPFLAGS"
     ;;
 esac
 
+## Need to add the AM_ and H5_ into CPFLAGS/CPPFLAGS to make them visible
+## for configure checks.
+## Note: Both will be restored by the end of configure.
 CPPFLAGS="$H5_CPPFLAGS $AM_CPPFLAGS $CPPFLAGS"
 CFLAGS="$H5_CFLAGS $AM_CFLAGS $CFLAGS"
 
@@ -22773,6 +23422,9 @@ $as_echo "skipping test for stat64() and fstat64()" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## ----------------------------------------------------------------------
+## Data types and their sizes.
+##
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
 if test "x$ac_cv_type_off_t" = xyes; then :
 
@@ -23420,6 +24072,7 @@ _ACEOF
 
 
 
+## Checkpoint the cache
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -23506,6 +24159,7 @@ $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
 fi
 rm -f confcache
 
+## Posix.1g types (C9x)
 cat >>confdefs.h <<\EOF
 #include <sys/types.h>
 EOF
@@ -24482,6 +25136,7 @@ _ACEOF
 
 
 
+## Checkpoint the cache
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -24568,6 +25223,9 @@ $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
 fi
 rm -f confcache
 
+## ----------------------------------------------------------------------
+## Check if the dev_t type is a scalar type (must come after the check for
+## sys/types.h)
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if dev_t is scalar" >&5
 $as_echo_n "checking if dev_t is scalar... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -24606,6 +25264,11 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## ----------------------------------------------------------------------
+## Fake --with-xxx option to allow us to create a help message for the
+## following --with-xxx options which can take either a =DIR or =INC,LIB
+## specifier.
+##
 
 # Check whether --with-fnord was given.
 if test "${with_fnord+set}" = set; then :
@@ -24613,6 +25276,12 @@ if test "${with_fnord+set}" = set; then :
 fi
 
 
+## ----------------------------------------------------------------------
+## Is the dmalloc present? It has a header file `dmalloc.h' and a library
+## `-ldmalloc' and their locations might be specified with the `--with-dmalloc'
+## command-line switch. The value is an include path and/or a library path.
+## If the library path is specified then it must be preceded by a comma.
+##
 
 # Check whether --with-dmalloc was given.
 if test "${with_dmalloc+set}" = set; then :
@@ -24719,7 +25388,9 @@ $as_echo "suppressed" >&6; }
         ;;
     esac
 
-            if test "X$dmalloc_inc" = "X/usr/include"; then
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$dmalloc_inc" = "X/usr/include"; then
       dmalloc_inc=""
     fi
     if test "X$dmalloc_lib" = "X/usr/lib"; then
@@ -24818,6 +25489,12 @@ fi
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Is the GNU zlib present? It has a header file `zlib.h' and a library
+## `-lz' and their locations might be specified with the `--with-zlib'
+## command-line switch. The value is an include path and/or a library path.
+## If the library path is specified then it must be preceded by a comma.
+##
  USE_FILTER_DEFLATE="no"
 
 # Check whether --with-zlib was given.
@@ -24930,7 +25607,9 @@ $as_echo "suppressed" >&6; }
         ;;
     esac
 
-            if test "X$zlib_inc" = "X/usr/include"; then
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$zlib_inc" = "X/usr/include"; then
       zlib_inc=""
     fi
     if test "X$zlib_lib" = "X/usr/lib"; then
@@ -25040,13 +25719,20 @@ $as_echo "#define HAVE_FILTER_DEFLATE 1" >>confdefs.h
 
     USE_FILTER_DEFLATE="yes"
 
-        if test "X$EXTERNAL_FILTERS" != "X"; then
+    ## Add "deflate" to external filter list
+    if test "X$EXTERNAL_FILTERS" != "X"; then
         EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
     fi
     EXTERNAL_FILTERS="${EXTERNAL_FILTERS}deflate(zlib)"
 fi
 
 
+## ----------------------------------------------------------------------
+## Is the szlib present? It has a header file `szlib.h' and a library
+## `-lsz' and their locations might be specified with the `--with-szlib'
+## command-line switch. The value is an include path and/or a library path.
+## If the library path is specified then it must be preceded by a comma.
+##
  USE_FILTER_SZIP="no"
 
 # Check whether --with-szlib was given.
@@ -25154,7 +25840,9 @@ $as_echo "suppressed" >&6; }
         ;;
     esac
 
-            if test "X$szlib_inc" = "X/usr/include"; then
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$szlib_inc" = "X/usr/include"; then
       szlib_inc=""
     fi
     if test "X$szlib_lib" = "X/usr/lib"; then
@@ -25254,10 +25942,14 @@ fi
 esac
 
 if test "x$HAVE_SZLIB" = "xyes" -a "x$HAVE_SZLIB_H" = "xyes"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for szlib encoder" >&5
+    ## SZLIB library is available.  Check if it can encode
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for szlib encoder" >&5
 $as_echo_n "checking for szlib encoder... " >&6; }
 
-                if test -z "$LD_LIBRARY_PATH"; then
+    ## Set LD_LIBRARY_PATH so encoder test can find the library and run.
+    ## Also add LL_PATH substitution to Makefiles so they can use the
+    ## path as well, for testing examples.
+    if test -z "$LD_LIBRARY_PATH"; then
     export LD_LIBRARY_PATH="$szlib_lib"
     else
     export LD_LIBRARY_PATH="$szlib_lib:$LD_LIBRARY_PATH"
@@ -25315,7 +26007,8 @@ $as_echo "yes" >&6; }
 $as_echo "no" >&6; }
     fi
 
-        if test ${hdf5_cv_szlib_can_encode} = "yes"; then
+    ## Add "szip" to external filter list
+    if test ${hdf5_cv_szlib_can_encode} = "yes"; then
         if test "X$EXTERNAL_FILTERS" != "X"; then
             EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
         fi
@@ -25339,6 +26032,7 @@ else
 fi
 
 
+## Checkpoint the cache
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -25425,6 +26119,13 @@ $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
 fi
 rm -f confcache
 
+## ----------------------------------------------------------------------
+## Is the Pthreads library present?  It has a header file `pthread.h' and
+## a library `-lpthread' and their locations might be specified with the
+## `--with-pthread' command-line switch.  The value is an include path
+## and/or a library path.  If the library path is specified then it must
+## be preceded by a comma.
+##
  PTHREAD=yes
 
 # Check whether --with-pthread was given.
@@ -25526,7 +26227,9 @@ $as_echo "suppressed" >&6; }
         ;;
     esac
 
-            if test "X$pthread_inc" = "X/usr/include"; then
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$pthread_inc" = "X/usr/include"; then
       pthread_inc=""
     fi
     if test "X$pthread_lib" = "X/usr/lib"; then
@@ -25690,6 +26393,9 @@ fi
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Enable thread-safe version of library.  It requires Pthreads support.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for thread safe support" >&5
 $as_echo_n "checking for thread safe support... " >&6; }
 # Check whether --enable-threadsafe was given.
@@ -25698,12 +26404,17 @@ if test "${enable_threadsafe+set}" = set; then :
 fi
 
 
+## The --enable-threadsafe flag is not compatible with --enable-cxx.
+## If the user tried to specify both flags, throw an error, unless
+## they also provided the --enable-unsupported flag.
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   if test "X${HDF_CXX}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then
     as_fn_error $? "--enable-cxx and --enable-threadsafe flags are incompatible. Use --enable-unsupported to override this error." "$LINENO" 5
   fi
 fi
 
+## --enable-threadsafe is also incompatible with --enable-fortran, unless
+## --enable-unsupported has been specified on the configure line.
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   if test "X${HDF_FORTRAN}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then
     as_fn_error $? "--enable-fortran and --enable-threadsafe flags are incompatible. Use --enable-unsupported to override this error." "$LINENO" 5
@@ -25716,7 +26427,8 @@ case "X-$THREADSAFE" in
 $as_echo "no" >&6; }
     ;;
   X-yes)
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+    ## Check that we can link a simple Pthread program.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -25757,6 +26469,10 @@ $as_echo "#define HAVE_THREADSAFE 1" >>confdefs.h
 
 fi
 
+## ----------------------------------------------------------------------
+## Check for MONOTONIC_TIMER support (used in clock_gettime).  This has
+## to be done after any POSIX/BSD defines to ensure that the test gets
+## the correct POSIX level on linux.
 ac_fn_c_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#include <time.h>
 "
 if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes; then :
@@ -25766,14 +26482,19 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## How does one figure out the local time zone?  Anyone know of a
+## Posix way to do this?
+##
 
+## First check if `struct tm' has a `tm_gmtoff' member.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tm_gmtoff in struct tm" >&5
 $as_echo_n "checking for tm_gmtoff in struct tm... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <sys/time.h>
-#include <time.h>
+  #include <sys/time.h>
+  #include <time.h>
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -25794,7 +26515,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -25802,13 +26523,14 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## check if `struct tm' has a `__tm_gmtoff' member.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __tm_gmtoff in struct tm" >&5
 $as_echo_n "checking for __tm_gmtoff in struct tm... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <sys/time.h>
-#include <time.h>
+  #include <sys/time.h>
+  #include <time.h>
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -25829,7 +26551,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE___TM_GMTOFF 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -25837,10 +26559,10 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## Check whether the global variable `timezone' is defined.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for global timezone variable" >&5
 $as_echo_n "checking for global timezone variable... " >&6; }
 
-
 case "`uname`" in
   CYGWIN*)
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled in CYGWIN" >&5
@@ -25872,7 +26594,7 @@ if ac_fn_c_try_link "$LINENO"; then :
 
 $as_echo "#define HAVE_TIMEZONE 1" >>confdefs.h
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -25883,6 +26605,7 @@ rm -f core conftest.err conftest.$ac_objext \
     ;;
 esac
 
+## Check whether `struct timezone' is defined.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
 if ${ac_cv_struct_tm+:} false; then :
@@ -26006,9 +26729,9 @@ $as_echo_n "checking for struct timezone... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
+  #include <sys/types.h>
+  #include <sys/time.h>
+  #include <time.h>
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -26029,8 +26752,8 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h
 
-have_struct_tz="yes"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    have_struct_tz="yes"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26038,6 +26761,7 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## If gettimeofday() is going to be used, make sure it uses the timezone struct
 
 if test "$have_gettime" = "yes" -a "$have_struct_tz" = "yes"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday() gives timezone" >&5
@@ -26093,12 +26817,15 @@ $as_echo "no" >&6; }
    fi
 fi
 
+## ----------------------------------------------------------------------
+## Does the struct stat have the st_blocks field?  This field is not Posix.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_blocks in struct stat" >&5
 $as_echo_n "checking for st_blocks in struct stat... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <sys/stat.h>
+  #include <sys/stat.h>
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -26119,7 +26846,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_STAT_ST_BLOCKS 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26127,6 +26854,9 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## ----------------------------------------------------------------------
+## How do we figure out the width of a tty in characters?
+##
 for ac_func in _getvideoconfig gettextinfo GetConsoleScreenBufferInfo
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -26177,7 +26907,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_STRUCT_VIDEOCONFIG 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26210,7 +26940,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_STRUCT_TEXT_INFO 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26243,7 +26973,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_TIOCGWINSZ 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26276,7 +27006,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_TIOCGETD 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26285,6 +27015,9 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
+## ----------------------------------------------------------------------
+## Check for functions.
+##
 for ac_func in alarm BSDgettimeofday fork frexpf frexpl
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -26358,6 +27091,9 @@ fi
 done
 
 
+## Check for vsnprintf() separately, so we can detect situations where it
+## doesn't return the correct size for formatted strings that are too large
+## for the buffer provided
 for ac_func in vsnprintf
 do :
   ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
@@ -26365,7 +27101,18 @@ if test "x$ac_cv_func_vsnprintf" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_VSNPRINTF 1
 _ACEOF
-                                             { $as_echo "$as_me:${as_lineno-$LINENO}: checking if vsnprintf returns correct value" >&5
+ ## Check if vsnprintf() returns correct size for strings that don't fit
+    ## into the size allowed.  If vsnprintf() works correctly on this platform,
+    ## it should return a value of 42 for the test below
+    ##
+    ## Note that vsnprintf fails in two different ways:
+    ##         - In IRIX64, calls to vnsprintf() with a formatted string that
+    ##                 is larger than the buffer size allowed incorrectly
+    ##                 return the size of the buffer minus one.
+    ##         - In HP/UX, calls to vsnprintf() with a formatted string that
+    ##                 is larger than the buffer size allowed incorrectly
+    ##                 return (-1)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if vsnprintf returns correct value" >&5
 $as_echo_n "checking if vsnprintf returns correct value... " >&6; }
 
     if ${hdf5_cv_vsnprintf_works+:} false; then :
@@ -26430,6 +27177,11 @@ fi
 done
 
 
+## ----------------------------------------------------------------------
+## Check that a lone colon can be used as an argument
+## This is not true on Cray X1, which interprets a lone colon as a
+## system command.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lone colon can be used as an argument" >&5
 $as_echo_n "checking if lone colon can be used as an argument... " >&6; }
 if ${hdf5_cv_lone_colon+:} false; then :
@@ -26457,6 +27209,9 @@ $as_echo "$hdf5_cv_lone_colon" >&6; }
 
  H5_LONE_COLON="$hdf5_cv_lone_colon"
 
+## ----------------------------------------------------------------------
+## Check compiler characteristics
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
 $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
 if ${ac_cv_c_const+:} false; then :
@@ -26476,11 +27231,11 @@ else
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
+
 #ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
+  /* Ultrix mips cc rejects this sort of thing.  */
   typedef int charset[2];
-  const charset cs;
+  const charset cs = { 0, 0 };
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *pcpcc;
   char **ppc;
@@ -26497,8 +27252,9 @@ main ()
   ++pcpcc;
   ppc = (char**) pcpcc;
   pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
@@ -26514,10 +27270,10 @@ main ()
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this saying
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
@@ -26613,13 +27369,14 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_ATTRIBUTE 1" >>confdefs.h
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __func__ extension" >&5
 $as_echo_n "checking for __func__ extension... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -26645,7 +27402,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_C99_FUNC 1" >>confdefs.h
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26668,7 +27425,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 int
 main ()
 {
-(void)__FUNCTION__
+ const char *fname = __FUNCTION__;
   ;
   return 0;
 }
@@ -26677,7 +27434,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_FUNCTION 1" >>confdefs.h
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26717,7 +27474,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_C99_DESIGNATED_INITIALIZER 1" >>confdefs.h
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -26725,12 +27482,21 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+## ----------------------------------------------------------------------
+## Try to figure out how to print `long long'.  Some machines use `%lld'
+## and others use `%qd'.  There may be more!  The final `l' is a
+## default in case none of the others work.
+## Need to patch up LD_LIBRARY_PATH so that the execution can find all
+## the dynamic library.  The correct way to do it should be updating
+## LD_LIBRARY_PATH along with LDFLAGS or do it with the AC_TRY_RUN macro.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print long long" >&5
 $as_echo_n "checking how to print long long... " >&6; }
 if ${hdf5_cv_printf_ll+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo $AM_LDFLAGS $LDFLAGS | sed -e 's/-L/:/g' -e 's/ //g'`"
+
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo $AM_LDFLAGS $LDFLAGS | sed -e 's/-L/:/g' -e 's/ //g'`"
 export LD_LIBRARY_PATH
 
 for hdf5_cv_printf_ll in l ll L q unknown; do
@@ -26740,17 +27506,17 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+     #include <stdio.h>
+     #include <stdlib.h>
+     #include <string.h>
 
-int main(void)
-{
+     int main(void)
+     {
 	char *s = malloc(128);
 	long long x = (long long)1048576 * (long long)1048576;
 	sprintf(s,"%${hdf5_cv_printf_ll}d",x);
 	exit(strcmp(s,"1099511627776"));
-}
+     }
 
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
@@ -26763,6 +27529,7 @@ fi
 done
 fi
 
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: %${hdf5_cv_printf_ll}d and %${hdf5_cv_printf_ll}u" >&5
 $as_echo "%${hdf5_cv_printf_ll}d and %${hdf5_cv_printf_ll}u" >&6; }
 
@@ -26771,6 +27538,10 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+## ----------------------------------------------------------------------
+## Check if pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM)
+## is supported on this system
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Threads support system scope" >&5
 $as_echo_n "checking Threads support system scope... " >&6; }
 if ${hdf5_cv_system_scope_threads+:} false; then :
@@ -26785,20 +27556,20 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <pthread.h>
-#endif
+    #if STDC_HEADERS
+    #include <stdlib.h>
+    #include <pthread.h>
+    #endif
 
-int main(void)
-{
-    pthread_attr_t attribute;
-    int ret;
+    int main(void)
+    {
+      pthread_attr_t attribute;
+      int ret;
 
-    pthread_attr_init(&attribute);
-    ret=pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
-    exit(ret==0 ? 0 : 1);
-}
+      pthread_attr_init(&attribute);
+      ret=pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
+      exit(ret==0 ? 0 : 1);
+    }
 
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
@@ -26824,6 +27595,9 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Checking to see if GPFS is available on this filesystem
+##
 # Check whether --enable-gpfs was given.
 if test "${enable_gpfs+set}" = set; then :
   enableval=$enable_gpfs;
@@ -26866,14 +27640,14 @@ if ac_fn_c_try_compile "$LINENO"; then :
 
 $as_echo "#define HAVE_GPFS 1" >>confdefs.h
 
-                                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+                                       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                                    LIBS="$LIBS -lgpfs"
-                                    GPFS="yes"
+                                       LIBS="$LIBS -lgpfs"
+                                       GPFS="yes"
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-                                    GPFS="no"
+                                       GPFS="no"
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
@@ -26889,6 +27663,10 @@ $as_echo "suppressed" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Turn on debugging by setting compiler flags
+## This must come after the enable-production since it depends on production.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for debug flags" >&5
 $as_echo_n "checking for debug flags... " >&6; }
 # Check whether --enable-debug was given.
@@ -26897,6 +27675,7 @@ if test "${enable_debug+set}" = set; then :
 fi
 
 
+## Default to no if producton is enabled
 if test "X-$DEBUG_PKG" = X- ; then
     if test "$enable_production" = yes ; then
 	DEBUG_PKG=no
@@ -26938,6 +27717,9 @@ if test -n "$DEBUG_PKG"; then
   done
 fi
 
+## ----------------------------------------------------------------------
+## Check if they would like the function stack support compiled in
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function stack tracking is enabled" >&5
 $as_echo_n "checking whether function stack tracking is enabled... " >&6; }
 # Check whether --enable-codestack was given.
@@ -26962,6 +27744,9 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Check if they would like the metadata trace file code compiled in
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether metadata trace file code is enabled" >&5
 $as_echo_n "checking whether metadata trace file code is enabled... " >&6; }
 # Check whether --enable-metadata-trace-file was given.
@@ -26986,6 +27771,10 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Enable tracing of the API
+## This must come after the enable-debug since it depends on debug.
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for API tracing" >&5
 $as_echo_n "checking for API tracing... " >&6; };
@@ -26995,6 +27784,7 @@ if test "${enable_trace+set}" = set; then :
 fi
 
 
+## Default to no if debug is disabled
 if test "X-$TRACE" = X- ; then
   if test -z "$DEBUG_PKG" ; then
     TRACE=no
@@ -27018,6 +27808,10 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Enable instrumenting of the library's internal operations
+## This must come after the enable-debug since it depends on debug.
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for instrumented library" >&5
 $as_echo_n "checking for instrumented library... " >&6; };
@@ -27027,6 +27821,7 @@ if test "${enable_instrument+set}" = set; then :
 fi
 
 
+## Default to no if debug is disabled
 if test "X-$INSTRUMENT" = X- ; then
   if test -z "$DEBUG_PKG" ; then
     INSTRUMENT=no
@@ -27051,6 +27846,10 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Check if they would like to securely clear file buffers before they are
+##     written.
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to clear file buffers" >&5
 $as_echo_n "checking whether to clear file buffers... " >&6; }
@@ -27076,6 +27875,12 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Check if they would like to use a memory checking tool (like valgrind's
+##     'memcheck' tool, or Rational Purify, etc) and the library should be
+##     more scrupulous with it's memory operations.  Enabling this also
+##     disables the library's free space manager code.
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a memory checking tool will be used" >&5
 $as_echo_n "checking whether a memory checking tool will be used... " >&6; }
@@ -27101,6 +27906,7 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## Checkpoint the cache
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -27187,24 +27993,40 @@ $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
 fi
 rm -f confcache
 
+## What header files and libraries do we have to look for for parallel
+## support?  For the most part, search paths are already specified with
+## CPPFLAGS and LDFLAGS or are known to the compiler.  If the user says
+## `--disable-parallel' but specifies a known parallel compiler (like mpicc
+## or mpcc) then parallel support is enabled but configure doesn't search
+## for any parallel header files or libraries.
+##
 # Check whether --enable-parallel was given.
 if test "${enable_parallel+set}" = set; then :
   enableval=$enable_parallel;
 fi
 
 
+## The --enable-parallel flag is not compatible with --enable-cxx.
+## If the user tried to specify both flags, throw an error, unless
+## they also provided the --enable-unsupported flag.
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   if test "X${HDF_CXX}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
     as_fn_error $? "--enable-cxx and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error." "$LINENO" 5
   fi
 fi
 
+## --enable-parallel is also incompatible with --enable-threadsafe, unless
+## --enable-unsupported has been specified on the configure line.
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   if test "X${THREADSAFE}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
     as_fn_error $? "--enable-threadsafe and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error." "$LINENO" 5
   fi
 fi
 
+## It's possible to build in parallel by specifying a parallel compiler
+## without using the --enable-parallel flag.  This isn't allowed with
+## C++ or threadsafe, either, unless the --enable-unsupported flag
+## has also been specified.
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   if test "X${PARALLEL}" != "X" -a "X${enable_cxx}" = "Xyes" ; then
     as_fn_error $? "An MPI compiler is being used; --enable-cxx is not allowed. Use --enable-unsupported to override this error." "$LINENO" 5
@@ -27218,16 +28040,23 @@ fi
 $as_echo_n "checking for parallel support files... " >&6; }
 case "X-$enable_parallel" in
   X-|X-no|X-none)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped" >&5
+    ## Either we are not compiling for parallel or the header and
+    ## library files and locations are known to the compiler (this is
+    ## the case for a correct installation of mpicc for instance).
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped" >&5
 $as_echo "skipped" >&6; }
     ;;
 
   X-yes)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: provided by compiler" >&5
+    ## We want to compile a parallel library with a compiler that
+    ## may already know how to link with MPI and MPI-IO.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: provided by compiler" >&5
 $as_echo "provided by compiler" >&6; }
     PARALLEL=yes
 
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+    ## Try link a simple MPI program.  If fail, try again with -lmpi and
+    ## -lmpich.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -27249,8 +28078,7 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
 
 else
-  \
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; }
 if ${ac_cv_lib_mpi_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -27302,8 +28130,7 @@ _ACEOF
   LIBS="-lmpi $LIBS"
 
 else
-  \
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; }
 if ${ac_cv_lib_mpich_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -27364,7 +28191,9 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 
-            if test "X$PARALLEL" = "Xyes"; then
+    ## Then try link a simple MPI-IO program. If fail, try again with
+    ## -lmpio.
+    if test "X$PARALLEL" = "Xyes"; then
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -27448,13 +28277,15 @@ rm -f core conftest.err conftest.$ac_objext \
     fi
 
     if test "X$HDF_FORTRAN" = "Xyes"; then
-            ac_ext=${ac_fc_srcext-f}
+      ## Change to the Fortran 90 language
+      ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
 
-            cat > conftest.$ac_ext <<_ACEOF
+      ## Try link a simple MPI program.  If fail, try again with -lmpi.
+      cat > conftest.$ac_ext <<_ACEOF
 
           program main
           include 'mpif.h'
@@ -27517,7 +28348,9 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 
-                  if test "X$PARALLEL" = "Xyes"; then
+      ## Then try link a simple MPI-IO program.  If fail, try again with
+      ## -lmpio.
+      if test "X$PARALLEL" = "Xyes"; then
         cat > conftest.$ac_ext <<_ACEOF
 
             program main
@@ -27582,7 +28415,8 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
       fi
 
-            ac_ext=c
+      ## Change to the C language
+      ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
@@ -27590,8 +28424,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
     fi
 
-                if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
-          	for path in `echo $PATH | ${TR} ":" " "`; do
+    ## Set RUNPARALLEL to mpiexec if not set yet.
+    ## Check for building on Cray if RUNPARALLEL is not yet set by checking
+    ## for 'aprun' command (which is the parallel job launcher, like mpiexec).
+    if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
+        ## Find the path where aprun is located.
+  	for path in `echo $PATH | ${TR} ":" " "`; do
   	  if test -x $path/aprun; then
             RUNPARALLEL="aprun -q -n \$\${NPROCS:=6}"
   	    break;
@@ -27599,7 +28437,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 	done
     fi
 
-        if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
+    ## Set RUNPARALLEL to mpiexec if not set yet.
+    if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
       RUNPARALLEL="mpiexec -n \$\${NPROCS:=6}"
     fi
     ;;
@@ -27611,16 +28450,22 @@ $as_echo "error" >&6; }
     ;;
 esac
 
+## ----------------------------------------------------------------------
+## Print some other parallel information and do some sanity checks.
+##
  ADD_PARALLEL_FILES="no"
 
 if test -n "$PARALLEL"; then
-    TESTPARALLEL=testpar
+  ## The 'testpar' directory should participate in the build
+  TESTPARALLEL=testpar
 
+  ## We are building a parallel library
 
 $as_echo "#define HAVE_PARALLEL 1" >>confdefs.h
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking prefix for running on one processor" >&5
+  ## Display what we found about running programs
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking prefix for running on one processor" >&5
 $as_echo_n "checking prefix for running on one processor... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUNSERIAL" >&5
 $as_echo "$RUNSERIAL" >&6; }
@@ -27629,7 +28474,8 @@ $as_echo_n "checking prefix for running in parallel... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUNPARALLEL" >&5
 $as_echo "$RUNPARALLEL" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a simple MPI-IO program can be linked" >&5
+  ## Check that we can link a simple MPI and MPI-IO application
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a simple MPI-IO program can be linked" >&5
 $as_echo_n "checking whether a simple MPI-IO program can be linked... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -27661,11 +28507,15 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 
-      if test -z "$RUNPARALLEL"; then
+  ## There *must* be some way to run in parallel even if it's just the
+  ## word `none'.
+  if test -z "$RUNPARALLEL"; then
     as_fn_error $? "no way to run a parallel program" "$LINENO" 5
   fi
 
-      if test "X$RUNSERIAL" = "Xnone"; then
+  ## If RUNSERIAL or RUNPARALLEL is the word `none' then replace it with
+  ## the empty string.
+  if test "X$RUNSERIAL" = "Xnone"; then
     RUNSERIAL=""
   fi
   if test "X$RUNPARALLEL" = "Xnone"; then
@@ -27746,7 +28596,13 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   fi
 
-              MPE=yes
+  ## --------------------------------------------------------------------
+  ## Do we want MPE instrumentation feature on?
+  ##
+  ## This must be done after enable-parallel is checked since it depends
+  ## on a mpich compiler.
+  ##
+  MPE=yes
 
 # Check whether --with-mpe was given.
 if test "${with_mpe+set}" = set; then :
@@ -27904,7 +28760,9 @@ fi
           ;;
       esac
 
-                  if test "X$mpe_inc" = "X/usr/include"; then
+      ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+      ## can mess some compilers up.
+      if test "X$mpe_inc" = "X/usr/include"; then
         mpe_inc=""
       fi
       if test "X$mpe_lib" = "X/usr/lib"; then
@@ -28184,7 +29042,13 @@ $as_echo "#define HAVE_MPE 1" >>confdefs.h
 
   fi
 
-              { $as_echo "$as_me:${as_lineno-$LINENO}: checking if MPI_File_set_size works for files over 2GB" >&5
+  ## ----------------------------------------------------------------------
+  ## Set the flag to indicate that the MPI_File_set_size() function
+  ## works with files over 2GB, unless it's already set in the cache.
+  ## (This flag should be set for all machines, except for ASCI Red, where
+  ## the cache value is set in it's config file)
+  ##
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if MPI_File_set_size works for files over 2GB" >&5
 $as_echo_n "checking if MPI_File_set_size works for files over 2GB... " >&6; }
   if ${hdf5_cv_mpi_file_set_size_big+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -28204,7 +29068,14 @@ $as_echo "yes" >&6; }
 $as_echo "no" >&6; }
   fi
 
-                # Check whether --enable-mpi-size was given.
+  ## ----------------------------------------------------------------------
+  ## Set the flag to indicate that the MPI_File_get_size() function
+  ## works.  The default is enabled unless the user knows the function
+  ## doesn't work on the system and disables it.  (This flag should be set
+  ## for all machines except for SGI Altix Propack 4 where the function
+  ## doesn't return correct file size.)
+  ##
+  # Check whether --enable-mpi-size was given.
 if test "${enable_mpi_size+set}" = set; then :
   enableval=$enable_mpi_size; MPI_GET_SIZE=$enableval
 fi
@@ -28231,6 +29102,14 @@ $as_echo "#define HAVE_MPI_GET_SIZE 1" >>confdefs.h
   esac
 fi
 
+## ----------------------------------------------------------------------
+## Turn on internal I/O filters by setting macros in header files
+## Internal I/O filters are contained entirely within the library and do
+## not depend on external headers or libraries.  The shuffle filter is
+## an example of an internal filter, while the gzip filter is an example of
+## an external filter.  Each external filter is controlled with an
+## "--with-foo=" configure flag.
+##
 
  USE_FILTER_SHUFFLE="no"
  USE_FILTER_FLETCHER32="no"
@@ -28244,6 +29123,7 @@ if test "${enable_filters+set}" = set; then :
 fi
 
 
+## Eventually: all_filters="shuffle,foo,bar,baz"
 all_filters="shuffle,fletcher32,nbit,scaleoffset"
 case "X-$FILTERS" in
   X-|X-all)
@@ -28264,7 +29144,11 @@ esac
 
 if test -n "$FILTERS"; then
   for filter in `echo $FILTERS | tr ${as_cr_letters}',' ${as_cr_LETTERS}' '`; do
-                    if test $filter = "SHUFFLE"; then
+    ## ------------------------------------------------------------------
+    ## Have to use separate 'if' construct for each filter, so that
+    ## autoheader can detect the AC_DEFINE for each one...
+    ##
+    if test $filter = "SHUFFLE"; then
 
 $as_echo "#define HAVE_FILTER_SHUFFLE 1" >>confdefs.h
 
@@ -28291,12 +29175,19 @@ $as_echo "#define HAVE_FILTER_SCALEOFFSET 1" >>confdefs.h
   done
 fi
 
+## ----------------------------------------------------------------------
+## This is defined only when we're using CodeWarrior, since it has a
+## broken "open()" call.
+#
 if test 1 = 2; then
 
 $as_echo "#define NO_SHARED_WRITING 1" >>confdefs.h
 
 fi
 
+## --------------------------------------------------------------------------
+## Should the Default Virtual File Driver be compiled?
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Default Virtual File Driver definition" >&5
 $as_echo_n "checking for Default Virtual File Driver definition... " >&6; }
@@ -28333,6 +29224,9 @@ _ACEOF
 
 fi
 
+## ----------------------------------------------------------------------
+## Check if Direct I/O driver is enabled by --enable-direct-vfd
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Direct Virtual File Driver support" >&5
 $as_echo_n "checking for Direct Virtual File Driver support... " >&6; }
@@ -28361,7 +29255,6 @@ else
 	  #include <sys/types.h>
 	  #include <sys/stat.h>
 	  #include <fcntl.h>
-	  #include <stdlib.h>
           int main(void)
           {
              int fid;
@@ -28434,6 +29327,12 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## Decide whether the presence of user's exception handling functions is
+## checked and data conversion exceptions are returned.  This is mainly
+## for the speed optimization of hard conversions.  Soft conversions can
+## actually benefit little.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether exception handling functions is checked during data conversions" >&5
 $as_echo_n "checking whether exception handling functions is checked during data conversions... " >&6; }
 # Check whether --enable-dconv-exception was given.
@@ -28455,6 +29354,12 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Decide whether the data accuracy has higher priority during data
+## conversions.  If not, some hard conversions will still be prefered even
+## though the data may be wrong (for example, some compilers don't
+## support denormalized floating values) to maximize speed.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether data accuracy is guaranteed during data conversions" >&5
 $as_echo_n "checking whether data accuracy is guaranteed during data conversions... " >&6; }
 # Check whether --enable-dconv-accuracy was given.
@@ -28476,6 +29381,12 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can handle converting
+## denormalized floating-point values.
+## (This flag should be set for all machines, except for the Crays, where
+## the cache value is set in it's config file)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if converting denormalized floating-point values is possible" >&5
 $as_echo_n "checking if converting denormalized floating-point values is possible... " >&6; }
 if ${hdf5_cv_convert_denormal_float+:} false; then :
@@ -28496,6 +29407,12 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can handle converting
+## floating-point to long long values.
+## (This flag should be _unset_ for all machines, except for Windows, where
+## it's set in the custom Windows H5pubconf.h file)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if converting floating-point values to long long is not working" >&5
 $as_echo_n "checking if converting floating-point values to long long is not working... " >&6; }
 if ${hdf5_cv_convert_float_llong_not_works+:} false; then :
@@ -28516,6 +29433,12 @@ else
 $as_echo "false" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine has window style pathname,
+## that is, "drive-letter:\" (e.g. "C:") or "drive-letter:/" (e.g. "C:/").
+## (This flag should be _unset_ for all machines, except for Windows, where
+## it's set in the custom Windows H5pubconf.h file)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the machine has window style path name" >&5
 $as_echo_n "checking if the machine has window style path name... " >&6; }
 
@@ -28533,6 +29456,13 @@ $as_echo "no" >&6; }
     ;;
 esac
 
+## -----------------------------------------------------------------------
+## Set flag to indicate that the machine can handle conversion from
+## long double to integers accurately.  This flag should be set "yes" for
+## all machines except all SGIs.  For SGIs, some conversions are
+## incorrect and its cache value is set "no" in its config/irix6.x and
+## irix5.x.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if converting from long double to integers is accurate" >&5
 $as_echo_n "checking if converting from long double to integers is accurate... " >&6; }
 
@@ -28558,6 +29488,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## -----------------------------------------------------------------------
+## Set flag to indicate that the machine can do conversion from
+## long double to integers regardless of accuracy.  This flag should be
+## set "yes" for all machines except HP-UX 11.00.  For HP-UX 11.00, the
+## compiler has 'floating exception' when converting 'long double' to all
+## integers except 'unsigned long long'.  Other HP-UX systems are unknown
+## yet. (1/8/05 - SLU)
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if converting from long double to integers works" >&5
 $as_echo_n "checking if converting from long double to integers works... " >&6; }
@@ -28624,6 +29561,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## -----------------------------------------------------------------------
+## Set flag to indicate that the machine can handle conversion from
+## integers to long double.  (This flag should be set "yes" for all
+## machines except all SGIs, where some conversions are
+## incorrect and its cache value is set "no" in its config/irix6.x and
+## irix5.x)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if accurately converting from integers to long double" >&5
 $as_echo_n "checking if accurately converting from integers to long double... " >&6; }
 
@@ -28649,6 +29593,14 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'unsigned long' to 'float' values.
+## (This flag should be set for all machines, except for Pathscale compiler
+## on Sandia's Linux machine where the compiler interprets 'unsigned long'
+## values as negative when the first bit of 'unsigned long' is on during
+## the conversion to float.)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if accurately converting unsigned long to float values" >&5
 $as_echo_n "checking if accurately converting unsigned long to float values... " >&6; }
 
@@ -28717,6 +29669,14 @@ $as_echo "no" >&6; }
 fi
 
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'unsigned (long) long' values to 'float' and 'double' values.
+## (This flag should be set for all machines, except for the SGIs, where
+## the cache value is set in the config/irix6.x config file) and Solaris
+## 64-bit machines, where the short program below tests if round-up is
+## correctly handled.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if accurately converting unsigned long long to floating-point values" >&5
 $as_echo_n "checking if accurately converting unsigned long long to floating-point values... " >&6; }
 
@@ -28824,6 +29784,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'float' or 'double' to 'unsigned long long' values.
+## (This flag should be set for all machines, except for PGI compiler
+## where round-up happens when the fraction of float-point value is greater
+## than 0.5.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if accurately roundup converting floating-point to unsigned long long values" >&5
 $as_echo_n "checking if accurately roundup converting floating-point to unsigned long long values... " >&6; }
 
@@ -28880,6 +29847,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'float', 'double' or 'long double' to 'unsigned long long' values.
+## (This flag should be set for all machines, except for HP-UX machines
+## where the maximal number for unsigned long long is 0x7fffffffffffffff
+## during conversion.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if right maximum converting floating-point to unsigned long long values" >&5
 $as_echo_n "checking if right maximum converting floating-point to unsigned long long values... " >&6; }
 
@@ -28943,6 +29917,11 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'long double' to 'unsigned int' values.  (This flag should be set for
+## all machines, except for some Intel compilers on some Linux.)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if correctly converting long double to unsigned int values" >&5
 $as_echo_n "checking if correctly converting long double to unsigned int values... " >&6; }
 
@@ -29000,6 +29979,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can _compile_
+## 'unsigned long long' to 'float' and 'double' typecasts.
+## (This flag should be set for all machines, except for under Windows when
+## compiled with Visual Studio 6, where the macro value is set in the
+## src/H5pubconf.h file)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiling unsigned long long to floating-point typecasts work" >&5
 $as_echo_n "checking if compiling unsigned long long to floating-point typecasts work... " >&6; }
 if ${hdf5_cv_ullong_to_fp_cast_works+:} false; then :
@@ -29020,6 +30006,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can _compile_
+## 'long long' to 'float' and 'double' typecasts.
+## (This flag should be set for all machines, except for under Windows when
+## compiled with Visual Studio 6, where the macro value is set in the
+## src/H5pubconf.h file)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiling long long to floating-point typecasts work" >&5
 $as_echo_n "checking if compiling long long to floating-point typecasts work... " >&6; }
 if ${hdf5_cv_llong_to_fp_cast_works+:} false; then :
@@ -29040,6 +30033,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can convert from
+## 'unsigned long long' to 'long double' without precision loss.
+## (This flag should be set for all machines, except for FreeBSD(sleipnir)
+## where the last 2 bytes of mantissa are lost when compiler tries to do
+## the conversion, and Cygwin where compiler doesn't do rounding correctly.)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if converting unsigned long long to long double with precision" >&5
 $as_echo_n "checking if converting unsigned long long to long double with precision... " >&6; }
 
@@ -29157,6 +30157,13 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can handle overflow converting
+## all floating-point to all integer types.
+## (This flag should be set for all machines, except for Cray X1 where
+## floating exception is generated when the floating-point value is greater
+## than the maximal integer value).
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if overflows normally converting floating-point to integer values" >&5
 $as_echo_n "checking if overflows normally converting floating-point to integer values... " >&6; }
 
@@ -29207,6 +30214,15 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine is using a special algorithm to convert
+## 'long double' to '(unsigned) long' values.  (This flag should only be set for
+## the IBM Power6 Linux.  When the bit sequence of long double is
+## 0x4351ccf385ebc8a0bfcc2a3c3d855620, the converted value of (unsigned)long
+## is 0x004733ce17af227f, not the same as the library's conversion to 0x004733ce17af2282.
+## The machine's conversion gets the correct value.  We define the macro and disable
+## this kind of test until we figure out what algorithm they use.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if using special algorithm to convert long double to (unsigned) long values" >&5
 $as_echo_n "checking if using special algorithm to convert long double to (unsigned) long values... " >&6; }
 
@@ -29304,6 +30320,14 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine is using a special algorithm
+## to convert some values of '(unsigned) long' to 'long double' values.
+## (This flag should be off for all machines, except for IBM Power6 Linux,
+## when the bit sequences are 003fff..., 007fff..., 00ffff..., 01ffff...,
+## ..., 7fffff..., the compiler uses a unknown algorithm.  We define a
+## macro and skip the test for now until we know about the algorithm.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if using special algorithm to convert (unsigned) long to long double values" >&5
 $as_echo_n "checking if using special algorithm to convert (unsigned) long to long double values... " >&6; }
 
@@ -29403,6 +30427,15 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'long double' to '(unsigned) long long' values.  (This flag should be set for
+## all machines, except for Mac OS 10.4 and SGI IRIX64 6.5.  When the bit sequence
+## of long double is 0x4351ccf385ebc8a0bfcc2a3c..., the values of (unsigned)long long
+## start to go wrong on these two machines.  Adjusting it higher to
+## 0x4351ccf385ebc8a0dfcc... or 0x4351ccf385ebc8a0ffcc... will make the converted
+## values wildly wrong.  This test detects this wrong behavior and disable the test.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if correctly converting long double to (unsigned) long long values" >&5
 $as_echo_n "checking if correctly converting long double to (unsigned) long long values... " >&6; }
 
@@ -29484,6 +30517,13 @@ $as_echo "no" >&6; }
 fi
 
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## '(unsigned) long long' to 'long double' values.  (This flag should be set for
+## all machines, except for Mac OS 10.4, when the bit sequences are 003fff...,
+## 007fff..., 00ffff..., 01ffff..., ..., 7fffff..., the converted values are twice
+## as big as they should be.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if correctly converting (unsigned) long long to long double values" >&5
 $as_echo_n "checking if correctly converting (unsigned) long long to long double values... " >&6; }
 
@@ -29568,6 +30608,12 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine generates bad code
+## for the H5V_log2_gen() routine in src/H5Vprivate.h
+## (This flag should be set to no for all machines, except for SGI IRIX64,
+## where the cache value is set to yes in it's config file)
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bad code for log2 routine is generated" >&5
 $as_echo_n "checking if bad code for log2 routine is generated... " >&6; }
 if ${hdf5_cv_bad_log2_code_generated+:} false; then :
@@ -29588,19 +30634,28 @@ else
 $as_echo "no" >&6; }
 fi
 
+## ----------------------------------------------------------------------
+## Set some variables for general configuration information to be saved
+## and installed with the libraries.
+##
 
+## HDF5 version from the first line of the README.txt file.
 H5_VERSION="`cut -d' ' -f3 $srcdir/README.txt | head -1`"
 
 
+## Configuration date
  CONFIG_DATE="`date`"
 
+## User doing the configuration
  CONFIG_USER="`whoami`@`hostname`"
 if test -n "$ORGANIZATION"; then
   CONFIG_USER="$CONFIG_USER at $ORGANIZATION"
 fi
 
+## Configuration mode (production, development, profile, etc) saved above.
 
 
+## Byte sex from the AC_C_BIGENDIAN macro.
 
 if test "X$ac_cv_c_bigendian" = "Xyes"; then
   BYTESEX="big-endian"
@@ -29616,9 +30671,13 @@ else
 fi
 
 
+## Parallel support? (set above except empty if none)
 PARALLEL=${PARALLEL:-no}
 
+## Compiler with version information. This consists of the full path
+## name of the compiler and the reported version number.
 
+## Strip anything that looks like a flag off of $CC
 CC_NOFLAGS=`echo $CC | sed 's/ -.*//'`
 
 if `echo $CC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -29637,6 +30696,7 @@ if test -n "$cc_version_info"; then
 fi
 
 
+## Strip anything that looks like a flag off of $CC
 FC_NOFLAGS=`echo $FC | sed 's/ -.*//'`
 
 if `echo $FC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -29655,6 +30715,7 @@ if test -n "$fc_version_info"; then
 fi
 
 
+## Strip anything that looks like a flag off of $CC
 CXX_NOFLAGS=`echo $CXX | sed 's/ -.*//'`
 
 if `echo $CXX_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -29672,6 +30733,12 @@ if test -n "$cxx_version_info"; then
   CXX_VERSION="$CXX_VERSION ( $cxx_version_info)"
 fi
 
+## ----------------------------------------------------------------------
+## Where is the root of the source tree. Give an absolute address so
+## we can find it no matter which directory of the distribution is our
+## current directory. The built-in pwd fails on some systems, but the
+## /bin/pwd version works OK.
+##
 if test -x /bin/pwd; then
   pwd=/bin/pwd
 else
@@ -29679,8 +30746,16 @@ else
 fi
  ROOT="`$pwd`"
 
+## ----------------------------------------------------------------------
+## Move any compiler-specific libraries into the main LIBS varaible.
+##
 LIBS="$DEFAULT_LIBS $LIBS"
 
+## ----------------------------------------------------------------------
+## Determine the runtime libraries we may need to include in the
+## libtools command so that executables will find the correct dynamic
+## libraries.
+##
  DYNAMIC_DIRS=""
 
 if test -n "$AM_LDFLAGS $LDFLAGS"; then
@@ -29690,7 +30765,9 @@ if test -n "$AM_LDFLAGS $LDFLAGS"; then
         d="`echo $d | sed -e 's/-L//g'`"
         case "$d" in
           .*)
-                                    d=${ROOT}/$d
+            ## If the path isn't absolute, make it so by
+            ## prepending the ROOT directory to it.
+            d=${ROOT}/$d
             ;;
         esac
         DYNAMIC_DIRS="-R${d} $DYNAMIC_DIRS"
@@ -29704,7 +30781,9 @@ if test -n "$AM_CPPFLAGS"; then
   for d in $AM_CPPFLAGS ; do
     case "$d" in
       -I.*)
-                        d="`echo $d | sed -e 's/-I//g'`"
+        ## If the path isn't absolute, make it so by prepending
+        ## the ROOT directory to it.
+        d="`echo $d | sed -e 's/-I//g'`"
         d="-I${ROOT}/${d}"
         ;;
     esac
@@ -29713,9 +30792,12 @@ if test -n "$AM_CPPFLAGS"; then
   AM_CPPFLAGS=$TEMP_CPPFLAGS
 fi
 
+## ----------------------------------------------------------------------
+## Check if they would like the High Level library  compiled
+##
 
  HL=""
-# name of fortran folder inside "hl", if FORTRAN compile is requested
+## name of fortran folder inside "hl", if FORTRAN compile is requested
  HL_FOR=""
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if high level library is enabled" >&5
 $as_echo_n "checking if high level library is enabled... " >&6; }
@@ -29737,6 +30819,11 @@ else
  echo "no"
 fi
 
+## ----------------------------------------------------------------------
+## Some programs shouldn't be built by default (e.g., programs to generate
+## data files used by tests, some optional tests).
+## Check if they want such programs built anyway.
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking additional programs should be built" >&5
 $as_echo_n "checking additional programs should be built... " >&6; }
 # Check whether --enable-build-all was given.
@@ -29761,6 +30848,9 @@ else
 fi
 
 
+## ----------------------------------------------------------------------
+## Enable deprecated public API symbols
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if deprecated public symbols are available" >&5
 $as_echo_n "checking if deprecated public symbols are available... " >&6; };
@@ -29788,6 +30878,9 @@ $as_echo "#define NO_DEPRECATED_SYMBOLS 1" >>confdefs.h
     ;;
 esac
 
+## --------------------------------------------------------------------------
+## Which version of the public APIs should the 'base' versioned symbols use?
+##
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking which version of public symbols to use by default" >&5
@@ -29816,12 +30909,19 @@ else
     as_fn_error $? "invalid version of public symbols given" "$LINENO" 5
 fi
 
+## It's an error to try to disable deprecated public API symbols while
+## choosing an older version of the public API as the default. However,
+## if the user insists on doing this via the --enable-unsupported configure
+## flag, we'll let them.
 if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
   if test "X${DEFAULT_API_VERSION}" != "Xv18" -a "X${DEPRECATED_SYMBOLS}" = "Xno" ; then
     as_fn_error $? "Removing old public API symbols not allowed when using them as default public API symbols. Use --enable-unsupported to override this error." "$LINENO" 5
   fi
 fi
 
+## ----------------------------------------------------------------------
+## Enable strict file format checks
+##
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Whether to perform strict file format checks" >&5
 $as_echo_n "checking Whether to perform strict file format checks... " >&6; };
@@ -29831,6 +30931,7 @@ if test "${enable_strict_format_checks+set}" = set; then :
 fi
 
 
+## Default to yes if debug is enabled
 if test "X-$STRICT_CHECKS" = X- ; then
   if test -z "$DEBUG_PKG" ; then
     STRICT_CHECKS=no
@@ -29856,6 +30957,9 @@ $as_echo "no" >&6; }
 esac
 
 
+## ----------------------------------------------------------------------
+## Enable embedded library information
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Whether to have library information embedded in the executables" >&5
 $as_echo_n "checking Whether to have library information embedded in the executables... " >&6; }
 # Check whether --enable-embedded-libinfo was given.
@@ -29878,6 +30982,9 @@ $as_echo "no" >&6; }
     fi
 
 
+## ----------------------------------------------------------------------
+## Check if pointer alignments are enforced
+##
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if alignment restrictions are strictly enforced" >&5
 $as_echo_n "checking if alignment restrictions are strictly enforced... " >&6; }
 if test "$cross_compiling" = yes; then :
@@ -29959,6 +31066,8 @@ fi
 
 
 
+## ----------------------------------------------------------------------
+## Restore user's CFLAGS.
 CFLAGS="$saved_user_CFLAGS"
 FCFLAGS="$saved_user_FCFLAGS"
 CXXFLAGS="$saved_user_CXXFLAGS"
@@ -29966,6 +31075,9 @@ CPPFLAGS="$saved_user_CPPFLAGS"
 LDFLAGS="$saved_user_LDFLAGS"
 
 
+## ----------------------------------------------------------------------
+## Create automake conditionals to tell automake makefiles which directories
+## need to be compiled
 
  if test "X$HDF_CXX" = "Xyes"; then
   BUILD_CXX_CONDITIONAL_TRUE=
@@ -30001,26 +31113,37 @@ fi
 
 
 
+## ----------------------------------------------------------------------
+## Build the Makefiles.
+##
 
+## The directory search list
  SEARCH='$(srcdir) $(top_builddir)/src $(top_srcdir)/src'
 cmd='echo $SEARCH |sed "s/ /'$SEARCH_SEP'/g"'
 SEARCH="$SEARCH_RULE`eval $cmd`"
 export SEARCH
 
+## We don't need to say when we're entering directories if we're using
+## GNU make because make does it for us.
 if test "X$GMAKE" = "Xyes"; then
    SETX=":"
 else
    SETX="set -x"
 fi
 
+## Some cleanup stuff
 rm -f conftest conftest.o conftest.c dummy.o *.mod
 
+## Build config.status, touch the stamp files, and build all the Makefiles.
+## The order is such that the first `make' does not need to update any
+## configuration information. See config/commence.in for the order in which
+## things need to be done.
 
-# First the stamp1 file for H5config.h.in
+## First the stamp1 file for H5config.h.in
 mkdir ./config >/dev/null 2>&1
 touch ./config/stamp1
 
-# Then the config.status file (but not makefiles)
+## Then the config.status file (but not makefiles)
 saved_no_create=$no_create
 no_create=yes
 
@@ -30035,7 +31158,7 @@ if test -n "$TESTPARALLEL"; then
   fi
 fi
 
-ac_config_files="$ac_config_files src/libhdf5.settings Makefile src/Makefile test/Makefile test/testcheck_version.sh test/testerror.sh test/H5srcdir_str.h test/testlibinfo.sh test/testlinks_env.sh testpar/Makefile testpar/testph5.sh perform/Makefile tools/Makefile tools/h5dump/Makefile tools/h5dump/testh5dump.sh tools/h5dump/testh5dumpxml.sh tools/h5ls/testh5ls.sh tools/h5import/Makefile tools/h5diff/Makefile tools/h5jam/Makefile tools/h5jam/testh5jam.sh tools/h5repack/Makefile tools/h5repack/h5repack.sh tools/h5ls/Makefile tools/h5copy/Makefile tools/lib/Makefile tools/misc/Makefile tools/misc/h5cc tools/misc/testh5repart.sh tools/h5stat/testh5stat.sh tools/h5stat/Makefile examples/Makefile examples/run-c-ex.sh examples/testh5cc.sh c++/Makefile c++/src/Makefile c++/src/h5c++ c++/test/Makefile c++/test/H5srcdir_str.h c++/examples/Makefile c++/examples/run-c++-ex.sh c++/examples/testh5c++.sh fortran/Makefile fortran/src/h5fc fortran/src/Makefile fortran/test/Makefile fortran/testpar/Makefile fortran/examples/Makefile fortran/examples/run-fortran-ex.sh fortran/examples/testh5fc.sh hl/Makefile hl/src/Makefile hl/test/Makefile hl/test/H5srcdir_str.h hl/tools/Makefile hl/tools/gif2h5/Makefile hl/examples/Makefile hl/examples/run-hlc-ex.sh hl/c++/Makefile hl/c++/src/Makefile hl/c++/test/Makefile hl/c++/examples/Makefile hl/c++/examples/run-hlc++-ex.sh hl/fortran/Makefile hl/fortran/src/Makefile hl/fortran/test/Makefile hl/fortran/examples/Makefile hl/fortran/examples/run-hlfortran-ex.sh"
+ac_config_files="$ac_config_files src/libhdf5.settings Makefile src/Makefile test/Makefile test/testcheck_version.sh test/testerror.sh test/H5srcdir_str.h test/testlibinfo.sh test/testlinks_env.sh testpar/Makefile testpar/testph5.sh perform/Makefile tools/Makefile tools/h5dump/Makefile tools/h5dump/testh5dump.sh tools/h5dump/testh5dumppbits.sh tools/h5dump/testh5dumpxml.sh tools/h5ls/testh5ls.sh tools/h5import/Makefile tools/h5import/h5importtestutil.sh tools/h5diff/Makefile tools/h5diff/testh5diff.sh tools/h5diff/testph5diff.sh tools/h5jam/Makefile tools/h5jam/testh5jam.sh tools/h5repack/Makefile tools/h5repack/h5repack.sh tools/h5ls/Makefile tools/h5copy/Makefile tools/h5copy/testh5copy.sh tools/lib/Makefile tools/misc/Makefile tools/misc/h5cc tools/misc/testh5mkgrp.sh tools/misc/testh5repart.sh tools/h5stat/testh5stat.sh tools/h5stat/Makefile examples/Makefile examples/run-c-ex.sh examples/testh5cc.sh c++/Makefile c++/src/Makefile c++/src/h5c++ c++/test/Makefile c++/test/H5srcdir_str.h c++/examples/Makefile c++/examples/run-c++-ex.sh c++/examples/testh5c++.sh fortran/Makefile fortran/src/h5fc fortran/src/Makefile fortran/test/Makefile fortran/testpar/Makefile fortran/examples/Makefile fortran/examples/run-fortran-ex.sh fortran/examples/testh5fc.sh hl/Makefile hl/src/Makefile hl/test/Makefile hl/test/H5srcdir_str.h hl/tools/Makefile hl/tools/gif2h5/Makefile hl/tools/gif2h5/h52giftest.sh hl/examples/Makefile hl/examples/run-hlc-ex.sh hl/c++/Makefile hl/c++/src/Makefile hl/c++/test/Makefile hl/c++/examples/Makefile hl/c++/examples/run-hlc++-ex.sh hl/fortran/Makefile hl/fortran/src/Makefile hl/fortran/test/Makefile hl/fortran/examples/Makefile hl/fortran/examples/run-hlfortran-ex.sh"
 
 
 cat >confcache <<\_ACEOF
@@ -30147,6 +31270,14 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -30518,16 +31649,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -30587,28 +31718,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -30629,8 +31748,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by HDF5 $as_me 1.8.9, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by HDF5 $as_me 1.8.10, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -30695,11 +31814,11 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-HDF5 config.status 1.8.9
-configured by $0, generated by GNU Autoconf 2.68,
+HDF5 config.status 1.8.10
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -30790,7 +31909,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -30814,7 +31933,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #
 # INIT-COMMANDS
 #
-
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 
 
@@ -30836,6 +31954,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -30916,7 +32035,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -31014,8 +32132,6 @@ no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quo
 no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_FC='`$ECHO "$hardcode_libdir_flag_spec_ld_FC" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
@@ -31079,6 +32195,7 @@ DLLTOOL \
 OBJDUMP \
 SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -31127,7 +32244,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -31176,8 +32292,6 @@ no_undefined_flag_CXX \
 no_undefined_flag_FC \
 hardcode_libdir_flag_spec_CXX \
 hardcode_libdir_flag_spec_FC \
-hardcode_libdir_flag_spec_ld_CXX \
-hardcode_libdir_flag_spec_ld_FC \
 hardcode_libdir_separator_CXX \
 hardcode_libdir_separator_FC \
 exclude_expsyms_CXX \
@@ -31293,7 +32407,7 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "src/H5config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/H5config.h" ;;
-    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+    "pubconf") CONFIG_COMMANDS="$CONFIG_COMMANDS pubconf" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "src/libhdf5.settings") CONFIG_FILES="$CONFIG_FILES src/libhdf5.settings" ;;
@@ -31311,19 +32425,25 @@ do
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
     "tools/h5dump/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5dump/Makefile" ;;
     "tools/h5dump/testh5dump.sh") CONFIG_FILES="$CONFIG_FILES tools/h5dump/testh5dump.sh" ;;
+    "tools/h5dump/testh5dumppbits.sh") CONFIG_FILES="$CONFIG_FILES tools/h5dump/testh5dumppbits.sh" ;;
     "tools/h5dump/testh5dumpxml.sh") CONFIG_FILES="$CONFIG_FILES tools/h5dump/testh5dumpxml.sh" ;;
     "tools/h5ls/testh5ls.sh") CONFIG_FILES="$CONFIG_FILES tools/h5ls/testh5ls.sh" ;;
     "tools/h5import/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5import/Makefile" ;;
+    "tools/h5import/h5importtestutil.sh") CONFIG_FILES="$CONFIG_FILES tools/h5import/h5importtestutil.sh" ;;
     "tools/h5diff/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5diff/Makefile" ;;
+    "tools/h5diff/testh5diff.sh") CONFIG_FILES="$CONFIG_FILES tools/h5diff/testh5diff.sh" ;;
+    "tools/h5diff/testph5diff.sh") CONFIG_FILES="$CONFIG_FILES tools/h5diff/testph5diff.sh" ;;
     "tools/h5jam/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5jam/Makefile" ;;
     "tools/h5jam/testh5jam.sh") CONFIG_FILES="$CONFIG_FILES tools/h5jam/testh5jam.sh" ;;
     "tools/h5repack/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5repack/Makefile" ;;
     "tools/h5repack/h5repack.sh") CONFIG_FILES="$CONFIG_FILES tools/h5repack/h5repack.sh" ;;
     "tools/h5ls/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5ls/Makefile" ;;
     "tools/h5copy/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5copy/Makefile" ;;
+    "tools/h5copy/testh5copy.sh") CONFIG_FILES="$CONFIG_FILES tools/h5copy/testh5copy.sh" ;;
     "tools/lib/Makefile") CONFIG_FILES="$CONFIG_FILES tools/lib/Makefile" ;;
     "tools/misc/Makefile") CONFIG_FILES="$CONFIG_FILES tools/misc/Makefile" ;;
     "tools/misc/h5cc") CONFIG_FILES="$CONFIG_FILES tools/misc/h5cc" ;;
+    "tools/misc/testh5mkgrp.sh") CONFIG_FILES="$CONFIG_FILES tools/misc/testh5mkgrp.sh" ;;
     "tools/misc/testh5repart.sh") CONFIG_FILES="$CONFIG_FILES tools/misc/testh5repart.sh" ;;
     "tools/h5stat/testh5stat.sh") CONFIG_FILES="$CONFIG_FILES tools/h5stat/testh5stat.sh" ;;
     "tools/h5stat/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5stat/Makefile" ;;
@@ -31352,6 +32472,7 @@ do
     "hl/test/H5srcdir_str.h") CONFIG_FILES="$CONFIG_FILES hl/test/H5srcdir_str.h" ;;
     "hl/tools/Makefile") CONFIG_FILES="$CONFIG_FILES hl/tools/Makefile" ;;
     "hl/tools/gif2h5/Makefile") CONFIG_FILES="$CONFIG_FILES hl/tools/gif2h5/Makefile" ;;
+    "hl/tools/gif2h5/h52giftest.sh") CONFIG_FILES="$CONFIG_FILES hl/tools/gif2h5/h52giftest.sh" ;;
     "hl/examples/Makefile") CONFIG_FILES="$CONFIG_FILES hl/examples/Makefile" ;;
     "hl/examples/run-hlc-ex.sh") CONFIG_FILES="$CONFIG_FILES hl/examples/run-hlc-ex.sh" ;;
     "hl/c++/Makefile") CONFIG_FILES="$CONFIG_FILES hl/c++/Makefile" ;;
@@ -31959,7 +33080,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
 
   case $ac_file$ac_mode in
-    "default-1":C)
+    "pubconf":C)
   echo "creating src/H5pubconf.h"
   sed 's/#define /#define H5_/' <src/H5config.h |\
     sed 's/#undef /#undef H5_/' >pubconf
@@ -31990,7 +33111,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -32024,21 +33145,19 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
     test -z "am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
@@ -32092,8 +33211,8 @@ $as_echo X"$file" |
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -32156,6 +33275,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -32451,10 +33573,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -32797,10 +33915,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
@@ -32954,10 +34068,6 @@ no_undefined_flag=$lt_no_undefined_flag_FC
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_FC
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
 
@@ -33358,16 +34468,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -33427,28 +34537,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -33489,10 +34587,10 @@ Usage: $0 [OPTIONS]
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-HDF5 config.lt 1.8.9
-configured by $0, generated by GNU Autoconf 2.68.
+HDF5 config.lt 1.8.10
+configured by $0, generated by GNU Autoconf 2.69.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -33543,6 +34641,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -33623,7 +34722,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -33721,8 +34819,6 @@ no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quo
 no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_FC='`$ECHO "$hardcode_libdir_flag_spec_ld_FC" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
@@ -33786,6 +34882,7 @@ DLLTOOL \
 OBJDUMP \
 SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -33834,7 +34931,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -33883,8 +34979,6 @@ no_undefined_flag_CXX \
 no_undefined_flag_FC \
 hardcode_libdir_flag_spec_CXX \
 hardcode_libdir_flag_spec_FC \
-hardcode_libdir_flag_spec_ld_CXX \
-hardcode_libdir_flag_spec_ld_FC \
 hardcode_libdir_separator_CXX \
 hardcode_libdir_separator_FC \
 exclude_expsyms_CXX \
@@ -34017,8 +35111,8 @@ $as_echo "$as_me: creating $ofile" >&6;}
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -34081,6 +35175,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -34376,10 +35473,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -34722,10 +35815,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
@@ -34879,10 +35968,6 @@ no_undefined_flag=$lt_no_undefined_flag_FC
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_FC
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
 
@@ -34976,15 +36061,16 @@ $lt_cl_success || as_fn_exit 1
 
 no_create=$saved_no_create
 
-# Then the stamp2 file for H5config.h
+## Then the stamp2 file for H5config.h
 touch ./config/stamp2
 
-# Finally the makefiles
+## Finally the makefiles
 test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
 
+## Post processing to patch up some deficiencies in libtool
 case $host_os in
   linux* | freebsd* )
-    # If gcc is not used, need to set $wl to use "-Wl,"
+    ## If gcc is not used, need to set $wl to use "-Wl,"
     if $CC -v 2>&1 | grep '^gcc' > /dev/null ; then
       : using gcc
     else
@@ -34998,6 +36084,12 @@ EOF
     ;;
 esac
 
+## Are we compiling static libraries, shared libraries, or both?  This
+## is only used for the libhdf5.settings file. We can't just look at
+## $enable_static and $enable_shared because if they're yes the ltconfig
+## might have decided that one or the other is simply not possible.
+## Therefore we have to ask the generated `libtool' shell script
+## which 'features' it has enabled.
 if (./libtool --features | grep '^enable shared libraries' > /dev/null); then
   enable_shared=yes
 else
@@ -35030,6 +36122,9 @@ if test "X$HDF_CXX" = "Xyes"; then
   chmod 755 c++/src/h5c++
 fi
 
+## We don't want inline defined for C++ compilers
+## Don't worry about the C++ ifdef wrappers in the H5pubconf file, since
+## 'H5_inline' isn't a C++ keyword.
 cat >> src/H5config.h <<EOF
 
 #if defined(__cplusplus) && defined(inline)
@@ -35037,4 +36132,5 @@ cat >> src/H5config.h <<EOF
 #endif
 EOF
 
+## show the configure settings
 cat src/libhdf5.settings
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..76a3742
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,4594 @@
+## Process this file with autoconf to produce configure.
+##
+## Copyright by The HDF Group.
+## Copyright by the Board of Trustees of the University of Illinois.
+## All rights reserved.
+##
+## This file is part of HDF5.  The full HDF5 copyright notice, including
+## terms governing use, modification, and redistribution, is contained in
+## the files COPYING and Copyright.html.  COPYING can be found at the root
+## of the source code distribution tree; Copyright.html can be found at the
+## root level of an installed copy of the electronic HDF5 document set and
+## is linked from the top-level documents page.  It can also be found at
+## http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+## access to either file, you may request a copy from help at hdfgroup.org.
+
+## ----------------------------------------------------------------------
+## Initialize configure.
+##
+AC_REVISION($Id: configure.ac 22979 2012-10-27 00:14:40Z acheng $)
+AC_PREREQ([2.69])
+
+## AC_INIT takes the name of the package, the version number, and an
+## email address to report bugs. AC_CONFIG_SRCDIR takes a unique file
+## as its argument.
+##
+## NOTE: Do not forget to change the version number here when we do a
+## release!!!
+##
+AC_INIT([HDF5], [1.8.10], [help at hdfgroup.org])
+AC_CONFIG_SRCDIR([src/H5.c])
+AC_CONFIG_HEADER([src/H5config.h])
+
+AC_CONFIG_AUX_DIR([bin])
+AC_CONFIG_MACRO_DIR([m4])
+
+## AM_INIT_AUTOMAKE takes a list of options that should be applied to
+## every Makefile.am when automake is run.
+AM_INIT_AUTOMAKE([foreign])
+AM_SILENT_RULES([yes])
+
+## AM_MAINTAINER_MODE turns off "rebuild rules" that contain dependencies
+## for Makefiles, configure, src/H5config.h, etc.  If AM_MAINTAINER_MODE
+## is *not* included here, these files will be rebuilt if out of date.
+## This is a problem because if users try to build on a machine with
+## the wrong versions of autoconf and automake, these files will be
+## rebuilt with the wrong versions and bad things can happen.
+## Also, CVS doesn't preserve dependencies between timestamps, so
+## Makefiles will often think rebuilding needs to occur when it doesn't.
+## Developers should './configure --enable-maintainer-mode' to turn on
+## rebuild rules.
+AM_MAINTAINER_MODE
+
+## ----------------------------------------------------------------------
+## Set prefix default (install directory) to a directory in the build area.
+## This allows multiple src-dir builds within one host.
+AC_PREFIX_DEFAULT([`pwd`/hdf5])
+
+## Run post processing on files created by configure.
+## src/H5pubconf.h:
+## Generate src/H5pubconf.h from src/H5config.h by prepending H5_ to all
+## macro names. This avoid name conflict between HDF5 macro names and those
+## generated by another software package that uses the HDF5 library.
+## src/libhdf5.settings:
+## Remove all lines begun with "#" which are generated by CONDITIONAL's of
+## configure.
+AC_CONFIG_COMMANDS([pubconf], [
+  echo "creating src/H5pubconf.h"
+  sed 's/#define /#define H5_/' <src/H5config.h |\
+    sed 's/#undef /#undef H5_/' >pubconf
+  if test ! -f src/H5pubconf.h; then
+    /bin/mv -f pubconf src/H5pubconf.h
+  elif (diff pubconf src/H5pubconf.h >/dev/null); then
+    rm -f pubconf
+    echo "src/H5pubconf.h is unchanged"
+  else
+    /bin/mv -f pubconf src/H5pubconf.h
+  fi
+  echo "Post process src/libhdf5.settings"
+  sed '/^#/d' < src/libhdf5.settings > libhdf5.settings.TMP
+  cp libhdf5.settings.TMP src/libhdf5.settings
+  rm -f libhdf5.settings.TMP
+])
+
+## It's possible to configure for a host other than the one on which
+## configure is currently running by using the --host=foo flag.
+## For machines on which HDF5 is often configured, it can be convenient
+## to specify the name of the machine rather than its canonical type.
+case $host_alias in
+  redstorm)
+    host_alias=x86_64-redstorm-linux-gnu
+    ;;
+esac
+
+AC_CANONICAL_HOST
+AC_SUBST([CPPFLAGS])
+
+## H5_CFLAGS (and company) are for CFLAGS that should be used on HDF5, but
+## not exported to h5cc (or h5fc, etc.)
+AC_SUBST([H5_CFLAGS])
+AC_SUBST([H5_CPPFLAGS])
+AC_SUBST([H5_FCFLAGS])
+AC_SUBST([H5_CXXFLAGS])
+AC_SUBST([H5_LDFLAGS])
+
+## AM_CFLAGS (and company) are for CFLAGS that should be used on HDF5,
+## and WILL be exported to h5cc (or h5fc, etc) if set by configure.
+AC_SUBST([AM_CFLAGS])
+AC_SUBST([AM_FCFLAGS])
+AC_SUBST([AM_CXXFLAGS])
+AC_SUBST([AM_CPPFLAGS])
+AC_SUBST([AM_LDFLAGS])
+
+## Make sure flags are set to something (otherwise macros may set them later).
+AM_CFLAGS="${AM_CFLAGS}"
+AM_CXXFLAGS="${AM_CXXFLAGS}"
+AM_FCFLAGS="${AM_FCFLAGS}"
+AM_CPPFLAGS="${AM_CPPFLAGS}"
+AM_LDFLAGS="${AM_LDFLAGS}"
+CFLAGS="${CFLAGS}"
+CXXFLAGS="${CXXFLAGS}"
+FCFLAGS="${FCFLAGS}"
+CPPFLAGS="${CPPFLAGS}"
+LDFLAGS="${LDFLAGS}"
+
+## Configure may need to alter any of the *FLAGS variables in order for
+## various checks to work correctly. Save the user's value here so it
+## can be restored once all configure checks are complete.
+saved_user_CFLAGS="$CFLAGS"
+saved_user_CXXFLAGS="$CXXFLAGS"
+saved_user_FCFLAGS="$FCFLAGS"
+saved_user_LDFLAGS="$LDFLAGS"
+saved_user_CPPFLAGS="$CPPFLAGS"
+
+## Different compilers may need default libraries. They are specified in
+## the config/* files, so we put this statement here so that it'll be
+## set by the code which follows...
+##
+DEFAULT_LIBS=""
+
+## Support F9X variable to define Fortran compiler if FC variable is
+## not used.  This should be deprecated in the future.
+if test "x" = "x$FC"; then
+  FC=${F9X}
+fi
+
+## ----------------------------------------------------------------------
+## Dump all shell variables values.
+##
+AC_MSG_CHECKING([shell variables initial values])
+set >&AS_MESSAGE_LOG_FD
+AC_MSG_RESULT([done])
+
+## Define all symbol variables used for configure summary.
+## EXTERNAL_FILTERS equals all external filters. Default none.
+## MPE: whether MPE option is enabled. Default no.
+## STATIC_EXEC: whether static-exec is enabled. Default no.
+## HDF_FORTRAN: whether Fortran is enabled. Default no.
+## HDF_FORTRAN2003: whether Fortran 2003 is enabled. Default no.
+## FC: Fortran compiler.
+## HDF_CXX: whether C++ is enabled. Default no.
+## CXX: C++ compiler.
+## HDF5_HL: whether high-level library is enabled. Default is yes.
+## GPFS: whether gpfs is enabled. Default no.
+## LARGEFILE: whether largefile support is enabled. Default yes.
+## INSTRUMENT: whether INSTRUMENT is enabled. No default set here.
+## CODESTACK: whether CODESTACK is enabled. Default no.
+## HAVE_DMALLOC: whether system has dmalloc support. Default no.
+## DIRECT_VFD: whether DIRECT_VFD is enabled. Default no.
+## THREADSAFE: whether THREADSAFE is enabled. Default no.
+## STATIC_SHARED: whether static and/or shared libraries are requested.
+## enable_shared: whether shared lib is enabled.
+## enable_static: whether static lib is enabled.
+## UNAME_INFO: System information.
+
+AC_SUBST([EXTERNAL_FILTERS])
+AC_SUBST([MPE]) MPE=no
+AC_SUBST([STATIC_EXEC]) STATIC_EXEC=no
+AC_SUBST([HDF_FORTRAN]) HDF_FORTRAN=no
+AC_SUBST([HDF_FORTRAN2003]) HDF_FORTRAN2003=no
+AC_SUBST([FC]) HDF_FORTRAN=no
+AC_SUBST([FC2003]) HDF_FORTRAN2003=no
+AC_SUBST([HDF_CXX]) HDF_CXX=no
+AC_SUBST([CXX]) HDF_CXX=no
+AC_SUBST([HDF5_HL]) HDF5_HL=yes
+AC_SUBST([GPFS]) GPFS=no
+AC_SUBST([LARGEFILE]) LARGEFILE=yes
+AC_SUBST([INSTRUMENT])
+AC_SUBST([CODESTACK]) CODESTACK=no
+AC_SUBST([HAVE_DMALLOC]) HAVE_DMALLOC=no
+AC_SUBST([DIRECT_VFD]) DIRECT_VFD=no
+AC_SUBST([THREADSAFE]) THREADSAFE=no
+AC_SUBST([STATIC_SHARED])
+AC_SUBST([enable_shared])
+AC_SUBST([enable_static])
+AC_SUBST([UNAME_INFO]) UNAME_INFO=`uname -a`
+
+## ----------------------------------------------------------------------
+## Some platforms have broken basename, and/or xargs programs. Check
+## that it actually does what it's supposed to do. Catch this early
+## since configure relies upon them heavily and there's no use continuing
+## if it's broken.
+##
+
+## Avoid depending upon Character Ranges.
+## These are defined by autoconf.
+## as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+## as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+AC_MSG_CHECKING([if basename works])
+BASENAME_TEST="`basename /foo/bar/baz/qux/basename_works`"
+if test $BASENAME_TEST != "basename_works"; then
+  AC_MSG_ERROR([basename program doesn't work])
+else
+  AC_MSG_RESULT([yes])
+fi
+
+AC_MSG_CHECKING([if xargs works])
+XARGS_TEST="`echo /foo/bar/baz/qux/xargs_works | xargs basename`"
+if test $XARGS_TEST != "xargs_works"; then
+  AC_MSG_ERROR([xargs program doesn't work])
+else
+  AC_MSG_RESULT([yes])
+fi
+
+## ----------------------------------------------------------------------
+## Check that the cache file was build on the same host as what we're
+## running on now.
+##
+AC_CACHE_CHECK([for cached host], [hdf5_cv_host], [hdf5_cv_host="none"]);
+if test $hdf5_cv_host = "none"; then
+  hdf5_cv_host=$host
+elif test $hdf5_cv_host != $host; then
+  echo "The config.cache file was generated on $hdf5_cv_host but"
+  echo "this is $host.  Please remove that file and try again."
+  AC_MSG_ERROR([config.cache file is invalid])
+fi
+
+## ----------------------------------------------------------------------
+## Source any special files that we need.  These files normally aren't
+## present but can be used by the maintainers to fine tune things like
+## turning on debug or profiling flags for the compiler.  The search order
+## is:
+##
+##	CPU-VENDOR-OS
+##	VENDOR-OS
+##	CPU-OS
+##	CPU-VENDOR
+##	OS
+##	VENDOR
+##	CPU
+##
+## If the `OS' ends with a version number then remove it. For instance,
+## `freebsd3.1' would become `freebsd'
+
+case $host_os in
+  aix*)
+    host_os_novers=aix
+    ;;
+  freebsd*)
+    host_os_novers=freebsd
+    ;;
+  irix5.*)
+    host_os_novers=irix5.x
+    ;;
+  irix6.*)
+    host_os_novers=irix6.x
+    ;;
+  osf4.*)
+    host_os_novers=osf4.x
+    ;;
+  osf5.*)
+    host_os_novers=osf5.x
+    ;;
+  solaris2.*)
+    host_os_novers=solaris2.x
+    ;;
+  *)
+    host_os_novers=$host_os
+    ;;
+esac
+
+host_config="none"
+for f in $host_cpu-$host_vendor-$host_os \
+         $host_cpu-$host_vendor-$host_os_novers \
+         $host_vendor-$host_os \
+         $host_vendor-$host_os_novers \
+         $host_cpu-$host_os \
+         $host_cpu-$host_os_novers \
+         $host_cpu-$host_vendor \
+         $host_os \
+         $host_os_novers \
+         $host_vendor \
+         $host_cpu ; do
+  AC_MSG_CHECKING([for config $f])
+  if test -f "$srcdir/config/$f"; then
+    host_config=$srcdir/config/$f
+    AC_MSG_RESULT([found])
+    break
+  fi
+  AC_MSG_RESULT([no])
+done
+if test "X$host_config" != "Xnone"; then
+  CC_BASENAME="`echo $CC | cut -f1 -d' ' | xargs basename 2>/dev/null`"
+  . $host_config
+fi
+
+## Source any special site-specific file
+hname="`hostname`"
+while test -n "$hname"; do
+  file=$srcdir/config/site-specific/host-$hname
+  AC_MSG_CHECKING([for config $file])
+  if test -f "$file"; then
+    . $file
+    AC_MSG_RESULT([found])
+    break
+  fi
+  AC_MSG_RESULT([no])
+  hname_tmp=$hname
+  hname="`echo $hname | cut -d. -f2-99`"
+  test "$hname_tmp" = "$hname" && break
+done
+
+## ----------------------------------------------------------------------
+## Some built-in configure checks can only see CFLAGS (not AM_CFLAGS), so
+## we need to add this in so configure works as intended. We will need to
+## reset this value at the end of configure, to preserve the user's settings.
+CFLAGS="${AM_CFLAGS} ${CFLAGS}"
+FCFLAGS="${AM_FCFLAGS} ${FCFLAGS}"
+CXXFLAGS="${AM_CXXFLAGS} ${CXXFLAGS}"
+CPPFLAGS="${AM_CPPFLAGS} ${CPPFLAGS}"
+LDFLAGS="${AM_LDFLAGS} ${LDFLAGS}"
+
+## ----------------------------------------------------------------------
+## Enable dependency tracking unless the configure options or a
+## site-specific file told us not to.  This prevents configure from
+## silently disabling dependencies for some compilers.
+##
+if test -z "${enable_dependency_tracking}"; then
+  enable_dependency_tracking="yes"
+fi
+
+## ----------------------------------------------------------------------
+## Check for programs.
+##
+AC_PROG_CC
+CC_BASENAME="`echo $CC | cut -f1 -d' ' | xargs basename 2>/dev/null`"
+
+## ----------------------------------------------------------------------------
+## Configure disallows unsupported combinations of options. However, users
+## may want to override and build with unsupported combinations for their
+## own use. They can use the --enable-unsupported configure flag, which
+## ignores any errors from configure due to incompatible flags.
+AC_MSG_CHECKING([if unsupported combinations of configure options are allowed])
+AC_ARG_ENABLE([unsupported],
+              [AS_HELP_STRING([--enable-unsupported],
+                              [Allow unsupported combinations of configure options])],
+              [ALLOW_UNSUPPORTED=$enableval])
+
+case "X-$ALLOW_UNSUPPORTED" in 
+  X-|X-no)
+    AC_MSG_RESULT([no])
+    ;;
+  X-yes)
+    AC_MSG_RESULT([yes])
+    ;;
+  *)
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Check if they would like the Fortran interface compiled
+##
+AC_SUBST([HDF5_INTERFACES]) HDF5_INTERFACES=""
+AC_MSG_CHECKING([if Fortran interface enabled])
+AC_ARG_ENABLE([fortran],
+              [AS_HELP_STRING([--enable-fortran],
+                              [Compile the Fortran 77/90/95 interface [default=no]])],
+              [HDF_FORTRAN=$enableval])
+
+if test "X$HDF_FORTRAN" = "Xyes"; then
+  echo "yes"
+else
+  echo "no"
+fi
+
+
+## ----------------------------------------------------------------------
+## Check if they would like the Fortran 2003 interface compiled
+##
+AC_MSG_CHECKING([if Fortran 2003 interface enabled])
+AC_ARG_ENABLE([fortran2003],
+              [AS_HELP_STRING([--enable-fortran2003],
+                              [Compile the Fortran 2003 interface, must also specify --enable-fortran [default=no]])],
+              [HDF_FORTRAN2003=$enableval])
+
+## ----------------------------------------------------------------------
+## Check to make sure --enable-fortran is present if --enable-fortran2003 
+## was specified
+
+if test "X$HDF_FORTRAN2003" = "Xyes" && test "X$HDF_FORTRAN" = "Xno"; then
+  echo "no"
+  AC_MSG_ERROR([--enable-fortran must be used with --enable-fortran2003])
+else
+  echo "yes"
+fi
+
+HAVE_SIZEOF="no"
+FORTRAN_DEFAULT_REALisDBLE="no"
+
+if test "X$HDF_FORTRAN" = "Xyes"; then
+
+  AC_SUBST([FC]) HDF_FORTRAN=yes
+  AC_SUBST([HAVE_FORTRAN_2003])
+		
+  HDF5_INTERFACES="$HDF5_INTERFACES fortran"
+
+  ## --------------------------------------------------------------------
+  ## Default for FORTRAN 2003 compliant compilers
+  ##
+  HAVE_FORTRAN_2003="no"
+  HAVE_F2003_REQUIREMENTS="no"
+
+  ## --------------------------------------------------------------------
+  ## HDF5 integer variables for the H5fortran_types.f90 file.
+  ##
+  AC_SUBST([R_LARGE])
+  AC_SUBST([R_INTEGER])
+  AC_SUBST([HADDR_T])
+  AC_SUBST([HSIZE_T])
+  AC_SUBST([HSSIZE_T])
+  AC_SUBST([HID_T])
+  AC_SUBST([SIZE_T])
+  AC_SUBST([OBJECT_NAMELEN_DEFAULT_F])
+
+  ## --------------------------------------------------------------------
+  ## General Fortran flags
+  ##
+  AM_FCFLAGS="${AM_FCFLAGS} ${FFLAGS}"
+  FCFLAGS="${FCFLAGS} ${FFLAGS}"
+
+  ## --------------------------------------------------------------------
+  ## Fortran source extention
+  ##
+  AC_FC_SRCEXT([f90])
+
+  AC_SUBST([F9XSUFFIXFLAG])
+  AC_SUBST([FSEARCH_DIRS])
+
+  ## --------------------------------------------------------------------
+  ## Check for a Fortran 9X compiler and how to include modules.
+  ## 
+  AC_PROG_FC([f90 pgf90 slf90 f95 g95 xlf95 efc ifort ftn],)
+  AC_F9X_MODS
+
+  ## It seems that libtool (as of Libtool 1.5.14) is trying to
+  ## configure itself for Fortran 77.
+  ## Tell it that our F77 compiler is $FC (actually a F9X compiler)
+  F77=$FC
+
+  ## Change to the Fortran 90 language
+  AC_LANG_PUSH(Fortran)
+
+  ## --------------------------------------------------------------------
+  ## Define wrappers for the C compiler to use Fortran function names
+  ##
+  AC_FC_WRAPPERS
+
+  ## --------------------------------------------------------------------
+  ## See if the compiler will support the "-I." option
+  ##
+  dnl  AM_FCFLAGS_saved=$AM_FCFLAGS
+  dnl  AM_FCFLAGS="${AM_FCFLAGS} -I."
+
+  dnl  AC_MSG_CHECKING(if compiler supports -I. option)
+  dnl  AC_TRY_FCOMPILE([
+  dnl      program conftest
+  dnl      end
+  dnl  ], AC_MSG_RESULT(yes),
+  dnl     AC_MSG_RESULT(no)
+  dnl     AM_FCFLAGS="$AM_FCFLAGS_saved")
+
+  ## --------------------------------------------------------------------
+  ## See if the fortran compiler supports the intrinsic function "SIZEOF"
+
+  AC_MSG_CHECKING([if Fortran compiler supports intrinsic SIZEOF])
+  AC_TRY_RUN([ 
+   PROGRAM main
+     i = sizeof(x)
+   END PROGRAM
+  ], [AC_MSG_RESULT([yes])
+     	HAVE_SIZEOF="yes"],
+     [AC_MSG_RESULT([no])])
+
+  ## Check to see if -r8 was specified to determine if we need to
+  ## compile the DOUBLE PRECISION interfaces.
+
+  AC_MSG_CHECKING([if Fortran default REAL is DOUBLE PRECISION])
+  
+  AC_TRY_RUN([
+     MODULE type_mod
+       INTERFACE h5t	
+         MODULE PROCEDURE h5t_real
+         MODULE PROCEDURE h5t_dble
+       END INTERFACE
+     CONTAINS
+       SUBROUTINE h5t_real(r)
+         REAL :: r
+       END SUBROUTINE h5t_real
+       SUBROUTINE h5t_dble(d)
+         DOUBLE PRECISION :: d
+       END SUBROUTINE h5t_dble
+     END MODULE type_mod
+     PROGRAM main
+       USE type_mod
+       REAL :: r
+       DOUBLE PRECISION :: d
+       CALL h5t(r)
+       CALL h5t(d)
+     END PROGRAM main
+                  ],
+    [AC_MSG_RESULT([no])], 
+    [AC_MSG_RESULT([yes])
+        FORTRAN_DEFAULT_REALisDBLE="yes"])
+
+  if test "X$HDF_FORTRAN2003" = "Xyes"; then
+
+    ## Checking if the compiler supports the required Fortran 2003 features and
+    ## disable Fortran 2003 if it does not.
+
+    AC_MSG_CHECKING([if Fortran compiler version compatible with Fortran 2003 HDF])
+    HAVE_FORTRAN_2003="no"
+	
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[
+
+	USE iso_c_binding
+	IMPLICIT NONE
+	TYPE(C_PTR) :: ptr
+	TYPE(C_FUNPTR) :: funptr
+	CHARACTER(LEN=80, KIND=c_char), TARGET :: ichr
+
+	ptr = C_LOC(ichr(1:1))
+
+        ])], 
+      [AC_MSG_RESULT([yes])
+        HAVE_F2003_REQUIREMENTS=[yes]], 
+      [AC_MSG_RESULT([no])])
+    if test "X$HAVE_F2003_REQUIREMENTS" = "Xno"; then
+    ##  echo $HAVE_FORTRAN_2003
+      AC_MSG_ERROR([Fortran compiler lacks required Fortran 2003 features; unsupported Fortran 2003 compiler, remove --enable-fortran2003])
+    else
+    ##  echo $HAVE_FORTRAN_2003
+      HAVE_FORTRAN_2003="yes"
+    fi
+  fi
+else
+  FC="no"
+fi
+
+## Change back to the C language
+AC_LANG_POP(Fortran)
+
+AM_CONDITIONAL([FORTRAN_HAVE_SIZEOF], [test "X$HAVE_SIZEOF" = "Xyes"])
+AM_CONDITIONAL([FORTRAN_2003_CONDITIONAL_F], [test "X$HAVE_FORTRAN_2003" = "Xyes"])
+AM_CONDITIONAL([FORTRAN_DEFAULT_REALisDBLE_F], [test "X$FORTRAN_DEFAULT_REALisDBLE" = "Xyes"])
+
+## ----------------------------------------------------------------------
+## Check if they would like the C++ interface compiled
+##
+## We need to check for a C++ compiler unconditionally, since
+## AC_PROG_CXX defines some macros that Automake 1.9.x uses and will
+## miss even if c++ is not enabled.
+  AC_PROG_CXX
+  AC_PROG_CXXCPP	## this is checked for when AC_HEADER_STDC is done
+
+AC_MSG_CHECKING([if c++ interface enabled])
+
+AC_ARG_ENABLE([cxx],
+              [AS_HELP_STRING([--enable-cxx],
+                              [Compile the C++ interface [default=no]])],
+              [HDF_CXX=$enableval])
+
+if test "X$HDF_CXX" = "Xyes"; then
+  echo "yes"
+  HDF5_INTERFACES="$HDF5_INTERFACES c++"
+
+  ## Change to the C++ language
+  AC_LANG_PUSH(C++)
+
+  AC_MSG_CHECKING([if $CXX needs old style header files in includes])
+  AC_TRY_RUN([
+#include <iostream>
+
+int main(void) { return 0; }
+  ], [
+    echo no
+  ], [
+    echo yes
+    CXXFLAGS="${CXXFLAGS} -DOLD_HEADER_FILENAME"
+    AM_CXXFLAGS="${AM_CXXFLAGS} -DOLD_HEADER_FILENAME"
+  ])
+
+  AC_MSG_CHECKING([if $CXX can handle namespaces])
+  AC_TRY_RUN([
+namespace H5 {
+int fnord;
+}
+
+int main(void) {
+   using namespace H5;
+   fnord = 37;
+   return 0;
+} 
+  ], [
+     echo yes
+  ], [
+     echo no
+     CXXFLAGS="${CXXFLAGS} -DH5_NO_NAMESPACE"
+     AM_CXXFLAGS="${AM_CXXFLAGS} -DH5_NO_NAMESPACE"
+  ])
+
+  AC_MSG_CHECKING([if $CXX supports std])
+  AC_TRY_RUN([
+#include <string>
+
+using namespace std;
+
+int main(void) {
+   string myString("testing namespace std");
+   return 0;
+}
+  ], [
+     echo yes
+  ], [
+     echo no
+     CXXFLAGS="${CXXFLAGS} -DH5_NO_STD"
+     AM_CXXFLAGS="${AM_CXXFLAGS} -DH5_NO_STD"
+  ])
+
+  AC_MSG_CHECKING([if $CXX supports bool types])
+  AC_TRY_RUN([
+int main(void) {
+   bool flag;
+   return 0;
+}
+  ], [
+     echo yes
+  ], [
+     echo no
+     CXXFLAGS="${CXXFLAGS} -DBOOL_NOTDEFINED"
+     AM_CXXFLAGS="${AM_CXXFLAGS} -DBOOL_NOTDEFINED"
+  ])
+
+  AC_MSG_CHECKING([if $CXX has offsetof extension])
+    AC_TRY_COMPILE([
+  #include <stdio.h>
+  #include <stddef.h>
+    ],[
+    struct index_st
+    {
+      unsigned char type;
+      unsigned char num;
+      unsigned int len;
+    };
+    typedef struct index_st index_t;
+    int x,y;
+    x = offsetof(struct index_st, len);
+    y = offsetof(index_t, num)
+    ],
+    AC_DEFINE([CXX_HAVE_OFFSETOF], [1],
+    [Define if C++ compiler recognizes offsetof])
+    AC_MSG_RESULT([yes]),
+    AC_MSG_RESULT([no]))
+
+  AC_MSG_CHECKING([if $CXX can handle static cast])
+  AC_TRY_RUN([
+int main(void) {
+   float test_float;
+   int test_int;
+   test_float = 37.0;
+   test_int = static_cast <int> (test_float);
+   return 0;
+}
+  ], [
+    echo yes
+  ], [
+    echo no
+    CXXFLAGS="${CXXFLAGS} -DNO_STATIC_CAST"
+    AM_CXXFLAGS="${AM_CXXFLAGS} -DNO_STATIC_CAST"
+  ])
+else
+  echo "no"
+  CXX="no"
+fi
+
+## Change back to the C language
+AC_LANG_POP(C++)
+
+## ----------------------------------------------------------------------
+## Check if they have Perl installed on their system. We only need Perl
+## if they're using a GNU compiler.
+##
+AC_SUBST([PERL]) PERL=""
+if test "X$GCC" = "Xyes"; then
+  AC_CHECK_PROGS([PERL], [perl],, [$PATH])
+fi
+
+
+## ----------------------------------------------------------------------
+## Check which archiving tool to use. This needs to be done before
+## the AM_PROG_LIBTOOL macro.
+##
+
+if test -z "$AR"; then
+  AC_CHECK_PROGS([AR], [ar xar], [:], [$PATH])
+fi
+AC_SUBST([AR])
+
+## Export the AR macro so that it will be placed in the libtool file
+## correctly.
+export AR
+
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+
+## ----------------------------------------------------------------------
+## Check that the tr utility is working properly.
+
+AC_PATH_PROG([TR], [tr])
+
+TR_TEST=`echo Test | ${TR} ${as_cr_letters}"," ${as_cr_LETTERS}" "`
+if test "X${TR_TEST}" != "XTEST"; then
+  AC_MSG_ERROR([tr program doesn't work])
+fi
+
+
+## ----------------------------------------------------------------------
+## Check that time can be used with srcdir.  This is okay on most systems,
+## but seems to cause problems on Cygwin.
+## The solution on Cygwin is not to record execution time for tests.
+AC_MSG_CHECKING([if srcdir= and time commands work together])
+
+AC_SUBST([TIME])
+TIME=time
+TIME_TEST=`foo="bar" ${TIME} echo 'baz' 2> /dev/null | grep baz`
+
+if test "X${TIME_TEST}" = "Xbaz"; then
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+  TIME=
+fi
+
+
+## The following variables are used to distinguish between building a
+## serial and parallel library.
+##
+##    HAVE_PARALLEL	-- defined in H5config.h if we are building
+##			   a parallel library even if configure wasn't
+##			   able to find some header file or library that
+##			   might be required. This is defined if the
+##			   compiler looks like a parallel compiler (e.g.,
+##			   mpicc or mpcc) or if the user explicitly states
+##			   that a parallel library is being built by supplying
+##			   the `--enable-parallel' configure switch.
+##
+##    PARALLEL		-- This variable is set to a non-null value if
+##			   configure thinks we're compiling a parallel
+##			   version of the library.
+##
+##    RUNSERIAL	-- This is a command which will be prepended to
+##			   the executable name to run the executable using
+##			   a single process. For serial versions of the
+##			   library this will normally be empty. For parallel
+##			   versions it might be something like `mpiexec -n 1'.
+##			   The value of this variable is substituted in *.in
+##			   files.
+##
+##    RUNPARALLEL	-- This is a command which will be prepended to
+##			   the executable name to run the executable on
+##			   multiple processors. For the serial library the
+##			   value will normally be the empty string. For
+##			   parallel library it should be something like
+##			   "mpiexec -n \$\${NPROCS:=6}" where NPROCS will
+##			   eventually contain the number of processors on which
+##			   to run the executable (the double dollarsigns are to
+##			   protect the expansion until make executes the
+##			   command).  The value of this variable is
+##			   substituted in *.in files.
+##
+AC_SUBST([PARALLEL])
+AC_SUBST([RUNSERIAL])
+AC_SUBST([RUNPARALLEL])
+AC_SUBST([TESTPARALLEL])
+
+## ----------------------------------------------------------------------
+## If the compiler is obviously a parallel compiler then we're building
+## a parallel version of hdf5 and should define HAVE_PARALLEL. Furthermore,
+## the name of the compiler might tell us how to run the resulting
+## executable. For `mpicc' the executable should be run with `mpiexec' from
+## the same directory as mpicc if it exists.
+##
+case "$CC_BASENAME" in
+  mpicc)
+    ## The mpich compiler. Use mpiexec from the same directory if it
+    ## exists.
+    PARALLEL=mpicc
+    AC_MSG_CHECKING([for mpiexec])
+
+    ## Find the path where mpicc is located.
+    cmd="`echo $CC | cut -f1 -d' '`"
+    if (echo $cmd | grep / >/dev/null); then
+      path="`echo $cmd | sed 's/\(.*\)\/.*$/\1/'`"
+    else
+      for path in `echo $PATH | ${TR} ":" " "`; do
+        if test -x $path/$cmd; then
+          break
+        fi
+      done
+    fi
+
+    ## Is there an mpiexec at that path?
+    if test -x $path/mpiexec; then
+      AC_MSG_RESULT([$path/mpiexec])
+      RUNSERIAL="${RUNSERIAL:-none}"
+
+      if test -z "$RUNPARALLEL"; then
+        RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}"
+      fi
+    else
+      AC_MSG_RESULT([none])
+    fi
+    ;;
+
+  mpcc|mpcc_r)
+    ## The IBM compiler
+    PARALLEL="$CC_BASENAME"
+    ;;
+
+  *)
+    ## Probably not a parallel compiler, but if `--enable-parallel'
+    ## is defined below then we're still building a parallel hdf5.
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## If the Fortran compiler is obviously a parallel compiler then we're
+## building a parallel version of hdf5 and should define HAVE_PARALLEL.
+## Furthermore, the name of the compiler might tell us how to run the
+## resulting executable. For `mpif90' the executable should be run with
+## `mpiexec' from the same directory as mpif90 if it exists.
+##
+
+if test "X$HDF_FORTRAN" = "Xyes" ; then
+  ## Change to the Fortran 90 language
+  AC_LANG_PUSH(Fortran)
+
+  case "$FC" in
+    *mpif90*)
+      ## The Fortran mpich compiler. Use mpiexec from the same directory
+      ## if it exists.
+      PARALLEL=mpif90
+      AC_MSG_CHECKING([for mpiexec])
+
+      ## Find the path where mpif90 is located.
+      cmd=`echo $FC |cut -f1 -d' '`
+      if (echo $cmd |grep / >/dev/null); then
+        path="`echo $cmd |sed 's/\(.*\)\/.*$/\1/'`"
+      else
+        for path in `echo $PATH | ${TR} ":" " "`; do
+          if test -x $path/$cmd; then
+            break;
+          fi
+        done
+      fi
+
+      ## Is there an mpiexec at that path?
+      if test -x $path/mpiexec; then
+        AC_MSG_RESULT([$path/mpiexec])
+        RUNSERIAL="${RUNSERIAL:-none}"
+
+        if test -z "$RUNPARALLEL"; then
+          RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}"
+        fi
+      else
+        AC_MSG_RESULT([none])
+      fi
+      ;;
+
+    *mpxlf* | *mpxlf_r* | *mpxlf90* | *mpxlf90_r* | *mpxlf95* | *mpxlf95_r*)
+      ## The IBM compiler
+      PARALLEL="$FC"
+      ;;
+
+    *)
+      ## Probably not a parallel compiler, but if `--enable-parallel'
+      ## is defined below then we're still building a parallel hdf5.
+      ;;
+  esac
+
+  ## Change to the C language
+  AC_LANG_POP(Fortran)
+fi
+
+## -----------------------------------------------------------------------------
+## If shared libraries are being used with parallel, disable them, unless the 
+## user explicity enables them via the '--enable-shared' option.
+
+if test "X${enable_shared}" = "X" -a "X${enable_parallel}" = "Xyes"; then
+    echo '    shared libraries disabled in parallel'
+    enable_shared="no"
+elif test "X${enable_shared}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
+    echo '    shared libraries explicitly enabled by user'
+elif test "X${enable_shared}" = "X" -a "X${PARALLEL}" != "X"; then
+    echo '    shared libraries disabled when a parallel compiler is being used'
+    enable_shared="no"
+elif test "X${enable_shared}" = "Xyes" -a "X${PARALLEL}" != "X"; then
+    echo '    shared libraries explicitly enabled by user'
+fi
+
+## ----------------------------------------------------------------------
+## Fortran libraries are not currently supported on Mac. Disable them.
+## (this is overridable with --enable-unsupported).
+##
+AC_SUBST([H5_FORTRAN_SHARED])
+H5_FORTRAN_SHARED="no"
+if test "X${HDF_FORTRAN}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
+  AC_MSG_CHECKING([if shared Fortran libraries are supported])
+  H5_FORTRAN_SHARED="yes"
+
+  ## Disable fortran shared libraries on Mac. (MAM - 03/30/11)
+  
+  case "`uname`" in
+    Darwin*)
+    H5_FORTRAN_SHARED="no"
+    CHECK_WARN="Shared Fortran libraries not currently supported on Mac."
+      ;;
+  esac
+
+  ## Report results of check(s)
+  
+  if test "X${H5_FORTRAN_SHARED}" = "Xno"; then
+    AC_MSG_RESULT([no])
+    AC_MSG_WARN([$CHECK_WARN])
+    if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+      AC_MSG_WARN([Disabling shared Fortran libraries.])
+      AC_MSG_WARN([To override this behavior, please use --enable-unsupported configure option.])
+        if test "X${enable_static}" = "Xno"; then
+          AC_MSG_ERROR([both static and shared Fortran libraries are disabled])
+        fi
+    else
+      AC_MSG_WARN([Allowing unsupported Fortran shared libraries due to use of --enable-unsupported flag])
+      H5_FORTRAN_SHARED="yes"
+    fi
+  else
+    AC_MSG_RESULT([yes])
+  fi
+fi
+
+AM_CONDITIONAL([FORTRAN_SHARED_CONDITIONAL], [test "X$H5_FORTRAN_SHARED" = "Xyes"])
+
+## ----------------------------------------------------------------------
+## Disable C++ shared libraries if +DD64 flag is detected.
+##
+AC_SUBST([H5_CXX_SHARED])
+H5_CXX_SHARED="no"
+if test "X${HDF_CXX}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
+  AC_MSG_CHECKING([if shared C++ libraries are supported])
+  H5_CXX_SHARED="yes"
+
+  ## Disable C++ shared libraries if DD64 flag is being used.
+  
+  if (echo dummy ${CXX} ${CXXLD} ${CFLAGS} ${CXXFLAGS} ${LDFLAGS} | grep 'DD64') > /dev/null; then
+    H5_CXX_SHARED="no"
+    CHECK_WARN="Shared C++ libraries not currently supported with +DD64 flag."
+  fi
+
+  ## Report results of check(s)
+  
+  if test "X${H5_CXX_SHARED}" = "Xno"; then
+    AC_MSG_RESULT([no])
+    AC_MSG_WARN([$CHECK_WARN])
+    if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+      AC_MSG_WARN([Disabling shared C++ libraries.])
+      AC_MSG_WARN([To override this behavior, please use --enable-unsupported configure option.])
+      if test "X${enable_static}" = "Xno"; then
+        AC_MSG_ERROR([both static and shared C++ libraries are disabled])
+      fi
+    else
+      AC_MSG_WARN([Allowing unsupported C++ shared librares due to use of --enable-unsupported flag])
+    fi
+  else
+    AC_MSG_RESULT([yes])
+  fi
+fi
+
+AM_CONDITIONAL([CXX_SHARED_CONDITIONAL], [test "X$H5_CXX_SHARED" = "Xyes"])
+
+## ----------------------------------------------------------------------
+## pgcc version 6.0x have optimization (-O, -O2 or -O3) problem.  Detect
+## these versions and add option "-Mx,28,0x8" to the compiler to avoid
+## the problem if optimization is enabled.
+##
+
+if (${CC-cc} -V 2>&1 | grep '^pgcc 6.0') > /dev/null && test "X$enable_production" = "Xyes"; then
+    echo 'adding compiler flag to avoid optimization problem in pgcc'
+    CC="${CC-cc} -Mx,28,0x8"
+fi
+
+## ----------------------------------------------------------------------
+## Shared libraries are not currently supported under Cygwin, so configure
+## disables them unless --enable-unsupported has been supplied by the user.
+
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  case "`uname`" in
+    CYGWIN*)
+      if test "X${enable_shared}" = "Xyes"; then
+        echo '    warning: shared libraries are not supported on Cygwin!'
+        echo '    disabling shared libraries'
+        echo '    use --enable-unsupported to override this warning and keep shared libraries enabled'
+      fi
+      enable_shared="no"
+      ;;
+  esac
+fi
+
+## ----------------------------------------------------------------------
+## The GCC compiler on Cygwin running on Windows XP has rounding problem
+## in the data conversion dt_arith.c from unsigned long long to long 
+## double (see bug HDFFV-1264).  I define a macro here to skip the test for
+## Cygwin.  I'll come back and figure out the problem once I'm available.
+## 2010/5/5 - SLU
+case "`uname`" in
+  CYGWIN*)
+    AC_DEFINE([CYGWIN_ULLONG_TO_LDOUBLE_ROUND_PROBLEM], [1], [Define a macro for Cygwin (on XP only) where the compiler has rounding problem converting from unsigned long long to long double])
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Windows won't create DLLs without the following macro.
+##
+AC_LIBTOOL_WIN32_DLL
+
+## ----------------------------------------------------------------------
+## Create libtool.  If shared/static libraries are going to be enabled
+## or disabled, it should happen before these macros.
+LT_PREREQ([2.2])
+LT_INIT([dlopen])
+
+## ----------------------------------------------------------------------
+## Check if we should install only statically linked executables.
+##   This check needs to occur after libtool is initialized because
+##   we check a libtool cache value and may issue a warning based 
+##   on its result.
+AC_MSG_CHECKING([if we should install only statically linked executables])
+AC_ARG_ENABLE([static_exec],
+              [AS_HELP_STRING([--enable-static-exec],
+                              [Install only statically linked executables
+                               [default=no]])],
+              [STATIC_EXEC=$enableval])
+
+if test "X$STATIC_EXEC" = "Xyes"; then
+  echo "yes"
+  ## Issue a warning if -static flag is not supported.
+  if test "X$lt_cv_prog_compiler_static_works" = "Xno"; then
+      echo "    warning: -static flag not supported on this system; executable won't statically link shared system libraries."
+  fi
+  LT_STATIC_EXEC="-all-static"
+else
+  echo "no"
+  LT_STATIC_EXEC=""
+fi
+
+AC_SUBST([LT_STATIC_EXEC])
+
+## Fix up the INSTALL macro if it's a relative path. We want the
+## full-path to the binary instead.
+case "$INSTALL" in
+  *install-sh*)
+    INSTALL='\${top_srcdir}/bin/install-sh -c'
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Some users have reported problems with libtool's use of '-Wl,-rpath' to
+## link shared libraries in nondefault directories. Allow users to
+## disable embedding the rpath information in the executables and to
+## instead solely rely on the information in LD_LIBRARY_PATH.
+AC_MSG_CHECKING([if -Wl,-rpath should be used to link shared libs in nondefault directories])
+AC_ARG_ENABLE([sharedlib-rpath],
+              [AS_HELP_STRING([--disable-sharedlib-rpath],
+               [Disable use of the '=Wl,-rpath' linker option])],
+              [RPATH=$enableval])
+
+case "X-$RPATH" in
+  X-no)
+    AC_MSG_RESULT([no])
+    runpath_var=
+    hardcode_libdir_flag_spec=
+    hardcode_libdir_flag_spec_ld=
+    ;;
+  X-|X-yes)
+    AC_MSG_RESULT([yes])
+    ;;
+  *)
+    AC_MSG_RESULT([error])
+    AC_MSG_ERROR([\'$enableval\' is not a valid rpath type])
+    ;;
+esac
+
+AC_MSG_CHECKING([make])
+
+## ----------------------------------------------------------------------
+## Sometimes makes think the `.PATH:' appearing before the first rule
+## with an action should override the `all' default target. So we have
+## to decide what the proper syntax is.
+##
+AC_MSG_CHECKING([how make searches directories])
+while true; do #for break
+  ## The most common method is `VPATH=DIR1 DIR2 ...'
+  cat >maketest <<EOF
+VPATH=$srcdir/config $srcdir/src $srcdir/bin
+.c.o:
+	cp $< H5.o
+
+foo: H5.o
+	rm -f H5.o
+	@echo works
+EOF
+
+  if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+    SEARCH_RULE='VPATH='
+    SEARCH_SEP=' '
+    AC_MSG_RESULT([VPATH=DIR1 DIR2 ...])
+    break
+  fi
+
+  ## The second most common method is like above except with the
+  ## directories separated by colons.
+  cat >maketest <<EOF
+VPATH=$srcdir/config:$srcdir/src:$srcdir/bin
+.c.o:
+	cp $< H5.o
+
+foo: H5.o
+	rm -f H5.o
+	@echo works
+EOF
+
+  if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+    SEARCH_RULE='VPATH='
+    SEARCH_SEP=':'
+    AC_MSG_RESULT([VPATH=DIR1:DIR2:...])
+    break
+  fi
+
+  ## pmake uses the construct `.PATH: DIR1 DIR2
+  cat >maketest <<EOF
+.PATH: $srcdir/config $srcdir/src $srcdir/bin
+.c.o:
+	cp $< H5.o
+
+foo: H5.o
+	rm -f H5.o
+	@echo works
+EOF
+
+  if (MAKE= ${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+    SEARCH_RULE='.PATH: '
+    SEARCH_SEP=' '
+    AC_MSG_RESULT([.PATH: DIR1 DIR2 ...])
+    break
+  fi
+
+  ## No way for make to search directories
+  SEARCH_RULE='## SEARCH DISABLED: '
+  SEARCH_SEP=' '
+  AC_MSG_RESULT([it doesn't])
+  if test ! -f configure; then
+    AC_MSG_ERROR([${MAKE-make} requires the build and source directories to be the same])
+  fi
+  break
+done
+rm maketest
+
+## ----------------------------------------------------------------------
+## pmake will throw an error if variables are undefined in a Makefile.
+## These errors can be changed to warnings using the -V flag.
+##
+AC_SUBST([AM_MAKEFLAGS]) AM_MAKEFLAGS=""
+
+## Don't run test if MAKE is defined but is the empty string
+if test -n "${MAKE-make}"; then 
+
+  AC_MSG_CHECKING([whether make will build with undefined variables])
+
+  cat >maketest <<EOF
+foo: \$(UNDEFINED) \$(UNDEFINED2)
+	@echo \$(UNDEFINED3) works
+EOF
+
+  if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no, setting -V flag])
+    AM_MAKEFLAGS="\-V"
+  fi
+
+  rm maketest
+fi
+
+## ----------------------------------------------------------------------
+## Production flags?  Save the value in $CONFIG_MODE so we have it for
+## the record.
+##
+AC_MSG_CHECKING([for production mode])
+AC_ARG_ENABLE([production],
+              [AS_HELP_STRING([--enable-production],
+                              [Determines how to run the compiler.])])
+
+case "X-$enable_production" in
+  X-|X-yes)
+    enable_production="yes"
+    AC_MSG_RESULT([production])
+    CONFIG_MODE=production
+    H5_CFLAGS="$H5_CFLAGS $PROD_CFLAGS"
+    H5_CPPFLAGS="$H5_CPPFLAGS $PROD_CPPFLAGS"
+    H5_CXXFLAGS="$H5_CXXFLAGS $PROD_CXXFLAGS"
+    H5_FCFLAGS="$H5_FCFLAGS $PROD_FCFLAGS"
+    ;;
+  X-no)
+    enable_production="no"
+    AC_MSG_RESULT([development])
+    CONFIG_MODE=development
+    H5_CFLAGS="$H5_CFLAGS $DEBUG_CFLAGS"
+    H5_CPPFLAGS="$H5_CPPFLAGS $DEBUG_CPPFLAGS"
+    H5_CXXFLAGS="$H5_CXXFLAGS $DEBUG_CXXFLAGS"
+    H5_FCFLAGS="$H5_FCFLAGS $DEBUG_FCFLAGS"
+    ;;
+  X-pg|X-profile)
+    enable_production="profile"
+    AC_MSG_RESULT([profile])
+    CONFIG_MODE=profile
+    H5_CFLAGS="$H5_CFLAGS $PROFILE_CFLAGS"
+    H5_CPPFLAGS="$H5_CPPFLAGS $PROFILE_CPPFLAGS"
+    H5_CXXFLAGS="$H5_CXXFLAGS $PROFILE_CXXFLAGS"
+    H5_FCFLAGS="$H5_FCFLAGS $PROFILE_FCFLAGS"
+    ;;
+  *)
+    enable_production="user-defined"
+    AC_MSG_RESULT([user-defined])
+    CONFIG_MODE="$enableval"
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Check for system libraries.
+##
+AC_CHECK_LIB([m], [ceil])
+
+if test "`uname`" = "SunOS" -o "`uname -sr`" = "HP-UX B.11.00"; then
+  ## ...for Solaris
+  AC_CHECK_LIB([socket], [socket])
+  AC_CHECK_LIB([nsl], [xdr_int])
+fi
+
+dnl AC_CHECK_LIB([coug], [main])		## ...for ASCI/Red
+
+## ----------------------------------------------------------------------
+## Check for system header files.
+##
+AC_HEADER_STDC
+AC_HEADER_TIME
+
+## ----------------------------------------------------------------------
+## Check for these two functions before the time headers are checked
+## for, otherwise they are not detected correctly on Solaris (the
+## configure test will fail due to multiply-defined symbols).
+##
+AC_CHECK_FUNCS([difftime])
+AC_CHECK_FUNCS([gettimeofday], [have_gettime="yes"], [have_gettime="no"])
+AC_SEARCH_LIBS([clock_gettime], [rt posix4])
+AC_CHECK_FUNCS([clock_gettime],[have_clock_gettime="yes"],[have_clock_gettime="no"])
+
+## Unix
+AC_CHECK_HEADERS([sys/resource.h sys/time.h unistd.h sys/ioctl.h sys/stat.h])
+AC_CHECK_HEADERS([sys/socket.h sys/types.h])
+AC_CHECK_HEADERS([stddef.h setjmp.h features.h])
+AC_CHECK_HEADERS([stdint.h], [C9x=yes])
+
+## Darwin
+AC_CHECK_HEADERS([mach/mach_time.h])
+
+## Windows
+case "`uname`" in
+  CYGWIN*)
+    AC_CHECK_HEADERS([io.h sys/timeb.h])
+    ;;
+  MINGW*)
+    AC_CHECK_HEADERS([io.h winsock2.h sys/timeb.h])
+    AC_HAVE_LIBRARY([ws2_32])
+    ;;
+  *)
+    AC_CHECK_HEADERS([io.h winsock2.h sys/timeb.h])
+    ;;
+esac
+
+case "$host" in
+  alpha*-dec*-osf*)
+    ## The <sys/sysinfo.h> and <sys/proc.h> are needed on the DEC
+    ## Alpha to turn off UAC fixing. We do *not* attempt to
+    ## locate these files on other systems because there are too
+    ## many problems with including them.
+    AC_CHECK_HEADERS([sys/sysinfo.h sys/proc.h])
+    ;;
+  mips*-sgi*-irix*)
+    ## The <sys/fpu.h> is needed on the SGI machines to turn off
+    ## denormalized floating-point values going to zero.  We do *not*
+    ## attempt to locate these files on other systems because there
+    ## may be problems with including them.
+    AC_CHECK_HEADERS([sys/fpu.h])
+    AC_CHECK_FUNCS([get_fpc_csr])
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Some platforms require that all symbols are resolved when a library
+## is linked. We can use the -no-undefined flag to tell libtool that
+## it will be able to build shared libraries on these architectures,
+## as it will not do so by default.
+##
+if test "X${enable_shared}" = "Xyes"; then
+  AC_MSG_CHECKING([if libtool needs -no-undefined flag to build shared libraries])
+  case "`uname`" in
+    CYGWIN*|MINGW*|AIX*)
+      ## Add in the -no-undefined flag to LDFLAGS for libtool.
+      AC_MSG_RESULT([yes])
+      H5_LDFLAGS="$H5_LDFLAGS -no-undefined"
+      ;;
+    *)
+      ## Don't add in anything.
+      AC_MSG_RESULT([no])
+      ;;
+  esac
+fi
+
+## ----------------------------------------------------------------------
+## Test for Largefile support.
+##
+AC_MSG_CHECKING([if configure should try to set up large file support])
+
+AC_ARG_ENABLE([largefile],
+           [AS_HELP_STRING([--disable-largefile],
+                           [omit support for large files])])
+
+## The linux-lfs option is deprecated, but if it is used to disable
+## largefile support on linux and the largefile option is not specified,
+## then go ahead and disable large-file support.
+case "$host_cpu-$host_vendor-$host_os" in
+  *linux*)
+    AC_ARG_ENABLE([linux-lfs],
+                  [AS_HELP_STRING([--disable-linux-lfs],
+                                  [Disable support for large (64-bit)
+                                   files on Linux. This option is 
+                                   deprecated in favor of
+                                   --disable-largefile.])])
+
+    if test "$enable_linux_lfs" = no; then
+      if test "$enable_largefile" != yes; then
+        enable_largefile=no
+      fi
+    fi
+    ;;
+esac
+
+## If largefile support is enabled, then set up appropriate compiler options.
+if test "$enable_largefile" != no; then
+  AC_MSG_RESULT([yes])
+
+  ## Check for needed compiler options. This check is pulled drectly 
+  ## from autoconf's AC_SYS_LARGEFILE macro, as of Autoconf v2.65.
+  AC_CACHE_CHECK([for special C compiler options needed for large files],
+    ac_cv_sys_largefile_CC,
+    [ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+         ## IRIX 6.2 and later do not support large files by default,
+         ## so use the C compiler's -n32 option if that helps.
+         AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
+         AC_COMPILE_IFELSE([], [break])
+         CC="$CC -n32"
+         AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
+         break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi])
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  ## Use the macro _AC_SYS_LARGEFILE_MACRO_VALUE to test defines
+  ## that might need to be set for largefile support to behave 
+  ## correctly. This macro is defined in acsite.m4 and overrides
+  ## the version provided by Autoconf (as of v2.65). The custom
+  ## macro additionally adds the appropriate defines to AM_CPPFLAGS 
+  ## so that later configure checks have them visible. 
+
+  ## Check for _FILE_OFFSET_BITS
+  _AC_SYS_LARGEFILE_MACRO_VALUE([_FILE_OFFSET_BITS], [64],
+    [ac_cv_sys_file_offset_bits],
+    [Number of bits in a file offset, on hosts where this is settable.],
+    [_AC_SYS_LARGEFILE_TEST_INCLUDES])
+
+  ## Check for _LARGE_FILES
+  if test "$ac_cv_sys_file_offset_bits" = unknown; then
+    _AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
+      [ac_cv_sys_large_files],
+      [Define for large files, on AIX-style hosts.],
+      [_AC_SYS_LARGEFILE_TEST_INCLUDES])
+  fi
+
+  ## Now actually test to see if we can create large files after we've
+  ## checked for any needed defines.
+  AC_MSG_CHECKING([if large (64-bit) files are supported on this system.])
+  AC_CACHE_VAL([hdf5_cv_have_lfs],
+    [AC_TRY_RUN([
+      #include <stdio.h>
+      #include <unistd.h>
+      #include <stdlib.h>
+      #include <fcntl.h>
+      #define BIG_FILE (off_t)0x80000000UL 
+      int main(void) {
+        int fd;
+        if ((fd=open("test.conf", O_RDWR|O_TRUNC|O_CREAT, 0666)) < 0) exit(1);
+        if (lseek(fd, BIG_FILE, SEEK_SET)!=BIG_FILE) exit(1);
+        if (5!=write(fd, "hello", (size_t)5)) exit(1);
+        if (lseek(fd, 2*BIG_FILE, SEEK_SET) != 2*BIG_FILE) exit(1);
+        if (5!=write(fd, "hello", (size_t)5)) exit(1);
+        if (unlink("test.conf") < 0) exit(1);
+        exit(0);
+      }
+    ],[hdf5_cv_have_lfs=yes],[hdf5_cv_have_lfs=no],)])
+
+  if test "X${hdf5_cv_have_lfs}" = "Xyes"; then
+    AC_MSG_RESULT([yes])
+    LARGEFILE="yes"
+  fi 
+  if test "X${hdf5_cv_have_lfs}" = "Xno"; then
+    AC_MSG_RESULT([no])
+    LARGEFILE="no"
+  fi 
+
+else
+  LARGEFILE="no"
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Add necessary defines for Linux Systems.
+##
+case "$host_cpu-$host_vendor-$host_os" in
+  *linux*)
+    ## If largefile support is enabled, then make available various
+    ## LFS-related routines using the following _LARGEFILE*_SOURCE macros.
+    if test "X$LARGEFILE" != "Xno"; then
+        AM_CPPFLAGS="-D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE $AM_CPPFLAGS"
+    fi
+
+    ## Add POSIX support on Linux systems, so <features.h> defines
+    ## __USE_POSIX, which is required to get the prototype for fdopen
+    ## defined correctly in <stdio.h>. 
+    ## This flag was removed from h5cc as of 2009-10-17 when it was found
+    ## that the flag broke compiling netCDF-4 code with h5cc, but kept in 
+    ## H5_CPPFLAGS because fdopen and HDfdopen fail without it. HDfdopen
+    ## is used only by H5_debug_mask which is used only when debugging in
+    ## H5_init_library (all in H5.c).  When the flag was removed this was
+    ## the only compile failure noted.
+    ## This was originally defined as _POSIX_SOURCE which was updated to
+    ## _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
+    ## functionality so clock_gettime and CLOCK_MONOTONIC are defined
+    ## correctly.
+    ## POSIX feature information can be found in the gcc manual at:
+    ## http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
+    H5_CPPFLAGS="-D_POSIX_C_SOURCE=199506L $H5_CPPFLAGS"
+
+    ## Also add BSD support on Linux systems, so <features.h> defines
+    ## __USE_BSD, which is required to get the prototype for strdup
+    ## defined correctly in <string.h> and snprintf & vsnprintf defined
+    ## correctly in <stdio.h>
+    ## Linking to the bsd-compat library is required as per the gcc manual:
+    ## http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
+    ## however, we do not do this since it breaks the big test on some 
+    ## older platforms.
+    AM_CPPFLAGS="-D_BSD_SOURCE $AM_CPPFLAGS"
+    ;;
+esac
+
+## Need to add the AM_ and H5_ into CPFLAGS/CPPFLAGS to make them visible 
+## for configure checks.
+## Note: Both will be restored by the end of configure.
+CPPFLAGS="$H5_CPPFLAGS $AM_CPPFLAGS $CPPFLAGS"
+CFLAGS="$H5_CFLAGS $AM_CFLAGS $CFLAGS"
+
+AC_TRY_COMPILE([#include <sys/types.h>],
+               [off64_t n = 0;],
+               [AC_CHECK_FUNCS([lseek64 fseeko64 ftello64 ftruncate64])],
+               [AC_MSG_RESULT([skipping test for lseek64(), fseeko64 , ftello64, ftruncate64() because off64_t is not defined])])
+AC_CHECK_FUNCS([fseeko ftello])
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/stat.h>],
+[struct stat64 sb;],
+[AC_CHECK_FUNCS([stat64 fstat64])],
+[AC_MSG_RESULT([skipping test for stat64() and fstat64()])])
+
+## ----------------------------------------------------------------------
+## Data types and their sizes.
+##
+AC_TYPE_OFF_T
+AC_CHECK_TYPE([size_t], [],
+        [AC_DEFINE_UNQUOTED([size_t], [unsigned long],
+                [Define to `unsigned long' if <sys/types.h> does not define.])])
+AC_CHECK_TYPE([ssize_t], [],
+        [AC_DEFINE_UNQUOTED([ssize_t], [long],
+                [Define to `long' if <sys/types.h> does not define.])])
+AC_CHECK_TYPE([ptrdiff_t], [],
+        [AC_DEFINE_UNQUOTED([ptrdiff_t], [long],
+                [Define to `long' if <sys/types.h> does not define.])])
+AC_C_BIGENDIAN
+AC_CHECK_SIZEOF([char], [1])
+AC_CHECK_SIZEOF([short], [2])
+AC_CHECK_SIZEOF([int], [4])
+AC_CHECK_SIZEOF([unsigned], [4])
+AC_CHECK_SIZEOF([long], [4])
+AC_CHECK_SIZEOF([long long], [8])
+AC_CHECK_SIZEOF([__int64], [8])
+AC_CHECK_SIZEOF([float], [4])
+AC_CHECK_SIZEOF([double], [8])
+AC_CHECK_SIZEOF([long double], [8])
+
+## Checkpoint the cache
+AC_CACHE_SAVE
+
+## Posix.1g types (C9x)
+cat >>confdefs.h <<\EOF
+#include <sys/types.h>
+EOF
+
+if test "X$C9x" = "Xyes"; then
+  cat >>confdefs.h <<\EOF
+#include <stdint.h>
+EOF
+fi
+
+AC_CHECK_SIZEOF(        [int8_t], [1])
+AC_CHECK_SIZEOF(       [uint8_t], [1])
+AC_CHECK_SIZEOF(  [int_least8_t], [1])
+AC_CHECK_SIZEOF( [uint_least8_t], [1])
+AC_CHECK_SIZEOF(   [int_fast8_t], [1])
+AC_CHECK_SIZEOF(  [uint_fast8_t], [1])
+
+AC_CHECK_SIZEOF(       [int16_t], [2])
+AC_CHECK_SIZEOF(      [uint16_t], [2])
+AC_CHECK_SIZEOF( [int_least16_t], [2])
+AC_CHECK_SIZEOF([uint_least16_t], [2])
+AC_CHECK_SIZEOF(  [int_fast16_t], [2])
+AC_CHECK_SIZEOF( [uint_fast16_t], [2])
+
+AC_CHECK_SIZEOF(       [int32_t], [4])
+AC_CHECK_SIZEOF(      [uint32_t], [4])
+AC_CHECK_SIZEOF( [int_least32_t], [4])
+AC_CHECK_SIZEOF([uint_least32_t], [4])
+AC_CHECK_SIZEOF(  [int_fast32_t], [4])
+AC_CHECK_SIZEOF( [uint_fast32_t], [4])
+
+AC_CHECK_SIZEOF(       [int64_t], [8])
+AC_CHECK_SIZEOF(      [uint64_t], [8])
+AC_CHECK_SIZEOF( [int_least64_t], [8])
+AC_CHECK_SIZEOF([uint_least64_t], [8])
+AC_CHECK_SIZEOF(  [int_fast64_t], [8])
+AC_CHECK_SIZEOF( [uint_fast64_t], [8])
+
+AC_CHECK_SIZEOF([size_t], [4])
+AC_CHECK_SIZEOF([ssize_t], [4])
+AC_CHECK_SIZEOF([ptrdiff_t], [4])
+
+cat >>confdefs.h <<\EOF
+#include <sys/types.h> /*for off_t definition*/
+EOF
+AC_CHECK_SIZEOF([off_t], [4])
+AC_CHECK_SIZEOF([off64_t], [8])
+
+## Checkpoint the cache
+AC_CACHE_SAVE
+
+## ----------------------------------------------------------------------
+## Check if the dev_t type is a scalar type (must come after the check for
+## sys/types.h)
+AC_MSG_CHECKING([if dev_t is scalar])
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+  ],
+  [dev_t d1, d2; if(d1==d2) return 0;],
+  AC_DEFINE([DEV_T_IS_SCALAR], [1],
+            [Define if `dev_t' is a scalar])
+  AC_MSG_RESULT([yes]),
+  AC_MSG_RESULT([no])
+)
+
+## ----------------------------------------------------------------------
+## Fake --with-xxx option to allow us to create a help message for the
+## following --with-xxx options which can take either a =DIR or =INC,LIB
+## specifier.
+##
+AC_ARG_WITH([fnord],
+  [
+ For the following --with-xxx options, you can specify where the header
+ files and libraries are in two different ways:
+
+    --with-xxx=INC,LIB - Specify individually the include directory and
+                         library directory separated by a comma
+    --with-xxx=DIR     - Specify only the directory which contains the
+                         include/ and lib/ subdirectories
+  ])
+
+## ----------------------------------------------------------------------
+## Is the dmalloc present? It has a header file `dmalloc.h' and a library
+## `-ldmalloc' and their locations might be specified with the `--with-dmalloc'
+## command-line switch. The value is an include path and/or a library path.
+## If the library path is specified then it must be preceded by a comma.
+##
+AC_ARG_WITH([dmalloc],
+            [AS_HELP_STRING([--with-dmalloc=DIR],
+                            [Use dmalloc memory debugging aid [default=no]])],,
+            [withval=no])
+
+case $withval in
+  yes)
+    HAVE_DMALLOC="yes"
+    AC_CHECK_HEADERS([dmalloc.h])
+    AC_CHECK_LIB([dmalloc], [dmalloc_shutdown],, [unset HAVE_DMALLOC])
+
+    if test -z "$HAVE_DMALLOC" -a -n "$HDF5_CONFIG_ABORT"; then
+      AC_MSG_ERROR([couldn't find dmalloc library])
+    fi
+    ;;
+  no)
+    HAVE_DMALLOC="no"
+    AC_MSG_CHECKING([for dmalloc library])
+    AC_MSG_RESULT([suppressed])
+    ;;
+  *)
+    HAVE_DMALLOC="yes"
+    case "$withval" in
+      *,*)
+        dmalloc_inc="`echo $withval |cut -f1 -d,`"
+        dmalloc_lib="`echo $withval |cut -f2 -d, -s`"
+        ;;
+      *)
+        if test -n "$withval"; then
+          dmalloc_inc="$withval/include"
+          dmalloc_lib="$withval/lib"
+        fi
+        ;;
+    esac
+
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$dmalloc_inc" = "X/usr/include"; then
+      dmalloc_inc=""
+    fi
+    if test "X$dmalloc_lib" = "X/usr/lib"; then
+      dmalloc_lib=""
+    fi
+
+    saved_CPPFLAGS="$CPPFLAGS"
+    saved_AM_CPPFLAGS="$AM_CPPFLAGS"
+    saved_LDFLAGS="$LDFLAGS"
+    saved_AM_LDFLAGS="$AM_LDFLAGS"
+
+    if test -n "$dmalloc_inc"; then
+      CPPFLAGS="$CPPFLAGS -I$dmalloc_inc"
+      AM_CPPFLAGS="$AM_CPPFLAGS -I$dmalloc_inc"
+    fi
+
+    AC_CHECK_HEADERS([dmalloc.h],,[CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"])
+
+    if test -n "$dmalloc_lib"; then
+      LDFLAGS="$LDFLAGS -L$dmalloc_lib"
+      AM_LDFLAGS="$AM_LDFLAGS -L$dmalloc_lib"
+    fi
+
+    AC_CHECK_LIB([dmalloc], [dmalloc_shutdown],, [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_DMALLOC])
+
+    if test -z "$HAVE_DMALLOC" -a -n "$HDF5_CONFIG_ABORT"; then
+      AC_MSG_ERROR([couldn't find dmalloc library])
+    fi
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Is the GNU zlib present? It has a header file `zlib.h' and a library
+## `-lz' and their locations might be specified with the `--with-zlib'
+## command-line switch. The value is an include path and/or a library path.
+## If the library path is specified then it must be preceded by a comma.
+##
+AC_SUBST([USE_FILTER_DEFLATE]) USE_FILTER_DEFLATE="no"
+AC_ARG_WITH([zlib],
+            [AS_HELP_STRING([--with-zlib=DIR],
+                            [Use zlib library for external deflate I/O
+                             filter [default=yes]])],,
+            [withval=yes])
+
+case $withval in
+  yes)
+    HAVE_ZLIB="yes"
+    AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H="yes"])
+    AC_CHECK_LIB([z], [compress2],, [unset HAVE_ZLIB])
+    AC_CHECK_FUNC([compress2], [HAVE_COMPRESS2="yes"])
+
+    if test -z "$HAVE_ZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
+      AC_MSG_ERROR([couldn't find zlib library])
+    fi
+    ;;
+  no)
+    HAVE_ZLIB="no"
+    AC_MSG_CHECKING([for GNU zlib])
+    AC_MSG_RESULT([suppressed])
+    ;;
+  *)
+    HAVE_ZLIB="yes"
+    case "$withval" in
+      *,*)
+        zlib_inc="`echo $withval |cut -f1 -d,`"
+        zlib_lib="`echo $withval |cut -f2 -d, -s`"
+        ;;
+      *)
+        if test -n "$withval"; then
+          zlib_inc="$withval/include"
+          zlib_lib="$withval/lib"
+        fi
+        ;;
+    esac
+
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$zlib_inc" = "X/usr/include"; then
+      zlib_inc=""
+    fi
+    if test "X$zlib_lib" = "X/usr/lib"; then
+      zlib_lib=""
+    fi
+
+    saved_CPPFLAGS="$CPPFLAGS"
+    saved_AM_CPPFLAGS="$AM_CPPFLAGS"
+    saved_LDFLAGS="$LDFLAGS"
+    saved_AM_LDFLAGS="$AM_LDFLAGS"
+
+    if test -n "$zlib_inc"; then
+      CPPFLAGS="$CPPFLAGS -I$zlib_inc"
+      AM_CPPFLAGS="$AM_CPPFLAGS -I$zlib_inc"
+    fi
+
+    AC_CHECK_HEADERS([zlib.h],
+                     [HAVE_ZLIB_H="yes"],
+                     [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"])
+
+    if test -n "$zlib_lib"; then
+      LDFLAGS="$LDFLAGS -L$zlib_lib"
+      AM_LDFLAGS="$AM_LDFLAGS -L$zlib_lib"
+    fi
+
+    AC_CHECK_LIB([z], [compress2],,
+                 [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_ZLIB])
+    AC_CHECK_FUNC([compress2], [HAVE_COMPRESS2="yes"])
+
+    if test -z "$HAVE_ZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
+      AC_MSG_ERROR([couldn't find zlib library])
+    fi
+    ;;
+esac
+
+if test "x$HAVE_ZLIB" = "xyes" -a "x$HAVE_ZLIB_H" = "xyes" -a "x$HAVE_COMPRESS2" = "xyes"; then
+    AC_DEFINE([HAVE_FILTER_DEFLATE], [1], [Define if support for deflate (zlib) filter is enabled])
+    USE_FILTER_DEFLATE="yes"
+
+    ## Add "deflate" to external filter list
+    if test "X$EXTERNAL_FILTERS" != "X"; then
+        EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
+    fi
+    EXTERNAL_FILTERS="${EXTERNAL_FILTERS}deflate(zlib)"
+fi
+
+
+## ----------------------------------------------------------------------
+## Is the szlib present? It has a header file `szlib.h' and a library
+## `-lsz' and their locations might be specified with the `--with-szlib'
+## command-line switch. The value is an include path and/or a library path.
+## If the library path is specified then it must be preceded by a comma.
+##
+AC_SUBST([USE_FILTER_SZIP]) USE_FILTER_SZIP="no"
+AC_ARG_WITH([szlib],
+            [AS_HELP_STRING([--with-szlib=DIR],
+                            [Use szlib library for external szlib I/O
+                             filter [default=no]])],,
+            [withval=no])
+
+case $withval in
+  yes)
+    HAVE_SZLIB="yes"
+    AC_CHECK_HEADERS([szlib.h], [HAVE_SZLIB_H="yes"])
+    AC_CHECK_LIB([sz], [SZ_BufftoBuffCompress],, [unset HAVE_SZLIB])
+
+    if test -z "$HAVE_SZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
+      AC_MSG_ERROR([couldn't find szlib library])
+    fi
+    ;;
+  no)
+    HAVE_SZLIB="no"
+    AC_MSG_CHECKING([for szlib])
+    AC_MSG_RESULT([suppressed])
+    ;;
+  *)
+    HAVE_SZLIB="yes"
+    case "$withval" in
+      *,*)
+        szlib_inc="`echo $withval |cut -f1 -d,`"
+        szlib_lib="`echo $withval |cut -f2 -d, -s`"
+        ;;
+      *)
+        if test -n "$withval"; then
+          szlib_inc="$withval/include"
+          szlib_lib="$withval/lib"
+        fi
+        ;;
+    esac
+    
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$szlib_inc" = "X/usr/include"; then
+      szlib_inc=""
+    fi 
+    if test "X$szlib_lib" = "X/usr/lib"; then
+      szlib_lib=""
+    fi
+    
+    saved_CPPFLAGS="$CPPFLAGS"
+    saved_AM_CPPFLAGS="$AM_CPPFLAGS"
+    saved_LDFLAGS="$LDFLAGS"
+    saved_AM_LDFLAGS="$AM_LDFLAGS"
+    
+    if test -n "$szlib_inc"; then
+      CPPFLAGS="$CPPFLAGS -I$szlib_inc"
+      AM_CPPFLAGS="$AM_CPPFLAGS -I$szlib_inc"
+    fi
+    
+    AC_CHECK_HEADERS([szlib.h],
+                     [HAVE_SZLIB_H="yes"],
+                     [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"])
+
+    if test -n "$szlib_lib"; then
+      LDFLAGS="$LDFLAGS -L$szlib_lib"
+      AM_LDFLAGS="$AM_LDFLAGS -L$szlib_lib"
+    fi
+    
+    AC_CHECK_LIB([sz], [SZ_BufftoBuffCompress],,
+                 [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_SZLIB])
+
+    if test -z "$HAVE_SZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
+      AC_MSG_ERROR([couldn't find szlib library])
+    fi
+    ;;
+esac
+
+if test "x$HAVE_SZLIB" = "xyes" -a "x$HAVE_SZLIB_H" = "xyes"; then
+    ## SZLIB library is available.  Check if it can encode
+    AC_MSG_CHECKING([for szlib encoder])
+
+    ## Set LD_LIBRARY_PATH so encoder test can find the library and run.
+    ## Also add LL_PATH substitution to Makefiles so they can use the 
+    ## path as well, for testing examples.
+    if test -z "$LD_LIBRARY_PATH"; then
+    export LD_LIBRARY_PATH="$szlib_lib"
+    else
+    export LD_LIBRARY_PATH="$szlib_lib:$LD_LIBRARY_PATH"
+    fi
+
+    AC_SUBST([LL_PATH]) LL_PATH="$LD_LIBRARY_PATH"
+
+    AC_CACHE_VAL([hdf5_cv_szlib_can_encode],
+        [AC_TRY_RUN([
+        #include <szlib.h>
+        
+        int main(void)
+        {       
+                /* SZ_encoder_enabled returns 1 if encoder is present */
+            if(SZ_encoder_enabled() == 1)
+                exit(0);
+            else
+                exit(1);
+        }
+        ], [hdf5_cv_szlib_can_encode=yes], [hdf5_cv_szlib_can_encode=no],)])
+    
+    AC_DEFINE([HAVE_FILTER_SZIP], [1], 
+            [Define if support for szip filter is enabled])
+    USE_FILTER_SZIP="yes"
+
+    if test ${hdf5_cv_szlib_can_encode} = "yes"; then
+        AC_MSG_RESULT([yes])
+    fi 
+    if test ${hdf5_cv_szlib_can_encode} = "no"; then
+        AC_MSG_RESULT([no])
+    fi 
+    
+    ## Add "szip" to external filter list
+    if test ${hdf5_cv_szlib_can_encode} = "yes"; then
+        if test "X$EXTERNAL_FILTERS" != "X"; then
+            EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
+        fi
+        EXTERNAL_FILTERS="${EXTERNAL_FILTERS}szip(encoder)"
+    fi 
+    if test ${hdf5_cv_szlib_can_encode} = "no"; then
+        if test "X$EXTERNAL_FILTERS" != "X"; then
+            EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
+        fi
+        EXTERNAL_FILTERS="${EXTERNAL_FILTERS}szip(no encoder)"
+    fi
+
+fi
+
+AM_CONDITIONAL([BUILD_SHARED_SZIP_CONDITIONAL], [test "X$USE_FILTER_SZIP" = "Xyes" && test "X$LL_PATH" != "X"])
+
+## Checkpoint the cache
+AC_CACHE_SAVE
+
+## ----------------------------------------------------------------------
+## Is the Pthreads library present?  It has a header file `pthread.h' and
+## a library `-lpthread' and their locations might be specified with the
+## `--with-pthread' command-line switch.  The value is an include path
+## and/or a library path.  If the library path is specified then it must
+## be preceded by a comma.
+##
+AC_SUBST([PTHREAD]) PTHREAD=yes
+AC_ARG_WITH([pthread],
+            [AS_HELP_STRING([--with-pthread=DIR],
+                            [Use the Pthreads library [default=no]])],,
+            [withval=no])
+
+case "$withval" in
+  yes)
+    AC_CHECK_HEADERS([pthread.h])
+    AC_CHECK_LIB([pthread], [pthread_self],, [unset PTHREAD])
+    ;;
+  no)
+    AC_MSG_CHECKING([for pthread])
+    AC_MSG_RESULT([suppressed])
+    unset PTHREAD
+    ;;
+  *)
+    case "$withval" in
+      *,*)
+        pthread_inc="`echo $withval | cut -f1 -d,`"
+        pthread_lib="`echo $withval | cut -f2 -d, -s`"
+        ;;
+      *)
+        if test -n "$withval"; then
+          pthread_inc="$withval/include"
+          pthread_lib="$withval/lib"
+        fi
+        ;;
+    esac
+
+    ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+    ## can mess some compilers up.
+    if test "X$pthread_inc" = "X/usr/include"; then
+      pthread_inc=""
+    fi
+    if test "X$pthread_lib" = "X/usr/lib"; then
+      pthread_lib=""
+    fi
+
+    if test -n "$pthread_inc"; then
+      saved_CPPFLAGS="$CPPFLAGS"
+      saved_AM_CPPFLAGS="$AM_CPPFLAGS"
+      CPPFLAGS="$CPPFLAGS -I$pthread_inc"
+      AM_CPPFLAGS="$AM_CPPFLAGS -I$pthread_inc"
+      AC_CHECK_HEADERS([pthread.h],, [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"; unset PTHREAD])
+    else
+      AC_CHECK_HEADERS([pthread.h],, [unset PTHREAD])
+    fi
+
+    if test -n "$pthread_lib"; then
+      saved_LDFLAGS="$LDFLAGS"
+      saved_AM_LDFLAGS="$AM_LDFLAGS"
+      LDFLAGS="$LDFLAGS -L$pthread_lib"
+      AM_LDFLAGS="$AM_LDFLAGS -L$pthread_lib"
+      AC_CHECK_LIB([pthread], [pthread_self],,
+                   [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset PTHREAD])
+
+    else
+      AC_CHECK_LIB([pthread], [pthread_self],, [unset PTHREAD])
+    fi
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Enable thread-safe version of library.  It requires Pthreads support.
+##
+AC_MSG_CHECKING([for thread safe support])
+AC_ARG_ENABLE([threadsafe],
+              [AS_HELP_STRING([--enable-threadsafe],
+                              [Enable thread safe capability])],
+              [THREADSAFE=$enableval])
+
+## The --enable-threadsafe flag is not compatible with --enable-cxx.
+## If the user tried to specify both flags, throw an error, unless
+## they also provided the --enable-unsupported flag.
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  if test "X${HDF_CXX}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then
+    AC_MSG_ERROR([--enable-cxx and --enable-threadsafe flags are incompatible. Use --enable-unsupported to override this error.])
+  fi
+fi
+
+## --enable-threadsafe is also incompatible with --enable-fortran, unless
+## --enable-unsupported has been specified on the configure line.
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  if test "X${HDF_FORTRAN}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then
+    AC_MSG_ERROR([--enable-fortran and --enable-threadsafe flags are incompatible. Use --enable-unsupported to override this error.])
+  fi
+fi
+
+case "X-$THREADSAFE" in
+  X-|X-no)
+    AC_MSG_RESULT([no])
+    ;;
+  X-yes)
+    ## Check that we can link a simple Pthread program.
+    AC_TRY_LINK(, [pthread_self()],
+                [AC_MSG_RESULT([yes]); THREADSAFE=yes],
+                [AC_MSG_ERROR([needed pthread library not available])])
+    ;;
+  *)
+    AC_MSG_RESULT([error])
+    AC_MSG_ERROR([\'$enableval\' is not a valid threadsafe type])
+    ;;
+esac
+
+if test "X$THREADSAFE" = "Xyes"; then
+  AC_DEFINE([HAVE_THREADSAFE], [1], [Define if we have thread safe support])
+fi
+
+## ----------------------------------------------------------------------
+## Check for MONOTONIC_TIMER support (used in clock_gettime).  This has
+## to be done after any POSIX/BSD defines to ensure that the test gets
+## the correct POSIX level on linux.
+AC_CHECK_DECL([CLOCK_MONOTONIC],[have_clock_monotonic="yes"],[have_clock_monotonic="no"],[[#include <time.h>]])
+
+## ----------------------------------------------------------------------
+## How does one figure out the local time zone?  Anyone know of a
+## Posix way to do this?
+##
+
+## First check if `struct tm' has a `tm_gmtoff' member.
+AC_MSG_CHECKING([for tm_gmtoff in struct tm])
+AC_TRY_COMPILE([
+  #include <sys/time.h>
+  #include <time.h>], [struct tm tm; tm.tm_gmtoff=0;],
+  [AC_DEFINE([HAVE_TM_GMTOFF], [1],
+          [Define if `tm_gmtoff' is a member of `struct tm'])
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+## check if `struct tm' has a `__tm_gmtoff' member.
+AC_MSG_CHECKING([for __tm_gmtoff in struct tm])
+AC_TRY_COMPILE([
+  #include <sys/time.h>
+  #include <time.h>], [struct tm tm; tm.__tm_gmtoff=0;],
+  [AC_DEFINE([HAVE___TM_GMTOFF], [1],
+          [Define if `__tm_gmtoff' is a member of `struct tm'])
+     AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+## Check whether the global variable `timezone' is defined.
+AC_MSG_CHECKING([for global timezone variable])
+
+case "`uname`" in
+  CYGWIN*)
+    AC_MSG_RESULT([disabled in CYGWIN])
+    ;;
+  *)
+    AC_TRY_LINK([
+    #include <sys/time.h>
+    #include <time.h>], [timezone=0;],
+    [AC_DEFINE([HAVE_TIMEZONE], [1],
+              [Define if `timezone' is a global variable])
+      AC_MSG_RESULT([yes])],
+    [AC_MSG_RESULT([no])])
+    ;;
+esac
+
+## Check whether `struct timezone' is defined.
+AC_STRUCT_TIMEZONE
+AC_MSG_CHECKING([for struct timezone])
+AC_TRY_COMPILE([
+  #include <sys/types.h>
+  #include <sys/time.h>
+  #include <time.h>], [struct timezone tz; tz.tz_minuteswest=0;],
+  [AC_DEFINE([HAVE_STRUCT_TIMEZONE], [1],
+          [Define if `struct timezone' is defined])
+    have_struct_tz="yes"
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+## If gettimeofday() is going to be used, make sure it uses the timezone struct
+
+if test "$have_gettime" = "yes" -a "$have_struct_tz" = "yes"; then
+   AC_MSG_CHECKING(whether gettimeofday() gives timezone)
+   AC_CACHE_VAL([hdf5_cv_gettimeofday_tz],
+       [AC_TRY_RUN([
+          #include <time.h>
+          #include <sys/time.h>
+          int main(void)
+          {
+             struct timeval tv;
+             struct timezone tz;
+             tz.tz_minuteswest = 7777;  /* Initialize to an unreasonable number */
+             tz.tz_dsttime = 7;
+             gettimeofday(&tv, &tz);
+                /* Check whether the function returned any value at all */
+             if(tz.tz_minuteswest == 7777 && tz.tz_dsttime == 7)
+                exit(1);
+             else exit (0);
+          }], 
+          [hdf5_cv_gettimeofday_tz=yes], 
+          [hdf5_cv_gettimeofday_tz=no])])
+
+   if test ${hdf5_cv_gettimeofday_tz} = "yes"; then
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([GETTIMEOFDAY_GIVES_TZ], [1],
+                [Define if gettimeofday() populates the tz pointer passed in])
+   else
+      AC_MSG_RESULT([no])
+   fi
+fi 
+
+## ----------------------------------------------------------------------
+## Does the struct stat have the st_blocks field?  This field is not Posix.
+##
+AC_MSG_CHECKING([for st_blocks in struct stat])
+AC_TRY_COMPILE([
+  #include <sys/stat.h>],[struct stat sb; sb.st_blocks=0;],
+  [AC_DEFINE([HAVE_STAT_ST_BLOCKS], [1],
+          [Define if `struct stat' has the `st_blocks' field])
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+## ----------------------------------------------------------------------
+## How do we figure out the width of a tty in characters?
+##
+AC_CHECK_FUNCS([_getvideoconfig gettextinfo GetConsoleScreenBufferInfo])
+AC_CHECK_FUNCS([_scrsize ioctl])
+
+AC_MSG_CHECKING([for struct videoconfig])
+AC_TRY_COMPILE(,[struct videoconfig w; w.numtextcols=0;],
+  [AC_DEFINE([HAVE_STRUCT_VIDEOCONFIG], [1],
+          [Define if `struct videoconfig' is defined])
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([for struct text_info])
+AC_TRY_COMPILE(, [struct text_info w; w.screenwidth=0;],
+  [AC_DEFINE([HAVE_STRUCT_TEXT_INFO], [1],
+          [Define if `struct text_info' is defined])
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([for TIOCGWINSZ])
+AC_TRY_COMPILE([#include <sys/ioctl.h>],[int w=TIOCGWINSZ;],
+  [AC_DEFINE([HAVE_TIOCGWINSZ], [1],
+          [Define if the ioctl TIOGWINSZ is defined])
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([for TIOCGETD])
+AC_TRY_COMPILE([#include <sys/ioctl.h>],[int w=TIOCGETD;],
+  [AC_DEFINE([HAVE_TIOCGETD], [1],
+          [Define if the ioctl TIOCGETD is defined])
+    AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])])
+
+
+## ----------------------------------------------------------------------
+## Check for functions.
+##
+AC_CHECK_FUNCS([alarm BSDgettimeofday fork frexpf frexpl])
+AC_CHECK_FUNCS([gethostname getpwuid getrusage lstat])
+AC_CHECK_FUNCS([rand_r random setsysinfo])
+AC_CHECK_FUNCS([signal longjmp setjmp siglongjmp sigsetjmp sigprocmask])
+AC_CHECK_FUNCS([snprintf srandom strdup symlink system])
+AC_CHECK_FUNCS([tmpfile vasprintf waitpid])
+
+## Check for vsnprintf() separately, so we can detect situations where it
+## doesn't return the correct size for formatted strings that are too large
+## for the buffer provided
+AC_CHECK_FUNCS([vsnprintf],
+
+    ## Check if vsnprintf() returns correct size for strings that don't fit
+    ## into the size allowed.  If vsnprintf() works correctly on this platform,
+    ## it should return a value of 42 for the test below
+    ##
+    ## Note that vsnprintf fails in two different ways:
+    ##         - In IRIX64, calls to vnsprintf() with a formatted string that
+    ##                 is larger than the buffer size allowed incorrectly
+    ##                 return the size of the buffer minus one.
+    ##         - In HP/UX, calls to vsnprintf() with a formatted string that
+    ##                 is larger than the buffer size allowed incorrectly
+    ##                 return (-1)
+    AC_MSG_CHECKING([if vsnprintf returns correct value])
+
+    AC_CACHE_VAL([hdf5_cv_vsnprintf_works],
+        AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+int test_vsnprintf(const char *fmt,...)
+{
+    va_list     ap;
+    char *s = malloc(16);
+    int ret;
+
+    va_start(ap, fmt);
+    ret=vsnprintf(s,16,"%s",ap);
+    va_end(ap);
+
+    return(ret!=42 ? 1 : 0);
+}
+
+int main(void)
+{
+    exit(test_vsnprintf("%s","A string that is longer than 16 characters"));
+}
+   ],[hdf5_cv_vsnprintf_works=yes],[hdf5_cv_vsnprintf_works=no],))
+
+       if test ${hdf5_cv_vsnprintf_works} = "yes"; then
+          AC_MSG_RESULT([yes])
+          AC_DEFINE([VSNPRINTF_WORKS], [1],
+                    [Define if vsnprintf() returns the correct value for formatted strings that don't fit into size allowed])
+       else
+          AC_MSG_RESULT([no])
+       fi
+    ,)
+
+## ----------------------------------------------------------------------
+## Check that a lone colon can be used as an argument
+## This is not true on Cray X1, which interprets a lone colon as a
+## system command.
+##
+AC_CACHE_CHECK([if lone colon can be used as an argument],
+               [hdf5_cv_lone_colon],
+               [
+  echo "int main(int argc, char * argv[]) {return 0;}" > conftest.c
+  $CC $CFLAGS conftest.c > /dev/null 2> /dev/null
+  echo "./a.out :" > conftest.sh
+  chmod 700 conftest.sh
+
+  ./conftest.sh 2> conftest.out
+  rm a.out
+  TEST_OUTPUT=`cat conftest.out`
+
+  if test "X$TEST_OUTPUT" = "X"; then
+    hdf5_cv_lone_colon=yes
+  else
+    hdf5_cv_lone_colon=no
+  fi
+               ])
+
+AC_SUBST([H5_LONE_COLON]) H5_LONE_COLON="$hdf5_cv_lone_colon"
+
+## ----------------------------------------------------------------------
+## Check compiler characteristics
+##
+AC_C_CONST
+AC_C_INLINE
+
+AC_MSG_CHECKING([for __attribute__ extension])
+AC_TRY_COMPILE(,[int __attribute__((unused)) x],
+               [AC_DEFINE([HAVE_ATTRIBUTE], [1],
+                         [Define if the __attribute__(()) extension is present])
+                 AC_MSG_RESULT([yes])],
+               [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([for __func__ extension])
+AC_TRY_COMPILE(,[ const char *fname = __func__; ],
+               [AC_DEFINE([HAVE_C99_FUNC], [1],
+                         [Define if the compiler understands the __func__ keyword])
+                 AC_MSG_RESULT([yes])],
+               [AC_MSG_RESULT([no])])
+AC_MSG_CHECKING([for __FUNCTION__ extension])
+AC_TRY_COMPILE(,[ const char *fname = __FUNCTION__; ],
+               [AC_DEFINE([HAVE_FUNCTION], [1],
+                         [Define if the compiler understands the __FUNCTION__ keyword])
+                 AC_MSG_RESULT([yes])],
+               [AC_MSG_RESULT([no])])
+AC_MSG_CHECKING([for C99 designated initialization support])
+AC_TRY_COMPILE(,[
+                typedef struct {
+                    int x;
+                    union {
+                        int i;
+                        double d;
+                    } u;
+                } di_struct_t;
+                di_struct_t x = {0, { .d = 0.0}}; ],
+               [AC_DEFINE([HAVE_C99_DESIGNATED_INITIALIZER], [1],
+                         [Define if the compiler understands C99 designated initialization of structs and unions])
+                 AC_MSG_RESULT([yes])],
+               [AC_MSG_RESULT([no])])
+
+## ----------------------------------------------------------------------
+## Try to figure out how to print `long long'.  Some machines use `%lld'
+## and others use `%qd'.  There may be more!  The final `l' is a
+## default in case none of the others work.
+## Need to patch up LD_LIBRARY_PATH so that the execution can find all
+## the dynamic library.  The correct way to do it should be updating
+## LD_LIBRARY_PATH along with LDFLAGS or do it with the AC_TRY_RUN macro.
+##
+AC_MSG_CHECKING([how to print long long])
+AC_CACHE_VAL([hdf5_cv_printf_ll], [
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo $AM_LDFLAGS $LDFLAGS | sed -e 's/-L/:/g' -e 's/ //g'`"
+export LD_LIBRARY_PATH
+
+for hdf5_cv_printf_ll in l ll L q unknown; do
+   AC_TRY_RUN([
+     #include <stdio.h>
+     #include <stdlib.h>
+     #include <string.h>
+
+     int main(void)
+     {
+	char *s = malloc(128);
+	long long x = (long long)1048576 * (long long)1048576;
+	sprintf(s,"%${hdf5_cv_printf_ll}d",x);
+	exit(strcmp(s,"1099511627776"));
+     }
+   ], [break],,[continue])
+done])
+
+AC_MSG_RESULT([%${hdf5_cv_printf_ll}d and %${hdf5_cv_printf_ll}u])
+AC_DEFINE_UNQUOTED([PRINTF_LL_WIDTH], ["$hdf5_cv_printf_ll"], 
+                   [Width for printf() for type `long long' or `__int64', use `ll'])
+
+## ----------------------------------------------------------------------
+## Check if pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM)
+## is supported on this system
+##
+AC_MSG_CHECKING([Threads support system scope])
+AC_CACHE_VAL([hdf5_cv_system_scope_threads],
+  [AC_TRY_RUN([
+    #if STDC_HEADERS
+    #include <stdlib.h>
+    #include <pthread.h>
+    #endif
+
+    int main(void)
+    {
+      pthread_attr_t attribute;
+      int ret;
+
+      pthread_attr_init(&attribute);
+      ret=pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
+      exit(ret==0 ? 0 : 1);
+    }
+  ], [hdf5_cv_system_scope_threads=yes], [hdf5_cv_system_scope_threads=no],)])
+
+if test ${hdf5_cv_system_scope_threads} = "yes"; then
+  AC_DEFINE([SYSTEM_SCOPE_THREADS], [1],
+            [Define if your system supports pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM) call.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Checking to see if GPFS is available on this filesystem
+##
+AC_ARG_ENABLE([gpfs],
+              [AS_HELP_STRING([--enable-gpfs],
+                              [Enable GPFS hints for the MPI/POSIX file
+                               driver. [default=no]])],,
+              [enableval=no])
+
+case "X-$enableval" in
+  X-yes)
+    AC_CHECK_HEADERS([gpfs.h],
+                     [AC_MSG_CHECKING([for GPFS support])
+                     AC_TRY_COMPILE([#include <gpfs.h>],
+                                    [int fd = 0; gpfs_fcntl(fd, (void *)0);],
+                                    [AC_DEFINE([HAVE_GPFS], [1],
+                                               [Define if we have GPFS support])
+                                       AC_MSG_RESULT([yes])
+                                       LIBS="$LIBS -lgpfs"
+                                       GPFS="yes"],
+                                    [AC_MSG_RESULT([no])
+                                       GPFS="no"])])
+    ;;
+  X-no|*)
+    AC_MSG_CHECKING([for gpfs])
+    AC_MSG_RESULT([suppressed])
+    ;;
+esac
+   
+## ----------------------------------------------------------------------
+## Turn on debugging by setting compiler flags
+## This must come after the enable-production since it depends on production.
+##
+AC_MSG_CHECKING([for debug flags])
+AC_ARG_ENABLE([debug],
+              [AS_HELP_STRING([--enable-debug=all],
+                              [Turn on debugging in all packages. One may
+                               also specify a comma-separated list of
+                               package names without the leading H5 or
+                               the word no. The default is most packages
+			       if production is disabled; no if it is enabled.
+                               ])],
+              [DEBUG_PKG=$enableval])
+
+## Default to no if producton is enabled
+if test "X-$DEBUG_PKG" = X- ; then
+    if test "$enable_production" = yes ; then
+	DEBUG_PKG=no
+    else
+	DEBUG_PKG=yes
+    fi
+fi
+
+AC_SUBST([DEBUG_PKG])
+all_packages="ac,b,b2,d,e,f,g,hg,hl,i,mf,mm,o,p,s,t,v,z"
+case "X-$DEBUG_PKG" in
+  X-yes)
+    DEBUG_PKG="d,e,f,g,hg,i,mm,o,p,s,t,v,z"
+    H5_CPPFLAGS="$H5_CPPFLAGS -UNDEBUG"
+    AC_MSG_RESULT([default ($DEBUG_PKG)])
+    ;;
+  X-all)
+    DEBUG_PKG=$all_packages
+    H5_CPPFLAGS="$H5_CPPFLAGS -UNDEBUG"
+    AC_MSG_RESULT([all ($DEBUG_PKG)])
+    ;;
+  X-no|X-none)
+    AC_MSG_RESULT([none])
+    DEBUG_PKG=
+    H5_CPPFLAGS="$H5_CPPFLAGS -DNDEBUG"
+    ;;
+  *)
+    AC_MSG_RESULT([$DEBUG_PKG])
+    ;;
+esac
+
+if test -n "$DEBUG_PKG"; then
+  for pkg in `echo $DEBUG_PKG | ${TR} ${as_cr_letters}"," ${as_cr_LETTERS}" "`; do
+    H5_CPPFLAGS="$H5_CPPFLAGS -DH5${pkg}_DEBUG"
+  done
+fi
+
+## ----------------------------------------------------------------------
+## Check if they would like the function stack support compiled in
+##
+AC_MSG_CHECKING([whether function stack tracking is enabled])
+AC_ARG_ENABLE([codestack],
+              [AS_HELP_STRING([--enable-codestack],
+                              [Enable the function stack tracing (for developer debugging).])],
+              [CODESTACK=$enableval])
+
+case "X-$CODESTACK" in
+  X-yes)
+      CODESTACK=yes
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([HAVE_CODESTACK], [1],
+                [Define if the function stack tracing code is to be compiled in])
+    ;;
+  *)
+      CODESTACK=no
+      AC_MSG_RESULT([no])
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Check if they would like the metadata trace file code compiled in
+##
+AC_MSG_CHECKING([whether metadata trace file code is enabled])
+AC_ARG_ENABLE([metadata-trace-file],
+              [AS_HELP_STRING([--enable-metadata-trace-file],
+                              [Enable metadata trace file collection.])],
+              [METADATATRACEFILE=$enableval])
+
+case "X-$METADATATRACEFILE" in
+  X-yes)
+      METADATATRACEFILE=yes
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([METADATA_TRACE_FILE], [1],
+                [Define if the metadata trace file code is to be compiled in])
+    ;;
+  *)
+      METADATATRACEFILE=no
+      AC_MSG_RESULT([no])
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Enable tracing of the API
+## This must come after the enable-debug since it depends on debug.
+##
+AC_SUBST([TRACE_API])
+AC_MSG_CHECKING([for API tracing]);
+AC_ARG_ENABLE([trace],
+              [AS_HELP_STRING([--enable-trace],
+                              [Enable API tracing capability. Default=no
+                               if debug is disabled.])],
+              [TRACE=$enableval])
+
+## Default to no if debug is disabled
+if test "X-$TRACE" = X- ; then
+  if test -z "$DEBUG_PKG" ; then
+    TRACE=no
+  else
+    TRACE=yes
+  fi
+fi
+
+case "X-$TRACE" in
+  X-yes)
+    AC_MSG_RESULT([yes])
+    TRACE_API=yes
+    H5_CPPFLAGS="$H5_CPPFLAGS -DH5_DEBUG_API"
+    ;;
+  X-no|*)
+    AC_MSG_RESULT([no])
+    TRACE_API=no
+    H5_CPPFLAGS="$H5_CPPFLAGS -UH5_DEBUG_API"
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Enable instrumenting of the library's internal operations
+## This must come after the enable-debug since it depends on debug.
+##
+AC_SUBST([INSTRUMENT_LIBRARY])
+AC_MSG_CHECKING([for instrumented library]);
+AC_ARG_ENABLE([instrument],
+              [AS_HELP_STRING([--enable-instrument],
+                              [Enable library instrumentation of optimization
+                                tracing.  Default=no if debug is disabled.])],
+              [INSTRUMENT=$enableval])
+
+## Default to no if debug is disabled
+if test "X-$INSTRUMENT" = X- ; then
+  if test -z "$DEBUG_PKG" ; then
+    INSTRUMENT=no
+  else
+    INSTRUMENT=yes
+  fi
+fi
+
+case "X-$INSTRUMENT" in
+  X-yes)
+    AC_MSG_RESULT([yes])
+    INSTRUMENT_LIBRARY=yes
+    AC_DEFINE([HAVE_INSTRUMENTED_LIBRARY], [1],
+              [Define if library will contain instrumentation to detect correct optimization operation])
+    ;;
+  X-no|*)
+    AC_MSG_RESULT([no])
+    INSTRUMENT_LIBRARY=no
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Check if they would like to securely clear file buffers before they are
+##     written.
+##
+AC_SUBST([CLEARFILEBUF])
+AC_MSG_CHECKING([whether to clear file buffers])
+AC_ARG_ENABLE([clear-file-buffers],
+              [AS_HELP_STRING([--enable-clear-file-buffers],
+                              [Securely clear file buffers before writing
+                              to file.  Default=yes.])],
+              [CLEARFILEBUF=$enableval])
+
+case "X-$CLEARFILEBUF" in
+  *)
+      CLEARFILEBUF=yes
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([CLEAR_MEMORY], [1],
+                [Define if the memory buffers being written to disk should be
+                cleared before writing.])
+    ;;
+  X-no)
+      CLEARFILEBUF=no
+      AC_MSG_RESULT([no])
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Check if they would like to use a memory checking tool (like valgrind's
+##     'memcheck' tool, or Rational Purify, etc) and the library should be
+##     more scrupulous with it's memory operations.  Enabling this also
+##     disables the library's free space manager code.
+##
+AC_SUBST([USINGMEMCHECKER])
+AC_MSG_CHECKING([whether a memory checking tool will be used])
+AC_ARG_ENABLE([using-memchecker],
+              [AS_HELP_STRING([--enable-using-memchecker],
+                              [Enable this option if a memory allocation and/or
+                              bounds checking tool will be used on the HDF5
+                              library.  Enabling this causes the library to be
+                              more picky about it's memory operations and also
+                              disables the library's free space manager code.
+                              Default=no.])],
+              [USINGMEMCHECKER=$enableval])
+
+case "X-$USINGMEMCHECKER" in
+  X-yes)
+      USINGMEMCHECKER=yes
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([USING_MEMCHECKER], [1],
+                [Define if a memory checking tool will be used on the library,
+                to cause library to be very picky about memory operations and
+                also disable the internal free list manager code.])
+    ;;
+  *)
+      USINGMEMCHECKER=no
+      AC_MSG_RESULT([no])
+    ;;
+esac
+
+## Checkpoint the cache
+AC_CACHE_SAVE
+
+## What header files and libraries do we have to look for for parallel
+## support?  For the most part, search paths are already specified with
+## CPPFLAGS and LDFLAGS or are known to the compiler.  If the user says
+## `--disable-parallel' but specifies a known parallel compiler (like mpicc
+## or mpcc) then parallel support is enabled but configure doesn't search
+## for any parallel header files or libraries.
+##
+AC_ARG_ENABLE([parallel],
+              [AS_HELP_STRING([--enable-parallel],
+                              [Search for MPI-IO and MPI support files])])
+
+## The --enable-parallel flag is not compatible with --enable-cxx.
+## If the user tried to specify both flags, throw an error, unless
+## they also provided the --enable-unsupported flag.
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  if test "X${HDF_CXX}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
+    AC_MSG_ERROR([--enable-cxx and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error.])
+  fi
+fi
+
+## --enable-parallel is also incompatible with --enable-threadsafe, unless
+## --enable-unsupported has been specified on the configure line.
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  if test "X${THREADSAFE}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
+    AC_MSG_ERROR([--enable-threadsafe and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error.])
+  fi
+fi
+
+## It's possible to build in parallel by specifying a parallel compiler
+## without using the --enable-parallel flag.  This isn't allowed with
+## C++ or threadsafe, either, unless the --enable-unsupported flag 
+## has also been specified.
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  if test "X${PARALLEL}" != "X" -a "X${enable_cxx}" = "Xyes" ; then
+    AC_MSG_ERROR([An MPI compiler is being used; --enable-cxx is not allowed. Use --enable-unsupported to override this error.])
+  fi
+  if test "X${PARALLEL}" != "X" -a "X${THREADSAFE}" = "Xyes"; then
+    AC_MSG_ERROR([An MPI compiler is being used; --enable-threadsafe is not allowed. Use --enable-unsupported to override this error.])
+  fi
+fi
+
+AC_MSG_CHECKING([for parallel support files])
+case "X-$enable_parallel" in
+  X-|X-no|X-none)
+    ## Either we are not compiling for parallel or the header and
+    ## library files and locations are known to the compiler (this is
+    ## the case for a correct installation of mpicc for instance).
+    AC_MSG_RESULT([skipped])
+    ;;
+
+  X-yes)
+    ## We want to compile a parallel library with a compiler that
+    ## may already know how to link with MPI and MPI-IO.
+    AC_MSG_RESULT([provided by compiler])
+    PARALLEL=yes
+
+    ## Try link a simple MPI program.  If fail, try again with -lmpi and
+    ## -lmpich.
+    AC_TRY_LINK(, [MPI_Init()],,
+	[AC_CHECK_LIB([mpi], [MPI_Init],,
+	    [AC_CHECK_LIB([mpich], [MPI_Init],, [PARALLEL=no])])])
+
+    ## Then try link a simple MPI-IO program. If fail, try again with
+    ## -lmpio.
+    if test "X$PARALLEL" = "Xyes"; then
+      AC_TRY_LINK(, [MPI_File_open()],,
+                  [AC_CHECK_LIB([mpio], [MPI_File_open],, [PARALLEL=no])])
+    fi
+
+    if test "X$HDF_FORTRAN" = "Xyes"; then
+      ## Change to the Fortran 90 language
+      AC_LANG_PUSH(Fortran)
+
+      ## Try link a simple MPI program.  If fail, try again with -lmpi.
+      AC_LINK_IFELSE([
+          program main
+          include 'mpif.h'
+          integer:: ierr
+          call mpi_file_open( ierr )
+          end],,
+          [AC_CHECK_LIB([mpi], [
+            include 'mpif.h'
+            integer:: ierr
+            call mpi_file_open( ierr )],, [PARALLEL=no])])
+
+      ## Then try link a simple MPI-IO program.  If fail, try again with
+      ## -lmpio.
+      if test "X$PARALLEL" = "Xyes"; then
+        AC_LINK_IFELSE([
+            program main
+            include 'mpif.h'
+            integer:: ierr
+            call mpi_file_open( ierr )
+            end],,
+            [AC_CHECK_LIB([mpio], [
+              include 'mpif.h'
+              integer:: ierr
+              call mpi_file_open( ierr )],, [PARALLEL=no])])
+      fi
+
+      ## Change to the C language
+      AC_LANG_POP(Fortran)
+    fi
+
+    ## Set RUNPARALLEL to mpiexec if not set yet.
+    ## Check for building on Cray if RUNPARALLEL is not yet set by checking
+    ## for 'aprun' command (which is the parallel job launcher, like mpiexec).
+    if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
+        ## Find the path where aprun is located.
+  	for path in `echo $PATH | ${TR} ":" " "`; do
+  	  if test -x $path/aprun; then
+            RUNPARALLEL="aprun -q -n \$\${NPROCS:=6}"
+  	    break;
+  	  fi
+	done
+    fi
+
+    ## Set RUNPARALLEL to mpiexec if not set yet.
+    if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
+      RUNPARALLEL="mpiexec -n \$\${NPROCS:=6}"
+    fi
+    ;;
+
+  *)
+    AC_MSG_RESULT([error])
+    AC_MSG_ERROR([\'$enable_parallel\' is not a valid parallel search type])
+    ;;
+esac
+
+## ----------------------------------------------------------------------
+## Print some other parallel information and do some sanity checks.
+##
+AC_SUBST([ADD_PARALLEL_FILES]) ADD_PARALLEL_FILES="no"
+
+if test -n "$PARALLEL"; then
+  ## The 'testpar' directory should participate in the build
+  TESTPARALLEL=testpar
+
+  ## We are building a parallel library
+  AC_DEFINE([HAVE_PARALLEL], [1], [Define if we have parallel support])
+
+  ## Display what we found about running programs
+  AC_MSG_CHECKING([prefix for running on one processor])
+  AC_MSG_RESULT([$RUNSERIAL])
+  AC_MSG_CHECKING([prefix for running in parallel])
+  AC_MSG_RESULT([$RUNPARALLEL])
+
+  ## Check that we can link a simple MPI and MPI-IO application
+  AC_MSG_CHECKING([whether a simple MPI-IO program can be linked])
+  AC_TRY_LINK(, [MPI_Init(); MPI_File_open();],
+              [AC_MSG_RESULT([yes])],
+              [AC_MSG_RESULT([no])
+              AC_MSG_ERROR([unable to link a simple MPI-IO application])])
+
+  ## There *must* be some way to run in parallel even if it's just the
+  ## word `none'.
+  if test -z "$RUNPARALLEL"; then
+    AC_MSG_ERROR([no way to run a parallel program])
+  fi
+
+  ## If RUNSERIAL or RUNPARALLEL is the word `none' then replace it with
+  ## the empty string.
+  if test "X$RUNSERIAL" = "Xnone"; then
+    RUNSERIAL=""
+  fi
+  if test "X$RUNPARALLEL" = "Xnone"; then
+    RUNPARALLEL=""
+  fi
+
+  if test "X$HDF_FORTRAN" = "Xyes"; then
+    ADD_PARALLEL_FILES="yes"
+    AC_MSG_CHECKING([for MPI_Comm_c2f and MPI_Comm_f2c functions])
+
+    AC_TRY_LINK([#include <mpi.h>],
+      [MPI_Comm c_comm; MPI_Comm_c2f(c_comm)],
+      AC_DEFINE([HAVE_MPI_MULTI_LANG_Comm], [1],
+                [Define if `MPI_Comm_c2f' and `MPI_Comm_f2c' exists])
+      AC_MSG_RESULT([yes]),
+      AC_MSG_RESULT([no])
+    )
+
+    AC_MSG_CHECKING([for MPI_Info_c2f and MPI_Info_f2c functions])
+    AC_TRY_LINK([#include <mpi.h>],
+      [MPI_Info c_info; MPI_Info_c2f(c_info)],
+      AC_DEFINE([HAVE_MPI_MULTI_LANG_Info], [1],
+                [Define if `MPI_Info_c2f' and `MPI_Info_f2c' exists])
+      AC_MSG_RESULT([yes]),
+      AC_MSG_RESULT([no])
+    )
+  fi
+
+  ## --------------------------------------------------------------------
+  ## Do we want MPE instrumentation feature on?
+  ##
+  ## This must be done after enable-parallel is checked since it depends
+  ## on a mpich compiler.
+  ##
+  MPE=yes
+  AC_ARG_WITH([mpe],
+              [AS_HELP_STRING([--with-mpe=DIR],
+                              [Use MPE instrumentation [default=no]])],,
+              [withval=no])
+
+  case "X-$withval" in
+    X-|X-no|X-none)
+      AC_MSG_CHECKING([for MPE])
+      AC_MSG_RESULT([suppressed])
+      unset MPE
+      ;;
+    X-yes)
+      AC_CHECK_HEADERS([mpe.h],, [unset MPE])
+      AC_CHECK_LIB([mpe], [MPE_Init_log],, [unset MPE])
+      AC_CHECK_LIB([lmpe], [CLOG_Init],, [unset MPE])
+      ;;
+    *)
+      case "$withval" in
+        *,*)
+          mpe_inc="`echo $withval | cut -f1 -d,`"
+          mpe_lib="`echo $withval | cut -f2 -d, -s`"
+          ;;
+        *)
+          if test -n "$withval"; then
+            mpe_inc="$withval/include"
+            mpe_lib="$withval/lib"
+          fi
+          ;;
+      esac
+  
+      ## Trying to include -I/usr/include and -L/usr/lib is redundant and
+      ## can mess some compilers up.
+      if test "X$mpe_inc" = "X/usr/include"; then
+        mpe_inc=""
+      fi
+      if test "X$mpe_lib" = "X/usr/lib"; then
+        mpe_lib=""
+      fi
+  
+      if test -n "$mpe_inc"; then
+        saved_CPPFLAGS="$CPPFLAGS"
+        saved_AM_CPPFLAGS="$AM_CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS -I$mpe_inc"
+        AM_CPPFLAGS="$AM_CPPFLAGS -I$mpe_inc"
+        AC_CHECK_HEADERS([mpe.h],, [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"; unset MPE])
+      else
+        AC_CHECK_HEADERS([mpe.h],, [unset MPE])
+      fi
+  
+      if test -n "$mpe_lib"; then
+        saved_LDFLAGS="$LDFLAGS"
+        saved_AM_LDFLAGS="$AM_LDFLAGS"
+        LDFLAGS="$LDFLAGS -L$mpe_lib"
+        AM_LDFLAGS="$AM_LDFLAGS -L$mpe_lib"
+        AC_CHECK_LIB([mpe], [MPE_Init_log],,
+                     [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset MPE])
+        AC_CHECK_LIB([lmpe], [CLOG_Init],,
+                     [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset MPE])
+
+      else
+        AC_CHECK_LIB([mpe], [MPE_Init_log],, [unset MPE])
+        AC_CHECK_LIB([lmpe], [CLOG_Init],, [unset MPE])
+      fi
+      ;;
+  esac
+
+  if test "X-$MPE" = "X-yes"; then
+    AC_DEFINE([HAVE_MPE], [1], [Define if we have MPE support])
+  fi
+
+  ## ----------------------------------------------------------------------
+  ## Set the flag to indicate that the MPI_File_set_size() function
+  ## works with files over 2GB, unless it's already set in the cache.
+  ## (This flag should be set for all machines, except for ASCI Red, where
+  ## the cache value is set in it's config file)
+  ##
+  AC_MSG_CHECKING([if MPI_File_set_size works for files over 2GB])
+  AC_CACHE_VAL([hdf5_cv_mpi_file_set_size_big], [hdf5_cv_mpi_file_set_size_big=yes])
+  
+  if test ${hdf5_cv_mpi_file_set_size_big} = "yes"; then
+    AC_DEFINE([MPI_FILE_SET_SIZE_BIG], [1],
+              [Define if your system's `MPI_File_set_size' function works for files over 2GB.])
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no])
+  fi
+
+  ## ----------------------------------------------------------------------
+  ## Set the flag to indicate that the MPI_File_get_size() function
+  ## works.  The default is enabled unless the user knows the function
+  ## doesn't work on the system and disables it.  (This flag should be set
+  ## for all machines except for SGI Altix Propack 4 where the function 
+  ## doesn't return correct file size.)
+  ##
+  AC_ARG_ENABLE([mpi-size],
+                [AS_HELP_STRING([--enable-mpi-size],
+                                [Some systems (only SGI Altix Propack 4 so far) return wrong value
+                                 from MPI_File_get_size.  By disabling this function, the library
+                                 will replace it with stat to get the correct file size.
+                                 [default=yes]])],
+                [MPI_GET_SIZE=$enableval])
+
+  AC_MSG_CHECKING([if MPI_File_get_size is enabled])
+
+  AC_SUBST(MPI_GET_SIZE)
+  case "X-$MPI_GET_SIZE" in
+    X-no)
+      AC_MSG_RESULT([no])
+      MPI_GET_SIZE=no
+      ;;
+    X-yes|*)
+      AC_MSG_RESULT([yes])
+      MPI_GET_SIZE=yes
+      AC_DEFINE([HAVE_MPI_GET_SIZE], [1],
+                [Define if MPI_File_get_size works correctly])
+      ;;
+  esac
+fi
+
+## ----------------------------------------------------------------------
+## Turn on internal I/O filters by setting macros in header files
+## Internal I/O filters are contained entirely within the library and do
+## not depend on external headers or libraries.  The shuffle filter is
+## an example of an internal filter, while the gzip filter is an example of
+## an external filter.  Each external filter is controlled with an
+## "--with-foo=" configure flag.
+##
+AC_SUBST([FILTERS])
+AC_SUBST([USE_FILTER_SHUFFLE]) USE_FILTER_SHUFFLE="no"
+AC_SUBST([USE_FILTER_FLETCHER32]) USE_FILTER_FLETCHER32="no"
+AC_SUBST([USE_FILTER_NBIT]) USE_FILTER_NBIT="no"
+AC_SUBST([USE_FILTER_SCALEOFFSET]) USE_FILTER_SCALEOFFSET="no"
+AC_MSG_CHECKING([for I/O filters])
+AC_ARG_ENABLE([filters],
+              [AS_HELP_STRING([--enable-filters=all],
+                              [Turn on all internal I/O filters. One may
+                               also specify a comma-separated list of filters
+                               or the word no.  The default is all internal
+                               I/O filters.])],
+              [FILTERS=$enableval])
+
+## Eventually: all_filters="shuffle,foo,bar,baz"
+all_filters="shuffle,fletcher32,nbit,scaleoffset"
+case "X-$FILTERS" in
+  X-|X-all)
+    FILTERS=$all_filters
+    AC_MSG_RESULT([all ($FILTERS)])
+    ;;
+  X-no|X-none)
+    AC_MSG_RESULT([none])
+    FILTERS="none"
+    ;;
+  *)
+    AC_MSG_RESULT([$FILTERS])
+    ;;
+esac
+
+if test -n "$FILTERS"; then
+  for filter in `echo $FILTERS | tr ${as_cr_letters}',' ${as_cr_LETTERS}' '`; do
+    ## ------------------------------------------------------------------
+    ## Have to use separate 'if' construct for each filter, so that
+    ## autoheader can detect the AC_DEFINE for each one...
+    ##
+    if test $filter = "SHUFFLE"; then
+      AC_DEFINE([HAVE_FILTER_SHUFFLE], [1],
+                [Define if support for shuffle filter is enabled])
+      USE_FILTER_SHUFFLE="yes"
+    fi
+    if test $filter = "FLETCHER32"; then
+      AC_DEFINE([HAVE_FILTER_FLETCHER32], [1],
+                [Define if support for Fletcher32 checksum is enabled])
+      USE_FILTER_FLETCHER32="yes"
+    fi
+    if test $filter = "NBIT"; then
+      AC_DEFINE([HAVE_FILTER_NBIT], [1],
+                [Define if support for nbit filter is enabled])
+      USE_FILTER_NBIT="yes"
+    fi
+    if test $filter = "SCALEOFFSET"; then
+      AC_DEFINE([HAVE_FILTER_SCALEOFFSET], [1],
+                [Define if support for scaleoffset filter is enabled])
+      USE_FILTER_SCALEOFFSET="yes"
+    fi
+  done
+fi
+
+## ----------------------------------------------------------------------
+## This is defined only when we're using CodeWarrior, since it has a
+## broken "open()" call.
+#
+if test 1 = 2; then
+  AC_DEFINE([NO_SHARED_WRITING], [1],
+            [Define if shared writing must be disabled (CodeWarrior only)])
+fi
+
+## --------------------------------------------------------------------------
+## Should the Default Virtual File Driver be compiled?
+##
+
+AC_MSG_CHECKING([for Default Virtual File Driver definition])
+AC_ARG_WITH([default-vfd],
+            [AS_HELP_STRING([--with-default-vfd=driver],
+                            [Specify default file driver
+                             [default=sec2]])],,
+            withval=sec2)
+
+if test "X$withval" = "Xsec2"; then
+    AC_MSG_RESULT([yes])
+    default_vfd=yes
+    vfd_define=H5FD_SEC2
+elif test "X$withval" = "Xstdio"; then
+    AC_MSG_RESULT([yes])
+    default_vfd=yes
+    vfd_define=H5FD_STDIO
+else
+    AC_MSG_RESULT([no])
+    default_vfd=no
+fi
+
+if test "X$default_vfd" = "Xyes"; then
+  AC_DEFINE_UNQUOTED([DEFAULT_VFD], [$vfd_define],
+            [Define the default virtual file driver to compile])
+fi
+
+## ----------------------------------------------------------------------
+## Check if Direct I/O driver is enabled by --enable-direct-vfd
+##
+
+AC_MSG_CHECKING([for Direct Virtual File Driver support])
+
+AC_ARG_ENABLE([direct-vfd],
+              [AS_HELP_STRING([--enable-direct-vfd],
+                              [Build the Direct I/O Virtual File Driver
+                               [default=yes]])],
+              [DIRECT_VFD=$enableval], [DIRECT_VFD=yes])
+
+if test "$DIRECT_VFD" = "yes"; then
+   AC_CACHE_VAL([hdf5_cv_direct_io],
+       [AC_TRY_RUN([
+	  #include <sys/types.h>
+	  #include <sys/stat.h>
+	  #include <fcntl.h>
+          int main(void)
+          {
+             int fid; 
+             if((fid=open("tst_file", O_CREAT | O_TRUNC | O_DIRECT, 0755))<0)
+		exit(1);
+             close(fid);  
+             remove("tst_file"); 
+             exit (0);
+          }], [AC_TRY_LINK(, [posix_memalign()], [hdf5_cv_direct_io=yes], [hdf5_cv_direct_io=no])], [hdf5_cv_direct_io=no],)])
+
+   if test ${hdf5_cv_direct_io} = "yes"; then
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([HAVE_DIRECT], [1],
+                [Define if the direct I/O virtual file driver should be compiled])
+   else
+      AC_MSG_RESULT([no])
+      DIRECT_VFD=no
+   fi
+else
+      AC_MSG_RESULT([suppressed])
+fi
+
+AM_CONDITIONAL([DIRECT_VFD_CONDITIONAL], [test "X$DIRECT_VFD" = "Xyes"])
+
+## ----------------------------------------------------------------------
+## Decide whether the presence of user's exception handling functions is
+## checked and data conversion exceptions are returned.  This is mainly
+## for the speed optimization of hard conversions.  Soft conversions can
+## actually benefit little.  
+##
+AC_MSG_CHECKING([whether exception handling functions is checked during data conversions])
+AC_ARG_ENABLE([dconv-exception],
+              [AS_HELP_STRING([--enable-dconv-exception],
+                              [if exception handling functions is checked during 
+                              data conversions [default=yes]])],
+              [DCONV_EXCEPTION=$enableval], [DCONV_EXCEPTION=yes])
+
+if test "$DCONV_EXCEPTION" = "yes"; then
+  AC_MSG_RESULT([yes])
+  AC_DEFINE([WANT_DCONV_EXCEPTION], [1],
+            [Check exception handling functions during data conversions])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Decide whether the data accuracy has higher priority during data
+## conversions.  If not, some hard conversions will still be prefered even
+## though the data may be wrong (for example, some compilers don't 
+## support denormalized floating values) to maximize speed.
+## 
+AC_MSG_CHECKING([whether data accuracy is guaranteed during data conversions])
+AC_ARG_ENABLE([dconv-accuracy],
+              [AS_HELP_STRING([--enable-dconv-accuracy],
+                              [if data accuracy is guaranteed during 
+                              data conversions [default=yes]])],
+              [DATA_ACCURACY=$enableval], [DATA_ACCURACY=yes])
+
+if test "$DATA_ACCURACY" = "yes"; then
+  AC_MSG_RESULT([yes])
+  AC_DEFINE([WANT_DATA_ACCURACY], [1],
+            [Data accuracy is prefered to speed during data conversions])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can handle converting
+## denormalized floating-point values.
+## (This flag should be set for all machines, except for the Crays, where
+## the cache value is set in it's config file)
+##
+AC_MSG_CHECKING([if converting denormalized floating-point values is possible])
+AC_CACHE_VAL([hdf5_cv_convert_denormal_float], [hdf5_cv_convert_denormal_float=yes])
+
+if test ${hdf5_cv_convert_denormal_float} = "yes"; then
+  AC_DEFINE([CONVERT_DENORMAL_FLOAT], [1],
+            [Define if your system can handle converting denormalized floating-point values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can handle converting
+## floating-point to long long values.
+## (This flag should be _unset_ for all machines, except for Windows, where
+## it's set in the custom Windows H5pubconf.h file)
+##
+AC_MSG_CHECKING([if converting floating-point values to long long is not working])
+AC_CACHE_VAL([hdf5_cv_convert_float_llong_not_works], [hdf5_cv_convert_float_llong_not_works=no])
+
+if test ${hdf5_cv_convert_float_llong_not_works} = "yes"; then
+  AC_DEFINE([HW_FP_TO_LLONG_NOT_WORKS], [1],
+            [Define if your system can't handle converting floating-point values to long long.])
+  AC_MSG_RESULT([true])
+else
+  AC_MSG_RESULT([false])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine has window style pathname,
+## that is, "drive-letter:\" (e.g. "C:") or "drive-letter:/" (e.g. "C:/").
+## (This flag should be _unset_ for all machines, except for Windows, where
+## it's set in the custom Windows H5pubconf.h file)
+##
+AC_MSG_CHECKING([if the machine has window style path name])
+
+case "`uname`" in
+  MINGW*)
+    AC_DEFINE([HAVE_WINDOW_PATH], [1],
+              [Define if your system has window style path name.])
+    AC_MSG_RESULT([yes])
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+esac
+
+## -----------------------------------------------------------------------
+## Set flag to indicate that the machine can handle conversion from 
+## long double to integers accurately.  This flag should be set "yes" for 
+## all machines except all SGIs.  For SGIs, some conversions are
+## incorrect and its cache value is set "no" in its config/irix6.x and 
+## irix5.x.
+##
+AC_MSG_CHECKING([if converting from long double to integers is accurate])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_ldouble_to_integer_accurate=${hdf5_cv_ldouble_to_integer_accurate=no}
+else
+   AC_CACHE_VAL([hdf5_cv_ldouble_to_integer_accurate], [hdf5_cv_ldouble_to_integer_accurate=yes])
+fi
+
+if test "${hdf5_cv_ldouble_to_integer_accurate}" = "yes"; then
+  AC_DEFINE([LDOUBLE_TO_INTEGER_ACCURATE], [1],
+            [Define if your system can convert long double to integers accurately.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## -----------------------------------------------------------------------
+## Set flag to indicate that the machine can do conversion from 
+## long double to integers regardless of accuracy.  This flag should be 
+## set "yes" for all machines except HP-UX 11.00.  For HP-UX 11.00, the
+## compiler has 'floating exception' when converting 'long double' to all 
+## integers except 'unsigned long long'.  Other HP-UX systems are unknown
+## yet. (1/8/05 - SLU)
+
+AC_MSG_CHECKING([if converting from long double to integers works])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_ldouble_to_integer_works=${hdf5_cv_ldouble_to_integer_works=no}
+else
+   AC_CACHE_VAL([hdf5_cv_ldouble_to_integer_works],
+        [AC_TRY_RUN([
+        int main(void)
+        {
+            void *align;
+            long double ld= 9701917572145405952.00L;
+            unsigned char v1;
+            short v2;
+            unsigned int v3;
+            int  ret = 0;
+
+            align = (void*)malloc(sizeof(long double));
+            memcpy(align, &ld, sizeof(long double));
+
+            /*For HU-UX11.00, there's floating exception(core dump) when doing some of casting
+             *from 'long double' to integers*/
+            v1=(unsigned char)(*((long double*)align));
+            v2=(short)(*((long double*)align));
+            v3=(unsigned int)(*((long double*)align));
+
+    done:
+            exit(ret);
+        }
+        ], [hdf5_cv_ldouble_to_integer_works=yes], [hdf5_cv_ldouble_to_integer_works=no],)])
+fi
+
+if test ${hdf5_cv_ldouble_to_integer_works} = "yes"; then
+  AC_DEFINE([LDOUBLE_TO_INTEGER_WORKS], [1],
+            [Define if your system can convert from long double to integer values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## -----------------------------------------------------------------------
+## Set flag to indicate that the machine can handle conversion from 
+## integers to long double.  (This flag should be set "yes" for all 
+## machines except all SGIs, where some conversions are
+## incorrect and its cache value is set "no" in its config/irix6.x and 
+## irix5.x) 
+##
+AC_MSG_CHECKING([if accurately converting from integers to long double])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_integer_to_ldouble_accurate=${hdf5_cv_integer_to_ldouble_accurate=no}
+else
+   AC_CACHE_VAL([hdf5_cv_integer_to_ldouble_accurate], [hdf5_cv_integer_to_ldouble_accurate=yes])
+fi
+
+if test ${hdf5_cv_integer_to_ldouble_accurate} = "yes"; then
+  AC_DEFINE([INTEGER_TO_LDOUBLE_ACCURATE], [1],
+            [Define if your system can accurately convert from integers to long double values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'unsigned long' to 'float' values.
+## (This flag should be set for all machines, except for Pathscale compiler
+## on Sandia's Linux machine where the compiler interprets 'unsigned long'
+## values as negative when the first bit of 'unsigned long' is on during 
+## the conversion to float.) 
+##
+AC_MSG_CHECKING([if accurately converting unsigned long to float values])
+
+AC_CACHE_VAL([hdf5_cv_ulong_to_float_accurate],
+    [AC_TRY_RUN([
+    int main(void)
+    {
+        int           ret = 0;
+        unsigned long l1;
+        unsigned long l2;
+        unsigned long l3;
+        float f1;
+        float f2;
+        float f3;
+
+
+        if(sizeof(unsigned long)==8) {
+            l1 = 0xffffffffffffffffUL;
+            l2 = 0xffffffffffff0000UL;
+            l3 = 0xf000000000000000UL;
+
+            f1 = (float)l1;
+            f2 = (float)l2;
+            f3 = (float)l3;
+
+            if((f1 < 0) || (f2 < 0) || (f3 < 0))
+                ret = 1;
+        }
+
+done:
+        exit(ret);
+    }
+    ], [hdf5_cv_ulong_to_float_accurate=yes], [hdf5_cv_ulong_to_float_accurate=no],)])
+
+if test ${hdf5_cv_ulong_to_float_accurate} = "yes"; then
+  AC_DEFINE([ULONG_TO_FLOAT_ACCURATE], [1],
+            [Define if your system accurately converting unsigned long to float values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'unsigned (long) long' values to 'float' and 'double' values.
+## (This flag should be set for all machines, except for the SGIs, where
+## the cache value is set in the config/irix6.x config file) and Solaris
+## 64-bit machines, where the short program below tests if round-up is 
+## correctly handled.
+##
+AC_MSG_CHECKING([if accurately converting unsigned long long to floating-point values])
+
+if test ${host_os_novers} = "solaris2.x"; then
+    AC_CACHE_VAL([hdf5_cv_ulong_to_fp_bottom_bit_accurate],
+    [AC_TRY_RUN([
+    int main(void)
+    {
+        unsigned long l1;
+        unsigned long l2;
+        unsigned long l3;
+        unsigned long l4;
+        unsigned long long ld1;
+        unsigned long long ld2;
+        unsigned long long ld3;
+        unsigned long long ld4;
+        double        d1, d2, d3, d4;
+        unsigned char s[8];
+        int           ret = 0;
+
+        if(sizeof(unsigned long)==8) {
+            l1 = 0xf000000000000b00UL; /*Round-down case*/
+            l2 = 0xf000000000000401UL; /*Round-up case*/
+            l3 = 0xf000000000000400UL; /*Round-down case*/
+            l4 = 0xf000000000000c00UL; /*Round-up case*/
+            
+            d1 = (double)l1;
+            d2 = (double)l2;
+            d3 = (double)l3;
+            d4 = (double)l4;
+        } else if(sizeof(unsigned long long)==8) { 
+            ld1 = 0xf000000000000b00ULL; /*Round-down case*/
+            ld2 = 0xf000000000000401ULL; /*Round-up case*/
+            ld3 = 0xf000000000000400ULL; /*Round-down case*/
+            ld4 = 0xf000000000000c00ULL; /*Round-up case*/
+            
+            d1 = (double)ld1;
+            d2 = (double)ld2;
+            d3 = (double)ld3;
+            d4 = (double)ld4;
+        } else {
+            ret = 1;
+            goto done;
+        }
+        
+        memcpy(s, &d1, 8);
+        if(s[7]!=1)
+            ret = 1;
+
+        memcpy(s, &d2, 8);
+        if(s[7]!=1)
+            ret = 1;
+
+        memcpy(s, &d3, 8);
+        if(s[7]!=0)
+            ret = 1;
+
+        memcpy(s, &d4, 8);
+        if(s[7]!=2)
+            ret = 1;
+
+done:
+        exit(ret);
+    }
+    ], [hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes], [hdf5_cv_ulong_to_fp_bottom_bit_accurate=no],)])
+else
+    AC_CACHE_VAL([hdf5_cv_ulong_to_fp_bottom_bit_accurate], [hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes])
+fi
+
+if test ${hdf5_cv_ulong_to_fp_bottom_bit_accurate} = "yes"; then
+  AC_DEFINE([ULONG_TO_FP_BOTTOM_BIT_ACCURATE], [1],
+            [Define if your system can accurately convert unsigned (long) long values to floating-point values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'float' or 'double' to 'unsigned long long' values.
+## (This flag should be set for all machines, except for PGI compiler 
+## where round-up happens when the fraction of float-point value is greater 
+## than 0.5.
+##
+AC_MSG_CHECKING([if accurately roundup converting floating-point to unsigned long long values])
+
+AC_CACHE_VAL([hdf5_cv_fp_to_ullong_accurate],
+    [AC_TRY_RUN([
+    int main(void)
+    {
+        float  f = 111.60f;
+        double d = 222.55L;
+        unsigned long long l1 = (unsigned long long)f;
+        unsigned long long l2 = (unsigned long long)d;
+        int           ret = 0;
+
+        if(l1 == 112) 
+            ret = 1;
+        if(l2 == 223) 
+            ret = 1;
+
+done:
+        exit(ret);
+    }
+    ], [hdf5_cv_fp_to_ullong_accurate=yes], [hdf5_cv_fp_to_ullong_accurate=no],)])
+
+if test ${hdf5_cv_fp_to_ullong_accurate} = "yes"; then
+  AC_DEFINE([FP_TO_ULLONG_ACCURATE], [1],
+            [Define if your system roundup accurately converting floating-point to unsigned long long values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'float', 'double' or 'long double' to 'unsigned long long' values.
+## (This flag should be set for all machines, except for HP-UX machines
+## where the maximal number for unsigned long long is 0x7fffffffffffffff
+## during conversion.
+##
+AC_MSG_CHECKING([if right maximum converting floating-point to unsigned long long values])
+
+AC_CACHE_VAL([hdf5_cv_fp_to_ullong_right_maximum],
+    [AC_TRY_RUN([
+    int main(void)
+    {
+        float  f = 9701917572145405952.00f;
+        double d1 = 9701917572145405952.00L;
+        long double d2 = 9701917572145405952.00L;
+        double d3 = 2e40L;
+        unsigned long long l1 = (unsigned long long)f;
+        unsigned long long l2 = (unsigned long long)d1;
+        unsigned long long l3 = (unsigned long long)d2;
+        unsigned long long l4;
+        unsigned long long l5 = 0x7fffffffffffffffULL;
+        int           ret = 0;
+
+        if(l1 <= l5 || l2 <= l5 || l3 <= l5) 
+            ret = 1;
+
+        l4 = (unsigned long long)d3;
+        if(l4 <= l5)
+            ret = 1;
+
+done:
+        exit(ret);
+    }
+    ], [hdf5_cv_fp_to_ullong_right_maximum=yes], [hdf5_cv_fp_to_ullong_right_maximum=no],)])
+
+if test ${hdf5_cv_fp_to_ullong_right_maximum} = "yes"; then
+  AC_DEFINE([FP_TO_ULLONG_RIGHT_MAXIMUM], [1],
+            [Define if your system has right maximum convert floating-point to unsigned long long values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'long double' to 'unsigned int' values.  (This flag should be set for 
+## all machines, except for some Intel compilers on some Linux.)
+##
+AC_MSG_CHECKING([if correctly converting long double to unsigned int values])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_ldouble_to_uint_accurate=${hdf5_cv_ldouble_to_uint_accurate=no}
+else
+   AC_CACHE_VAL([hdf5_cv_ldouble_to_uint_accurate],
+        [AC_TRY_RUN([
+        int main(void)
+        {
+            long double ld = 2733248032.9183987530L;
+            unsigned int i;
+            int           ret = 0;
+
+            i = (unsigned int)ld;
+            if(i!=2733248032 && i!=2733248031 && i!=2733248033)
+                ret = 1;
+
+    done:
+            exit(ret);
+        }
+        ], [hdf5_cv_ldouble_to_uint_accurate=yes], [hdf5_cv_ldouble_to_uint_accurate=no],)])
+fi
+
+if test ${hdf5_cv_ldouble_to_uint_accurate} = "yes"; then
+  AC_DEFINE([LDOUBLE_TO_UINT_ACCURATE], [1],
+            [Define if your system can convert long double to unsigned int values correctly.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can _compile_
+## 'unsigned long long' to 'float' and 'double' typecasts.
+## (This flag should be set for all machines, except for under Windows when
+## compiled with Visual Studio 6, where the macro value is set in the
+## src/H5pubconf.h file)
+##
+AC_MSG_CHECKING([if compiling unsigned long long to floating-point typecasts work])
+AC_CACHE_VAL([hdf5_cv_ullong_to_fp_cast_works], [hdf5_cv_ullong_to_fp_cast_works=yes])
+
+if test ${hdf5_cv_ullong_to_fp_cast_works} = "yes"; then
+  AC_DEFINE([ULLONG_TO_FP_CAST_WORKS], [1],
+            [Define if your system can compile unsigned long long to floating-point casts.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can _compile_
+## 'long long' to 'float' and 'double' typecasts.
+## (This flag should be set for all machines, except for under Windows when
+## compiled with Visual Studio 6, where the macro value is set in the
+## src/H5pubconf.h file)
+##
+AC_MSG_CHECKING([if compiling long long to floating-point typecasts work])
+AC_CACHE_VAL([hdf5_cv_llong_to_fp_cast_works], [hdf5_cv_llong_to_fp_cast_works=yes])
+
+if test ${hdf5_cv_llong_to_fp_cast_works} = "yes"; then
+  AC_DEFINE([LLONG_TO_FP_CAST_WORKS], [1],
+            [Define if your system can compile long long to floating-point casts.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can convert from
+## 'unsigned long long' to 'long double' without precision loss.
+## (This flag should be set for all machines, except for FreeBSD(sleipnir)
+## where the last 2 bytes of mantissa are lost when compiler tries to do 
+## the conversion, and Cygwin where compiler doesn't do rounding correctly.)
+##
+AC_MSG_CHECKING([if converting unsigned long long to long double with precision])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_ullong_to_ldouble_precision=${hdf5_cv_ullong_to_ldouble_precision=no}
+else
+   AC_CACHE_VAL([hdf5_cv_ullong_to_ldouble_precision],
+        [AC_TRY_RUN([
+        #include <stdlib.h>
+        #include <string.h>
+
+        int main(void)
+        {
+            /* General variables */
+            int endian;
+            int tst_value = 1; 
+            int ret = 0;
+
+            /* For FreeBSD */
+            unsigned long long l = 0xa601e80bda85fcefULL;
+            long double ld;
+            unsigned char *c1, *c2;
+            size_t size;
+
+            /* For Cygwin */
+            unsigned long long l_cyg = 0xfffffffffffffff0ULL;
+            long double ld_cyg;
+            unsigned char *c2_cyg;
+            size_t size_cyg;
+            
+            
+            /* Determine this system's endianess */
+            c1 = (unsigned char*)calloc(1, sizeof(int));
+            memcpy((void*)c1, &tst_value, sizeof(int));
+            if(c1[0]==1)
+                endian = 0;  /* little endian */
+            else 
+                endian = 1;  /* big endian */
+            
+            /* For FreeBSD */     
+            size = sizeof(long double);
+            memset(&ld, 0, size); 
+            ld = (long double)l;
+
+            c2 = (unsigned char*)calloc(1, size);
+            memcpy((void*)c2, &ld, size);
+
+            /* Test if the last 2 bytes of mantissa are lost.  Mainly for FreeBSD on Intel
+             * architecture(sleipnir) where it happens. */        
+            /*if(endian==0 && c2[0]==0 && c2[1]==0)*/ /*little endian*/
+            if(endian==0 && c2[0]==0) { /*little endian*/
+                ret = 1;
+                goto done;
+            }
+
+            /* For Cygwin */
+            size_cyg = sizeof(long double);
+            memset(&ld_cyg, 0, size); 
+            ld_cyg = (long double)l_cyg;
+
+            c2_cyg = (unsigned char*)calloc(1, size_cyg);
+            memcpy((void*)c2_cyg, &ld_cyg, size_cyg);
+
+            /* Test if the last 4 bytes(roughly) of mantissa are rounded up.  Mainly for Cygwin
+             * where the values like 0xffffffffffffffff,  0xfffffffffffffffe, ..., 
+             * 0xfffffffffffff000 ... are rounded up as 0x0000403f8000000000000000 
+             * instead of 0x0000403effffffffffffffff, 0x0000403efffffffffffffffe, ..., 
+             * 0x0000403efffffffffffff000 ...
+             */    
+            if(endian==0 && c2_cyg[0]==0 && c2_cyg[1]==0 && c2_cyg[2]==0 && c2_cyg[3]==0)
+                ret = 1;
+
+    done:
+            if(c1)
+                free(c1);
+            if(c2)
+                free(c2);
+            if(c2_cyg)
+                free(c2_cyg);
+            exit(ret);
+        }
+        ], [hdf5_cv_ullong_to_ldouble_precision=yes], [hdf5_cv_ullong_to_ldouble_precision=no],)])
+fi
+
+if test ${hdf5_cv_ullong_to_ldouble_precision} = "yes"; then
+  AC_DEFINE([ULLONG_TO_LDOUBLE_PRECISION], [1],
+            [Define if your system can convert unsigned long long to long double with correct precision.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can handle overflow converting
+## all floating-point to all integer types.
+## (This flag should be set for all machines, except for Cray X1 where
+## floating exception is generated when the floating-point value is greater
+## than the maximal integer value).
+##
+AC_MSG_CHECKING([if overflows normally converting floating-point to integer values])
+
+AC_CACHE_VAL([hdf5_cv_fp_to_integer_overflow_works],
+    [AC_TRY_RUN([
+    int main(void)
+    {
+        float  f = 2147483648.0f;
+        int    i;
+
+        i = (int)f;
+
+done:
+        exit(0);
+    }
+    ], [hdf5_cv_fp_to_integer_overflow_works=yes], [hdf5_cv_fp_to_integer_overflow_works=no],)])
+
+if test ${hdf5_cv_fp_to_integer_overflow_works} = "yes"; then
+  AC_DEFINE([FP_TO_INTEGER_OVERFLOW_WORKS], [1],
+            [Define if your system can handle overflow converting floating-point to integer values.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine is using a special algorithm to convert
+## 'long double' to '(unsigned) long' values.  (This flag should only be set for 
+## the IBM Power6 Linux.  When the bit sequence of long double is 
+## 0x4351ccf385ebc8a0bfcc2a3c3d855620, the converted value of (unsigned)long 
+## is 0x004733ce17af227f, not the same as the library's conversion to 0x004733ce17af2282.
+## The machine's conversion gets the correct value.  We define the macro and disable
+## this kind of test until we figure out what algorithm they use.
+##
+AC_MSG_CHECKING([if using special algorithm to convert long double to (unsigned) long values])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_ldouble_to_long_special=${hdf5_cv_ldouble_to_long_special=no}
+else
+   AC_CACHE_VAL([hdf5_cv_ldouble_to_long_special],
+        [AC_TRY_RUN([
+        int main(void)
+        {
+            long double         ld = 20041683600089727.779961L;
+            long                ll;
+            unsigned long       ull;
+            unsigned char       s[16];
+            unsigned char       s2[8];
+            int                 ret = 1;
+            
+            if(sizeof(long double) == 16 && sizeof(long) == 8) {
+                /*make sure the long double type has 16 bytes in size and 
+                 * 11 bits of exponent.  If it is,
+                 *the bit sequence should be like below.  It's not 
+                 *a decent way to check but this info isn't available. */   
+                memcpy(s, &ld, 16);
+                if(s[0]==0x43 && s[1]==0x51 && s[2]==0xcc && s[3]==0xf3 &&
+                    s[4]==0x85 && s[5]==0xeb && s[6]==0xc8 && s[7]==0xa0 &&
+                    s[8]==0xbf && s[9]==0xcc && s[10]==0x2a && s[11]==0x3c) {
+
+                    /* Assign the hexadecimal value of long double type. */
+                    s[0]=0x43; s[1]=0x51; s[2]=0xcc; s[3]=0xf3;
+                    s[4]=0x85; s[5]=0xeb; s[6]=0xc8; s[7]=0xa0;
+                    s[8]=0xbf; s[9]=0xcc; s[10]=0x2a; s[11]=0x3c;
+                    s[12]=0x3d; s[13]=0x85; s[14]=0x56; s[15]=0x20;
+
+                    memcpy(&ld, s, 16);
+
+                    ll = (long)ld;
+                    memcpy(s2, &ll, 8);
+
+                    /* The library's algorithm converts it to 0x 00 47 33 ce 17 af 22 82
+                     * and gets wrong value 20041683600089730 on the IBM Power6 Linux.
+                     * But the IBM Power6 Linux converts it to 0x00 47 33 ce 17 af 22 7f
+                     * and gets the correct value 20041683600089727.  It uses some special
+                     * algorithm.  We're going to define the macro and skip the test until
+                     * we can figure out how they do it. */
+                    if(s2[0]==0x00 && s2[1]==0x47 && s2[2]==0x33 && s2[3]==0xce &&
+                       s2[4]==0x17 && s2[5]==0xaf && s2[6]==0x22 && s2[7]==0x7f)
+                        ret = 0;
+
+                    ull = (unsigned long)ld;
+                    memcpy(s2, &ull, 8);
+
+                    /* The unsigned long is the same as signed long. */
+                    if(s2[0]==0x00 && s2[1]==0x47 && s2[2]==0x33 && s2[3]==0xce &&
+                       s2[4]==0x17 && s2[5]==0xaf && s2[6]==0x22 && s2[7]==0x7f)
+                        ret = 0;
+                }    
+            }   
+            
+    done:
+            exit(ret);
+        }
+        ], [hdf5_cv_ldouble_to_long_special=yes], [hdf5_cv_ldouble_to_long_special=no],)])
+fi
+
+if test ${hdf5_cv_ldouble_to_long_special} = "yes"; then
+  AC_DEFINE([LDOUBLE_TO_LONG_SPECIAL], [1],
+            [Define if your system converts long double to (unsigned) long values with special algorithm.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine is using a special algorithm
+## to convert some values of '(unsigned) long' to 'long double' values.  
+## (This flag should be off for all machines, except for IBM Power6 Linux, 
+## when the bit sequences are 003fff..., 007fff..., 00ffff..., 01ffff..., 
+## ..., 7fffff..., the compiler uses a unknown algorithm.  We define a 
+## macro and skip the test for now until we know about the algorithm.
+##
+AC_MSG_CHECKING([if using special algorithm to convert (unsigned) long to long double values])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_long_to_ldouble_special=${hdf5_cv_long_to_ldouble_special=no}
+else
+   AC_CACHE_VAL([hdf5_cv_long_to_ldouble_special],
+        [AC_TRY_RUN([
+        int main(void)
+        {
+            long double         ld;
+            long                ll;
+            unsigned long       ull;
+            unsigned char       s[16];
+            int                 flag=0, ret=1;
+        
+            /*Determine if long double has 16 byte in size, 11 bit exponent, and
+             *the bias is 0x3ff */ 
+            if(sizeof(long double) == 16) { 
+                ld = 1.0L;
+                memcpy(s, &ld, 16);
+                if(s[0]==0x3f && s[1]==0xf0 && s[2]==0x00 && s[3]==0x00 &&
+                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00) 
+                    flag = 1; 
+            }
+             
+            if(flag==1 && sizeof(long)==8) {
+                ll = 0x003fffffffffffffL;
+                ld = (long double)ll;
+                memcpy(s, &ld, 16);
+                /* The library converts the value to 0x434fffffffffffff8000000000000000.
+                 * In decimal it is 18014398509481982.000000, one value short of the original.
+                 * The IBM Power6 Linux converts it to 0x4350000000000000bff0000000000000.
+                 * The value is correct in decimal. It uses some special
+                 * algorithm.  We're going to define the macro and skip the test until
+                 * we can figure out how they do it. */
+                if(s[0]==0x43 && s[1]==0x50 && s[2]==0x00 && s[3]==0x00 &&
+                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00 &&
+                    s[8]==0xbf && s[9]==0xf0 && s[10]==0x00 && s[11]==0x00 &&
+                    s[12]==0x00 && s[13]==0x00 && s[14]==0x00 && s[15]==0x00)
+                    ret = 0;
+            }        
+            if(flag==1 && sizeof(unsigned long)==8) {
+                ull = 0xffffffffffffffffUL;
+                ld = (long double)ull;
+                memcpy(s, &ld, 16);
+                /* Use a different value from signed long to test. The problem is the same
+                 * for both long and unsigned long. The value is 18446744073709551615.
+                 * The library converts the value to 0x43effffffffffffffe000000000000000.
+                 * In decimal it's 18446744073709548544.000000, very different from the original.
+                 * The IBM Power6 Linux converts it to 0x43f0000000000000bff0000000000000.
+                 * The value is correct in decimal. It uses some special
+                 * algorithm.  We're going to define the macro and skip the test until
+                 * we can figure out how they do it. */
+                if(s[0]==0x43 && s[1]==0xf0 && s[2]==0x00 && s[3]==0x00 &&
+                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00 &&
+                    s[8]==0xbf && s[9]==0xf0 && s[10]==0x00 && s[11]==0x00 &&
+                    s[12]==0x00 && s[13]==0x00 && s[14]==0x00 && s[15]==0x00)
+                    ret = 0;
+            }        
+    done:
+            exit(ret);
+        }
+        ], [hdf5_cv_long_to_ldouble_special=yes], [hdf5_cv_long_to_ldouble_special=no],)])
+fi
+
+if test ${hdf5_cv_long_to_ldouble_special} = "yes"; then
+  AC_DEFINE([LONG_TO_LDOUBLE_SPECIAL], [1],
+            [Define if your system can convert (unsigned) long to long double values with special algorithm.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## 'long double' to '(unsigned) long long' values.  (This flag should be set for 
+## all machines, except for Mac OS 10.4 and SGI IRIX64 6.5.  When the bit sequence
+## of long double is 0x4351ccf385ebc8a0bfcc2a3c..., the values of (unsigned)long long
+## start to go wrong on these two machines.  Adjusting it higher to 
+## 0x4351ccf385ebc8a0dfcc... or 0x4351ccf385ebc8a0ffcc... will make the converted 
+## values wildly wrong.  This test detects this wrong behavior and disable the test.  
+##
+AC_MSG_CHECKING([if correctly converting long double to (unsigned) long long values])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_ldouble_to_llong_accurate=${hdf5_cv_ldouble_to_llong_accurate=no}
+else
+   AC_CACHE_VAL([hdf5_cv_ldouble_to_llong_accurate],
+        [AC_TRY_RUN([
+        int main(void)
+        {
+            long double         ld = 20041683600089727.779961L;
+            long long           ll;
+            unsigned long long  ull;
+            unsigned char       s[16];
+            int                 ret = 0;
+            
+            if(sizeof(long double) == 16) {
+                /*make sure the long double type is the same as the failing type 
+                 *which has 16 bytes in size and 11 bits of exponent.  If it is,
+                 *the bit sequence should be like below.  It's not 
+                 *a decent way to check but this info isn't available. */   
+                memcpy(s, &ld, 16);
+                if(s[0]==0x43 && s[1]==0x51 && s[2]==0xcc && s[3]==0xf3 &&
+                    s[4]==0x85 && s[5]==0xeb && s[6]==0xc8 && s[7]==0xa0 &&
+                    s[8]==0xbf && s[9]==0xcc && s[10]==0x2a && s[11]==0x3c) {
+
+                    /*slightly adjust the bit sequence (s[8]=0xdf).  The converted
+                     *values will go wild on Mac OS 10.4 and IRIX64 6.5.*/ 
+                    s[0]=0x43; s[1]=0x51; s[2]=0xcc; s[3]=0xf3;
+                    s[4]=0x85; s[5]=0xeb; s[6]=0xc8; s[7]=0xa0;
+                    s[8]=0xdf; s[9]=0xcc; s[10]=0x2a; s[11]=0x3c;
+                    s[12]=0x3d; s[13]=0x85; s[14]=0x56; s[15]=0x20;
+
+                    memcpy(&ld, s, 16);
+                    ll = (long long)ld;
+                    ull = (unsigned long long)ld;
+                    
+                    if(ll != 20041683600089728 || ull != 20041683600089728)
+                        ret = 1;
+                }    
+            }    
+    done:
+            exit(ret);
+        }
+        ], [hdf5_cv_ldouble_to_llong_accurate=yes], [hdf5_cv_ldouble_to_llong_accurate=no],)])
+fi
+
+if test ${hdf5_cv_ldouble_to_llong_accurate} = "yes"; then
+  AC_DEFINE([LDOUBLE_TO_LLONG_ACCURATE], [1],
+            [Define if your system can convert long double to (unsigned) long long values correctly.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine can accurately convert
+## '(unsigned) long long' to 'long double' values.  (This flag should be set for 
+## all machines, except for Mac OS 10.4, when the bit sequences are 003fff...,
+## 007fff..., 00ffff..., 01ffff..., ..., 7fffff..., the converted values are twice
+## as big as they should be. 
+##
+AC_MSG_CHECKING([if correctly converting (unsigned) long long to long double values])
+
+if test ${ac_cv_sizeof_long_double} = 0; then
+   hdf5_cv_llong_to_ldouble_correct=${hdf5_cv_llong_to_ldouble_correct=no}
+else
+   AC_CACHE_VAL([hdf5_cv_llong_to_ldouble_correct],
+        [AC_TRY_RUN([
+        int main(void)
+        {
+            long double         ld;
+            long long           ll;
+            unsigned long long  ull;
+            unsigned char       s[16];
+            int                 flag=0, ret=0;
+        
+            /*Determine if long double has 16 byte in size, 11 bit exponent, and
+             *the bias is 0x3ff */ 
+            if(sizeof(long double) == 16) { 
+                ld = 1.0L;
+                memcpy(s, &ld, 16);
+                if(s[0]==0x3f && s[1]==0xf0 && s[2]==0x00 && s[3]==0x00 &&
+                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00) 
+                    flag = 1; 
+            }
+             
+            if(flag==1 && sizeof(long long)==8) {
+                ll = 0x01ffffffffffffffLL;
+                ld = (long double)ll;
+                memcpy(s, &ld, 16);
+                /*Check if the bit sequence is as supposed to be*/
+                if(s[0]!=0x43 || s[1]!=0x7f || s[2]!=0xff || s[3]!=0xff ||
+                    s[4]!=0xff || s[5]!=0xff || s[6]!=0xff || s[7]!=0xff ||
+                    s[8]!=0xf0 || s[9]!=0x00 || s[10]!=0x00 || s[11]!=0x00)
+                    ret = 1;
+            }        
+            if(flag==1 && sizeof(unsigned long long)==8) {
+                ull = 0x01ffffffffffffffULL;
+                ld = (long double)ull;
+                memcpy(s, &ld, 16);
+                if(s[0]!=0x43 || s[1]!=0x7f || s[2]!=0xff || s[3]!=0xff ||
+                    s[4]!=0xff || s[5]!=0xff || s[6]!=0xff || s[7]!=0xff ||
+                    s[8]!=0xf0 || s[9]!=0x00 || s[10]!=0x00 || s[11]!=0x00)
+                    ret = 1;
+            }        
+    done:
+            exit(ret);
+        }
+        ], [hdf5_cv_llong_to_ldouble_correct=yes], [hdf5_cv_llong_to_ldouble_correct=no],)])
+fi
+
+if test ${hdf5_cv_llong_to_ldouble_correct} = "yes"; then
+  AC_DEFINE([LLONG_TO_LDOUBLE_CORRECT], [1],
+            [Define if your system can convert (unsigned) long long to long double values correctly.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set the flag to indicate that the machine generates bad code
+## for the H5V_log2_gen() routine in src/H5Vprivate.h
+## (This flag should be set to no for all machines, except for SGI IRIX64,
+## where the cache value is set to yes in it's config file)
+##
+AC_MSG_CHECKING([if bad code for log2 routine is generated])
+AC_CACHE_VAL([hdf5_cv_bad_log2_code_generated], [hdf5_cv_bad_log2_code_generated=no])
+
+if test ${hdf5_cv_bad_log2_code_generated} = "yes"; then
+  AC_DEFINE([BAD_LOG2_CODE_GENERATED], [1],
+            [Define if your system generates wrong code for log2 routine.])
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+## ----------------------------------------------------------------------
+## Set some variables for general configuration information to be saved
+## and installed with the libraries.
+##
+
+## HDF5 version from the first line of the README.txt file.
+H5_VERSION="`cut -d' ' -f3 $srcdir/README.txt | head -1`"
+AC_SUBST([H5_VERSION])
+
+## Configuration date
+AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date`"
+
+## User doing the configuration
+AC_SUBST([CONFIG_USER]) CONFIG_USER="`whoami`@`hostname`"
+if test -n "$ORGANIZATION"; then
+  CONFIG_USER="$CONFIG_USER at $ORGANIZATION"
+fi
+
+## Configuration mode (production, development, profile, etc) saved above.
+AC_SUBST([CONFIG_MODE])
+
+## Byte sex from the AC_C_BIGENDIAN macro.
+AC_SUBST([BYTESEX])
+if test "X$ac_cv_c_bigendian" = "Xyes"; then
+  BYTESEX="big-endian"
+else
+  BYTESEX="little-endian"
+fi
+
+
+if test "X$ac_cv_c_bigendian" = "Xyes"; then
+  WORDS_BIGENDIAN="yes"
+else
+  WORDS_BIGENDIAN="no"
+fi
+AC_SUBST([WORDS_BIGENDIAN])
+
+## Parallel support? (set above except empty if none)
+PARALLEL=${PARALLEL:-no}
+
+## Compiler with version information. This consists of the full path
+## name of the compiler and the reported version number.
+AC_SUBST([CC_VERSION])
+## Strip anything that looks like a flag off of $CC
+CC_NOFLAGS=`echo $CC | sed 's/ -.*//'`
+
+if `echo $CC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
+  CC_VERSION="$CC"
+else
+  CC_VERSION="$CC";
+  for x in `echo $PATH | sed -e 's/:/ /g'`; do
+    if test -x $x/$CC_NOFLAGS; then
+      CC_VERSION="$x/$CC"
+      break
+    fi
+  done
+fi
+if test -n "$cc_version_info"; then
+  CC_VERSION="$CC_VERSION ( $cc_version_info)"
+fi
+
+AC_SUBST([FC_VERSION])
+## Strip anything that looks like a flag off of $CC
+FC_NOFLAGS=`echo $FC | sed 's/ -.*//'`
+
+if `echo $FC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
+  FC_VERSION="$FC"
+else
+  FC_VERSION="$FC";
+  for x in `echo $PATH | sed -e 's/:/ /g'`; do
+    if test -x $x/$FC_NOFLAGS; then
+      FC_VERSION="$x/$FC"
+      break
+    fi
+  done
+fi
+if test -n "$fc_version_info"; then
+  FC_VERSION="$FC_VERSION ( $fc_version_info)"
+fi
+
+AC_SUBST([CXX_VERSION])
+## Strip anything that looks like a flag off of $CC
+CXX_NOFLAGS=`echo $CXX | sed 's/ -.*//'`
+
+if `echo $CXX_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
+  CXX_VERSION="$CXX"
+else
+  CXX_VERSION="$FC";
+  for x in `echo $PATH | sed -e 's/:/ /g'`; do
+    if test -x $x/$CXX_NOFLAGS; then
+      CXX_VERSION="$x/$CXX"
+      break
+    fi
+  done
+fi
+if test -n "$cxx_version_info"; then
+  CXX_VERSION="$CXX_VERSION ( $cxx_version_info)"
+fi
+
+## ----------------------------------------------------------------------
+## Where is the root of the source tree. Give an absolute address so
+## we can find it no matter which directory of the distribution is our
+## current directory. The built-in pwd fails on some systems, but the
+## /bin/pwd version works OK.
+##
+if test -x /bin/pwd; then
+  pwd=/bin/pwd
+else
+  pwd=pwd
+fi
+AC_SUBST([ROOT]) ROOT="`$pwd`"
+
+## ----------------------------------------------------------------------
+## Move any compiler-specific libraries into the main LIBS varaible.
+## 
+LIBS="$DEFAULT_LIBS $LIBS"
+
+## ----------------------------------------------------------------------
+## Determine the runtime libraries we may need to include in the
+## libtools command so that executables will find the correct dynamic
+## libraries.
+## 
+AC_SUBST([DYNAMIC_DIRS]) DYNAMIC_DIRS=""
+
+if test -n "$AM_LDFLAGS $LDFLAGS"; then
+  for d in $AM_LDFLAGS $LDFLAGS ; do
+    case "$d" in
+      -L*)
+        d="`echo $d | sed -e 's/-L//g'`"
+        case "$d" in
+          .*)
+            ## If the path isn't absolute, make it so by
+            ## prepending the ROOT directory to it.
+            d=${ROOT}/$d
+            ;;
+        esac
+        DYNAMIC_DIRS="-R${d} $DYNAMIC_DIRS"
+        ;;
+    esac
+  done
+fi
+
+if test -n "$AM_CPPFLAGS"; then
+  TEMP_CPPFLAGS=""
+  for d in $AM_CPPFLAGS ; do
+    case "$d" in
+      -I.*)
+        ## If the path isn't absolute, make it so by prepending
+        ## the ROOT directory to it.
+        d="`echo $d | sed -e 's/-I//g'`"
+        d="-I${ROOT}/${d}"
+        ;;
+    esac
+    TEMP_CPPFLAGS="$d $TEMP_CPPFLAGS"
+  done
+  AM_CPPFLAGS=$TEMP_CPPFLAGS
+fi
+
+## ----------------------------------------------------------------------
+## Check if they would like the High Level library  compiled
+##
+
+AC_SUBST(HL) HL=""
+## name of fortran folder inside "hl", if FORTRAN compile is requested
+AC_SUBST(HL_FOR) HL_FOR=""
+AC_MSG_CHECKING([if high level library is enabled])
+AC_ARG_ENABLE([hl],
+     [AS_HELP_STRING([--enable-hl],
+                     [Enable the high level library [default=yes]])],
+     [HDF5_HL=$enableval],
+     [HDF5_HL=yes])
+
+if test "X$HDF5_HL" = "Xyes"; then
+ echo "yes"
+ HL="hl"
+ AC_DEFINE([INCLUDE_HL], [1],
+           [Define if HDF5's high-level library headers should be included in hdf5.h])
+else
+ echo "no"
+fi
+
+## ----------------------------------------------------------------------
+## Some programs shouldn't be built by default (e.g., programs to generate
+## data files used by tests, some optional tests).
+## Check if they want such programs built anyway.
+##
+AC_MSG_CHECKING([additional programs should be built])
+AC_ARG_ENABLE([build-all],
+     [AS_HELP_STRING([--enable-build-all],
+                     [Build helper programs that only developers should need [default=no]])],
+     [BUILD_ALL=$enableval],
+     [BUILD_ALL=no])
+
+if test "X$BUILD_ALL" = "Xyes"; then
+ echo "yes"
+else
+ echo "no"
+fi
+AM_CONDITIONAL([BUILD_ALL_CONDITIONAL], [test "X$BUILD_ALL" = "Xyes"])
+
+## ----------------------------------------------------------------------
+## Enable deprecated public API symbols
+##
+AC_SUBST([DEPRECATED_SYMBOLS])
+AC_MSG_CHECKING([if deprecated public symbols are available]);
+AC_ARG_ENABLE([deprecated-symbols],
+              [AS_HELP_STRING([--enable-deprecated-symbols],
+                     [Enable deprecated public API symbols [default=yes]])],
+             [DEPREC_SYMBOLS=$enableval],
+             [DEPREC_SYMBOLS=yes])
+
+case "X-$DEPREC_SYMBOLS" in
+  X-yes)
+    AC_MSG_RESULT([yes])
+    DEPRECATED_SYMBOLS=yes
+    ;;
+  X-no|*)
+    AC_MSG_RESULT([no])
+    DEPRECATED_SYMBOLS=no
+    AC_DEFINE([NO_DEPRECATED_SYMBOLS], [1],
+              [Define if deprecated public API symbols are disabled])
+    ;;
+esac
+
+## --------------------------------------------------------------------------
+## Which version of the public APIs should the 'base' versioned symbols use?
+##
+
+AC_SUBST([DEFAULT_API_VERSION])
+AC_MSG_CHECKING([which version of public symbols to use by default])
+AC_ARG_WITH([default-api-version],
+            [AS_HELP_STRING([--with-default-api-version=(v16|v18|v110)],
+                            [Specify default release version of public symbols
+                             [default=v18]])],,
+            withval=v18)
+
+if test "X$withval" = "Xv16"; then
+    AC_MSG_RESULT([v16])
+    DEFAULT_API_VERSION=v16
+    AC_DEFINE([USE_16_API_DEFAULT], [1],
+              [Define using v1.6 public API symbols by default])
+elif test "X$withval" = "Xv18"; then
+    AC_MSG_RESULT([v18])
+    DEFAULT_API_VERSION=v18
+else
+    AC_MSG_ERROR([invalid version of public symbols given])
+fi
+
+## It's an error to try to disable deprecated public API symbols while
+## choosing an older version of the public API as the default. However,
+## if the user insists on doing this via the --enable-unsupported configure
+## flag, we'll let them.
+if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
+  if test "X${DEFAULT_API_VERSION}" != "Xv18" -a "X${DEPRECATED_SYMBOLS}" = "Xno" ; then
+    AC_MSG_ERROR([Removing old public API symbols not allowed when using them as default public API symbols. Use --enable-unsupported to override this error.])
+  fi
+fi
+
+## ----------------------------------------------------------------------
+## Enable strict file format checks
+##
+AC_SUBST([STRICT_FORMAT_CHECKS])
+AC_MSG_CHECKING([Whether to perform strict file format checks]);
+AC_ARG_ENABLE([strict-format-checks],
+              [AS_HELP_STRING([--enable-strict-format-checks],
+                     [Enable strict file format checks, default=yes if
+                        debug flag is enabled, no otherwise])],
+             [STRICT_CHECKS=$enableval])
+
+## Default to yes if debug is enabled
+if test "X-$STRICT_CHECKS" = X- ; then
+  if test -z "$DEBUG_PKG" ; then
+    STRICT_CHECKS=no
+  else
+    STRICT_CHECKS=yes
+  fi
+fi
+
+case "X-$STRICT_CHECKS" in
+  X-yes)
+    AC_MSG_RESULT([yes])
+    STRICT_FORMAT_CHECKS=yes
+    AC_DEFINE([STRICT_FORMAT_CHECKS], [1],
+              [Define if strict file format checks are enabled])
+    ;;
+  X-no|*)
+    AC_MSG_RESULT([no])
+    STRICT_FORMAT_CHECKS=no
+    ;;
+esac
+
+
+## ----------------------------------------------------------------------
+## Enable embedded library information
+##
+AC_MSG_CHECKING([Whether to have library information embedded in the executables])
+AC_ARG_ENABLE([embedded-libinfo],
+    [AS_HELP_STRING([--enable-embedded-libinfo],
+	[Enable embedded library information [default=yes]])],
+	[enable_embedded_libinfo=$enableval],
+	[enable_embedded_libinfo=yes])
+
+   if test "${enable_embedded_libinfo}" = "yes"; then
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([HAVE_EMBEDDED_LIBINFO], [1],
+                [Define if library information should be embedded in the executables])
+   else
+      AC_MSG_RESULT([no])
+    fi
+
+
+## ----------------------------------------------------------------------
+## Check if pointer alignments are enforced
+##
+AC_MSG_CHECKING([if alignment restrictions are strictly enforced])
+AC_RUN_IFELSE([
+    AC_LANG_PROGRAM([
+        #include <stdlib.h>
+        #include <string.h>
+
+        typedef struct {
+            size_t len;
+            void *p;
+        } hvl_t;
+        ], [
+        char *chp = "beefs";
+        char **chpp = malloc (2 * sizeof (char *));
+        char **chpp2;
+        hvl_t vl = { 12345, (void *) chp };
+        hvl_t *vlp;
+        hvl_t *vlp2;
+
+        memcpy ((void *) ((char *) chpp + 1), &chp, sizeof (char *));
+        chpp2 = (char **) ((char *) chpp + 1);
+        if (strcmp (*chpp2, chp)) {
+            free (chpp);
+            return 1;
+        }
+        free (chpp);
+
+        vlp = malloc (2 * sizeof (hvl_t));
+        memcpy ((void *) ((char *) vlp + 1), &vl, sizeof (hvl_t));
+        vlp2 = (hvl_t *) ((char *) vlp + 1);
+        if (vlp2->len != vl.len || vlp2->p != vl.p) {
+            free (vlp);
+            return 1;
+        }
+        free (vlp);
+    ])
+    ], [
+    AC_DEFINE([NO_ALIGNMENT_RESTRICTIONS], [1], [Define if we can violate pointer alignment restrictions])
+    AC_MSG_RESULT([no])
+    ], [
+    AC_MSG_RESULT([yes])
+    ], [
+    AC_MSG_RESULT([unknown, assuming yes])
+    ])
+
+
+## ----------------------------------------------------------------------
+## Restore user's CFLAGS.
+CFLAGS="$saved_user_CFLAGS"
+FCFLAGS="$saved_user_FCFLAGS"
+CXXFLAGS="$saved_user_CXXFLAGS"
+CPPFLAGS="$saved_user_CPPFLAGS"
+LDFLAGS="$saved_user_LDFLAGS"
+
+
+## ----------------------------------------------------------------------
+## Create automake conditionals to tell automake makefiles which directories
+## need to be compiled
+
+AM_CONDITIONAL([BUILD_CXX_CONDITIONAL], [test "X$HDF_CXX" = "Xyes"])
+AM_CONDITIONAL([BUILD_PARALLEL_CONDITIONAL], [test -n "$TESTPARALLEL"])
+AM_CONDITIONAL([BUILD_FORTRAN_CONDITIONAL], [test "X$HDF_FORTRAN" = "Xyes"])
+AM_CONDITIONAL([BUILD_HDF5_HL_CONDITIONAL], [test "X$HDF5_HL" = "Xyes"])
+
+
+## ----------------------------------------------------------------------
+## Build the Makefiles.
+##
+
+## The directory search list
+AC_SUBST([SEARCH]) SEARCH='$(srcdir) $(top_builddir)/src $(top_srcdir)/src'
+cmd='echo $SEARCH |sed "s/ /'$SEARCH_SEP'/g"'
+SEARCH="$SEARCH_RULE`eval $cmd`"
+export SEARCH
+
+## We don't need to say when we're entering directories if we're using
+## GNU make because make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+  AC_SUBST([SETX]) SETX=":"
+else
+  AC_SUBST([SETX]) SETX="set -x"
+fi
+
+## Some cleanup stuff
+rm -f conftest conftest.o conftest.c dummy.o *.mod
+
+## Build config.status, touch the stamp files, and build all the Makefiles.
+## The order is such that the first `make' does not need to update any
+## configuration information. See config/commence.in for the order in which
+## things need to be done.
+
+## First the stamp1 file for H5config.h.in
+mkdir ./config >/dev/null 2>&1
+touch ./config/stamp1
+
+## Then the config.status file (but not makefiles)
+saved_no_create=$no_create
+no_create=yes
+
+PARALLEL_MAKE=""
+FORTRAN_PARALLEL_MAKE=""
+
+if test -n "$TESTPARALLEL"; then
+  PARALLEL_MAKE="$TESTPARALLEL/Makefile $TESTPARALLEL/testph5.sh"
+
+  if test "X$HDF_FORTRAN" = "Xyes"; then
+    FORTRAN_PARALLEL_MAKE=fortran/$TESTPARALLEL/Makefile
+  fi
+fi
+
+AC_CONFIG_FILES([src/libhdf5.settings
+                 Makefile
+                 src/Makefile
+                 test/Makefile
+                 test/testcheck_version.sh
+                 test/testerror.sh
+                 test/H5srcdir_str.h
+                 test/testlibinfo.sh
+                 test/testlinks_env.sh
+                 testpar/Makefile
+                 testpar/testph5.sh
+                 perform/Makefile
+                 tools/Makefile
+                 tools/h5dump/Makefile
+                 tools/h5dump/testh5dump.sh
+                 tools/h5dump/testh5dumppbits.sh
+                 tools/h5dump/testh5dumpxml.sh
+                 tools/h5ls/testh5ls.sh
+                 tools/h5import/Makefile
+                 tools/h5import/h5importtestutil.sh
+                 tools/h5diff/Makefile
+                 tools/h5diff/testh5diff.sh
+                 tools/h5diff/testph5diff.sh
+                 tools/h5jam/Makefile
+                 tools/h5jam/testh5jam.sh
+                 tools/h5repack/Makefile
+                 tools/h5repack/h5repack.sh
+                 tools/h5ls/Makefile
+                 tools/h5copy/Makefile
+                 tools/h5copy/testh5copy.sh
+                 tools/lib/Makefile
+                 tools/misc/Makefile
+                 tools/misc/h5cc
+                 tools/misc/testh5mkgrp.sh
+                 tools/misc/testh5repart.sh
+                 tools/h5stat/testh5stat.sh
+                 tools/h5stat/Makefile
+                 examples/Makefile
+                 examples/run-c-ex.sh
+                 examples/testh5cc.sh
+                 c++/Makefile
+                 c++/src/Makefile
+                 c++/src/h5c++
+                 c++/test/Makefile
+                 c++/test/H5srcdir_str.h
+                 c++/examples/Makefile
+                 c++/examples/run-c++-ex.sh
+                 c++/examples/testh5c++.sh
+                 fortran/Makefile
+                 fortran/src/h5fc
+                 fortran/src/Makefile
+                 fortran/test/Makefile
+                 fortran/testpar/Makefile
+                 fortran/examples/Makefile
+                 fortran/examples/run-fortran-ex.sh
+                 fortran/examples/testh5fc.sh
+                 hl/Makefile
+                 hl/src/Makefile
+                 hl/test/Makefile
+                 hl/test/H5srcdir_str.h
+                 hl/tools/Makefile
+                 hl/tools/gif2h5/Makefile
+                 hl/tools/gif2h5/h52giftest.sh
+                 hl/examples/Makefile
+                 hl/examples/run-hlc-ex.sh
+                 hl/c++/Makefile
+                 hl/c++/src/Makefile
+                 hl/c++/test/Makefile
+                 hl/c++/examples/Makefile
+                 hl/c++/examples/run-hlc++-ex.sh
+                 hl/fortran/Makefile
+                 hl/fortran/src/Makefile
+                 hl/fortran/test/Makefile
+                 hl/fortran/examples/Makefile
+                 hl/fortran/examples/run-hlfortran-ex.sh])
+
+AC_OUTPUT
+LT_OUTPUT
+no_create=$saved_no_create
+
+## Then the stamp2 file for H5config.h
+touch ./config/stamp2
+
+## Finally the makefiles
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
+## Post processing to patch up some deficiencies in libtool
+case $host_os in
+  linux* | freebsd* )
+    ## If gcc is not used, need to set $wl to use "-Wl,"
+    if $CC -v 2>&1 | grep '^gcc' > /dev/null ; then
+      : using gcc
+    else
+      echo 'fixing $wl in' $ofile
+ed - $ofile <<EOF 2> /dev/null
+g/^wl=""/s//wl="-Wl,"/
+w
+q
+EOF
+    fi
+    ;;
+esac
+
+## Are we compiling static libraries, shared libraries, or both?  This
+## is only used for the libhdf5.settings file. We can't just look at
+## $enable_static and $enable_shared because if they're yes the ltconfig
+## might have decided that one or the other is simply not possible.
+## Therefore we have to ask the generated `libtool' shell script
+## which 'features' it has enabled.
+if (./libtool --features | grep '^enable shared libraries' > /dev/null); then
+  enable_shared=yes
+else
+  enable_shared=no
+fi
+
+if (./libtool --features | grep '^enable static libraries' > /dev/null); then
+  enable_static=yes
+else
+  enable_static=no
+fi
+
+if test "X$enable_static" = "Xyes" && test "X$enable_shared" = "Xyes"; then
+  STATIC_SHARED="static, shared"
+elif test "X$enable_static" = "Xyes"; then
+  STATIC_SHARED="static"
+elif test "X$enable_shared" = "Xyes"; then
+  STATIC_SHARED="shared"
+else
+  STATIC_SHARED="none"
+fi
+
+chmod 755 tools/misc/h5cc
+
+if test "X$HDF_FORTRAN" = "Xyes"; then
+  chmod 755 fortran/src/h5fc
+fi
+
+if test "X$HDF_CXX" = "Xyes"; then
+  chmod 755 c++/src/h5c++
+fi
+
+## We don't want inline defined for C++ compilers
+## Don't worry about the C++ ifdef wrappers in the H5pubconf file, since
+## 'H5_inline' isn't a C++ keyword.
+cat >> src/H5config.h <<EOF
+
+#if defined(__cplusplus) && defined(inline)
+#undef inline
+#endif
+EOF
+
+## show the configure settings
+cat src/libhdf5.settings
diff --git a/configure.in b/configure.in
deleted file mode 100644
index df800f2..0000000
--- a/configure.in
+++ /dev/null
@@ -1,4567 +0,0 @@
-dnl Process this file with autoconf to produce configure.
-dnl
-dnl Copyright by The HDF Group.
-dnl Copyright by the Board of Trustees of the University of Illinois.
-dnl All rights reserved.
-dnl
-dnl This file is part of HDF5.  The full HDF5 copyright notice, including
-dnl terms governing use, modification, and redistribution, is contained in
-dnl the files COPYING and Copyright.html.  COPYING can be found at the root
-dnl of the source code distribution tree; Copyright.html can be found at the
-dnl root level of an installed copy of the electronic HDF5 document set and
-dnl is linked from the top-level documents page.  It can also be found at
-dnl http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
-dnl access to either file, you may request a copy from help at hdfgroup.org.
-
-dnl ----------------------------------------------------------------------
-dnl Initialize configure.
-dnl
-AC_REVISION($Id: configure.in 22270 2012-04-09 19:54:57Z mamcgree $)
-AC_PREREQ([2.53])
-
-dnl AC_INIT takes the name of the package, the version number, and an
-dnl email address to report bugs. AC_CONFIG_SRCDIR takes a unique file
-dnl as its argument.
-dnl
-dnl NOTE: Don't forget to change the version number here when we do a
-dnl release!!!
-dnl
-AC_INIT([HDF5], [1.8.9], [help at hdfgroup.org])
-AC_CONFIG_SRCDIR([src/H5.c])
-AM_CONFIG_HEADER([src/H5config.h])
-
-AC_CONFIG_AUX_DIR([bin])
-AC_CONFIG_MACRO_DIR([m4])
-dnl AM_INIT_AUTOMAKE takes a list of options that should be applied to
-dnl every Makefile.am when automake is run.
-AM_INIT_AUTOMAKE([foreign])
-AM_SILENT_RULES([yes])
-
-dnl AM_MAINTAINER_MODE turns off "rebuild rules" that contain dependencies
-dnl for Makefiles, configure, src/H5config.h, etc.  If AM_MAINTAINER_MODE
-dnl is *not* included here, these files will be rebuilt if out of date.
-dnl This is a problem because if users try to build on a machine with
-dnl the wrong versions of autoconf and automake, these files will be
-dnl rebuilt with the wrong versions and bad things can happen.
-dnl Also, CVS doesn't preserve dependencies between timestamps, so
-dnl Makefiles will often think rebuilding needs to occur when it doesn't.
-dnl Developers should './configure --enable-maintainer-mode' to turn on
-dnl rebuild rules.
-AM_MAINTAINER_MODE
-
-dnl Run post processing on files created by configure.
-dnl src/H5pubconf.h:
-dnl Generate src/H5pubconf.h from src/H5config.h by prepending H5_ to all
-dnl macro names. This avoid name conflict between HDF5 macro names and those
-dnl generated by another software package that uses the HDF5 library.
-dnl src/libhdf5.settings:
-dnl Remove all lines begun with "#" which are generated by CONDITIONAL's of
-dnl configure.
-AC_OUTPUT_COMMANDS([
-  echo "creating src/H5pubconf.h"
-  sed 's/#define /#define H5_/' <src/H5config.h |\
-    sed 's/#undef /#undef H5_/' >pubconf
-  if test ! -f src/H5pubconf.h; then
-    /bin/mv -f pubconf src/H5pubconf.h
-  elif (diff pubconf src/H5pubconf.h >/dev/null); then
-    rm -f pubconf
-    echo "src/H5pubconf.h is unchanged"
-  else
-    /bin/mv -f pubconf src/H5pubconf.h
-  fi
-  echo "Post process src/libhdf5.settings"
-  sed '/^#/d' < src/libhdf5.settings > libhdf5.settings.TMP
-  cp libhdf5.settings.TMP src/libhdf5.settings
-  rm -f libhdf5.settings.TMP
-])
-
-dnl It's possible to configure for a host other than the one on which
-dnl configure is currently running by using the --host=foo flag.
-dnl For machines on which HDF5 is often configured, it can be convenient
-dnl to specify the name of the machine rather than its canonical type.
-case $host_alias in
-  redstorm)
-    host_alias=x86_64-redstorm-linux-gnu
-    ;;
-esac
-
-AC_CANONICAL_HOST
-AC_SUBST([CPPFLAGS])
-
-dnl H5_CFLAGS (and company) are for CFLAGS that should be used on HDF5, but
-dnl not exported to h5cc (or h5fc, etc.)
-AC_SUBST([H5_CFLAGS])
-AC_SUBST([H5_CPPFLAGS])
-AC_SUBST([H5_FCFLAGS])
-AC_SUBST([H5_CXXFLAGS])
-AC_SUBST([H5_LDFLAGS])
-
-dnl AM_CFLAGS (and company) are for CFLAGS that should be used on HDF5,
-dnl and WILL be exported to h5cc (or h5fc, etc) if set by configure.
-AC_SUBST([AM_CFLAGS])
-AC_SUBST([AM_FCFLAGS])
-AC_SUBST([AM_CXXFLAGS])
-AC_SUBST([AM_CPPFLAGS])
-AC_SUBST([AM_LDFLAGS])
-
-dnl Make sure flags are set to something (otherwise macros may set them later).
-AM_CFLAGS="${AM_CFLAGS}"
-AM_CXXFLAGS="${AM_CXXFLAGS}"
-AM_FCFLAGS="${AM_FCFLAGS}"
-AM_CPPFLAGS="${AM_CPPFLAGS}"
-AM_LDFLAGS="${AM_LDFLAGS}"
-CFLAGS="${CFLAGS}"
-CXXFLAGS="${CXXFLAGS}"
-FCFLAGS="${FCFLAGS}"
-CPPFLAGS="${CPPFLAGS}"
-LDFLAGS="${LDFLAGS}"
-
-dnl Configure may need to alter any of the *FLAGS variables in order for
-dnl various checks to work correctly. Save the user's value here so it
-dnl can be restored once all configure checks are complete.
-saved_user_CFLAGS="$CFLAGS"
-saved_user_CXXFLAGS="$CXXFLAGS"
-saved_user_FCFLAGS="$FCFLAGS"
-saved_user_LDFLAGS="$LDFLAGS"
-saved_user_CPPFLAGS="$CPPFLAGS"
-
-dnl Different compilers may need default libraries. They are specified in
-dnl the config/* files, so we put this statement here so that it'll be
-dnl set by the code which follows...
-dnl
-DEFAULT_LIBS=""
-
-dnl Support F9X variable to define Fortran compiler if FC variable is
-dnl not used.  This should be deprecated in the future.
-if test "x" = "x$FC"; then
-  FC=${F9X}
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set prefix default (install directory) to a directory in the build area.
-dnl This allows multiple src-dir builds within one host.
-AC_PREFIX_DEFAULT([`pwd`/hdf5])
-
-dnl ----------------------------------------------------------------------
-dnl Dump all shell variables values.
-dnl
-AC_MSG_CHECKING([shell variables initial values])
-set >&AS_MESSAGE_LOG_FD
-AC_MSG_RESULT([done])
-
-dnl Define all symbol variables used for configure summary.
-dnl EXTERNAL_FILTERS equals all external filters. Default none.
-dnl MPE: whether MPE option is enabled. Default no.
-dnl STATIC_EXEC: whether static-exec is enabled. Default no.
-dnl HDF_FORTRAN: whether Fortran is enabled. Default no.
-dnl HDF_FORTRAN2003: whether Fortran 2003 is enabled. Default no.
-dnl FC: Fortran compiler.
-dnl HDF_CXX: whether C++ is enabled. Default no.
-dnl CXX: C++ compiler.
-dnl HDF5_HL: whether high-level library is enabled. Default is yes.
-dnl GPFS: whether gpfs is enabled. Default no.
-dnl LARGEFILE: whether largefile support is enabled. Default yes.
-dnl INSTRUMENT: whether INSTRUMENT is enabled. No default set here.
-dnl CODESTACK: whether CODESTACK is enabled. Default no.
-dnl HAVE_DMALLOC: whether system has dmalloc support. Default no.
-dnl DIRECT_VFD: whether DIRECT_VFD is enabled. Default no.
-dnl THREADSAFE: whether THREADSAFE is enabled. Default no.
-dnl STATIC_SHARED: whether static and/or shared libraries are requested.
-dnl enable_shared: whether shared lib is enabled.
-dnl enable_static: whether static lib is enabled.
-dnl UNAME_INFO: System information.
-
-AC_SUBST(EXTERNAL_FILTERS)
-AC_SUBST(MPE) MPE=no
-AC_SUBST(STATIC_EXEC) STATIC_EXEC=no
-AC_SUBST(HDF_FORTRAN) HDF_FORTRAN=no
-AC_SUBST(HDF_FORTRAN2003) HDF_FORTRAN2003=no
-AC_SUBST(FC) HDF_FORTRAN=no
-AC_SUBST(FC2003) HDF_FORTRAN2003=no
-AC_SUBST(HDF_CXX) HDF_CXX=no
-AC_SUBST(CXX) HDF_CXX=no
-AC_SUBST(HDF5_HL) HDF5_HL=yes
-AC_SUBST(GPFS) GPFS=no
-AC_SUBST(LARGEFILE) LARGEFILE=yes
-AC_SUBST(INSTRUMENT)
-AC_SUBST(CODESTACK) CODESTACK=no
-AC_SUBST(HAVE_DMALLOC) HAVE_DMALLOC=no
-AC_SUBST(DIRECT_VFD) DIRECT_VFD=no
-AC_SUBST(THREADSAFE) THREADSAFE=no
-AC_SUBST(STATIC_SHARED)
-AC_SUBST(enable_shared)
-AC_SUBST(enable_static)
-AC_SUBST(UNAME_INFO) UNAME_INFO=`uname -a`
-
-dnl ----------------------------------------------------------------------
-dnl Some platforms have broken basename, and/or xargs programs. Check
-dnl that it actually does what it's supposed to do. Catch this early
-dnl since configure relies upon them heavily and there's no use continuing
-dnl if it's broken.
-dnl
-
-dnl Avoid depending upon Character Ranges.
-dnl These are defined by autoconf.
-dnl as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-dnl as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
-AC_MSG_CHECKING([if basename works])
-BASENAME_TEST="`basename /foo/bar/baz/qux/basename_works`"
-if test $BASENAME_TEST != "basename_works"; then
-  AC_MSG_ERROR([basename program doesn't work])
-else
-  AC_MSG_RESULT([yes])
-fi
-
-AC_MSG_CHECKING([if xargs works])
-XARGS_TEST="`echo /foo/bar/baz/qux/xargs_works | xargs basename`"
-if test $XARGS_TEST != "xargs_works"; then
-  AC_MSG_ERROR([xargs program doesn't work])
-else
-  AC_MSG_RESULT([yes])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Check that the cache file was build on the same host as what we're
-dnl running on now.
-dnl
-AC_CACHE_CHECK([for cached host], [hdf5_cv_host], [hdf5_cv_host="none"]);
-if test $hdf5_cv_host = "none"; then
-  hdf5_cv_host=$host
-elif test $hdf5_cv_host != $host; then
-  echo "The config.cache file was generated on $hdf5_cv_host but"
-  echo "this is $host.  Please remove that file and try again."
-  AC_MSG_ERROR(config.cache file is invalid)
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Source any special files that we need.  These files normally aren't
-dnl present but can be used by the maintainers to fine tune things like
-dnl turning on debug or profiling flags for the compiler.  The search order
-dnl is:
-dnl
-dnl	CPU-VENDOR-OS
-dnl	VENDOR-OS
-dnl	CPU-OS
-dnl	CPU-VENDOR
-dnl	OS
-dnl	VENDOR
-dnl	CPU
-dnl
-dnl If the `OS' ends with a version number then remove it. For instance,
-dnl `freebsd3.1' would become `freebsd'
-case $host_os in
-  aix*)
-    host_os_novers=aix
-    ;;
-  freebsd*)
-    host_os_novers=freebsd
-    ;;
-  irix5.*)
-    host_os_novers=irix5.x
-    ;;
-  irix6.*)
-    host_os_novers=irix6.x
-    ;;
-  osf4.*)
-    host_os_novers=osf4.x
-    ;;
-  osf5.*)
-    host_os_novers=osf5.x
-    ;;
-  solaris2.*)
-    host_os_novers=solaris2.x
-    ;;
-  *)
-    host_os_novers=$host_os
-    ;;
-esac
-
-host_config="none"
-for f in $host_cpu-$host_vendor-$host_os \
-         $host_cpu-$host_vendor-$host_os_novers \
-         $host_vendor-$host_os \
-         $host_vendor-$host_os_novers \
-         $host_cpu-$host_os \
-         $host_cpu-$host_os_novers \
-         $host_cpu-$host_vendor \
-         $host_os \
-         $host_os_novers \
-         $host_vendor \
-         $host_cpu ; do
-  AC_MSG_CHECKING([for config $f])
-  if test -f "$srcdir/config/$f"; then
-    host_config=$srcdir/config/$f
-    AC_MSG_RESULT([found])
-    break
-  fi
-  AC_MSG_RESULT([no])
-done
-if test "X$host_config" != "Xnone"; then
-  CC_BASENAME="`echo $CC | cut -f1 -d' ' | xargs basename 2>/dev/null`"
-  . $host_config
-fi
-
-dnl Source any special site-specific file
-hname="`hostname`"
-while test -n "$hname"; do
-  file=$srcdir/config/site-specific/host-$hname
-  AC_MSG_CHECKING([for config $file])
-  if test -f "$file"; then
-    . $file
-    AC_MSG_RESULT([found])
-    break
-  fi
-  AC_MSG_RESULT([no])
-  hname_tmp=$hname
-  hname="`echo $hname | cut -d. -f2-99`"
-  test "$hname_tmp" = "$hname" && break
-done
-
-dnl ----------------------------------------------------------------------
-dnl Some built-in configure checks can only see CFLAGS (not AM_CFLAGS), so
-dnl we need to add this in so configure works as intended. We will need to
-dnl reset this value at the end of configure, to preserve the user's settings.
-CFLAGS="${AM_CFLAGS} ${CFLAGS}"
-FCFLAGS="${AM_FCFLAGS} ${FCFLAGS}"
-CXXFLAGS="${AM_CXXFLAGS} ${CXXFLAGS}"
-CPPFLAGS="${AM_CPPFLAGS} ${CPPFLAGS}"
-LDFLAGS="${AM_LDFLAGS} ${LDFLAGS}"
-
-dnl ----------------------------------------------------------------------
-dnl Enable dependency tracking unless the configure options or a
-dnl site-specific file told us not to.  This prevents configure from
-dnl silently disabling dependencies for some compilers.
-dnl
-if test -z "${enable_dependency_tracking}"; then
-  enable_dependency_tracking="yes"
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Check for programs.
-dnl
-AC_PROG_CC
-CC_BASENAME="`echo $CC | cut -f1 -d' ' | xargs basename 2>/dev/null`"
-
-dnl ----------------------------------------------------------------------------
-dnl Configure disallows unsupported combinations of options. However, users
-dnl may want to override and build with unsupported combinations for their
-dnl own use. They can use the --enable-unsupported configure flag, which
-dnl ignores any errors from configure due to incompatible flags.
-AC_MSG_CHECKING([if unsupported combinations of configure options are allowed])
-AC_ARG_ENABLE([unsupported],
-              [AC_HELP_STRING([--enable-unsupported],
-                              [Allow unsupported combinations of configure options])],
-              [ALLOW_UNSUPPORTED=$enableval])
-
-case "X-$ALLOW_UNSUPPORTED" in 
-  X-|X-no)
-    AC_MSG_RESULT([no])
-    ;;
-  X-yes)
-    AC_MSG_RESULT([yes])
-    ;;
-  *)
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like the Fortran interface compiled
-dnl
-AC_SUBST([HDF5_INTERFACES]) HDF5_INTERFACES=""
-AC_MSG_CHECKING([if Fortran interface enabled])
-AC_ARG_ENABLE([fortran],
-              [AC_HELP_STRING([--enable-fortran],
-                              [Compile the Fortran 77/90/95 interface [default=no]])],
-              [HDF_FORTRAN=$enableval])
-
-if test "X$HDF_FORTRAN" = "Xyes"; then
-  echo "yes"
-else
-  echo "no"
-fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like the Fortran 2003 interface compiled
-dnl
-AC_MSG_CHECKING([if Fortran 2003 interface enabled])
-AC_ARG_ENABLE([fortran2003],
-              [AC_HELP_STRING([--enable-fortran2003],
-                              [Compile the Fortran 2003 interface, must also specify --enable-fortran [default=no]])],
-              [HDF_FORTRAN2003=$enableval])
-
-dnl ----------------------------------------------------------------------
-dnl Check to make sure --enable-fortran is present if --enable-fortran2003 
-dnl was specified
-
-if test "X$HDF_FORTRAN2003" = "Xyes" && test "X$HDF_FORTRAN" = "Xno"; then
-  echo "no"
-  AC_MSG_ERROR([--enable-fortran must be used with --enable-fortran2003])
-else
-  echo "yes"
-fi
-
-HAVE_SIZEOF="no"
-FORTRAN_DEFAULT_REALisDBLE="no"
-
-if test "X$HDF_FORTRAN" = "Xyes"; then
-
-  AC_SUBST(FC) HDF_FORTRAN=yes
-  AC_SUBST([HAVE_FORTRAN_2003])
-		
-  HDF5_INTERFACES="$HDF5_INTERFACES fortran"
-
-  dnl --------------------------------------------------------------------
-  dnl Default for FORTRAN 2003 compliant compilers
-  dnl
-  HAVE_FORTRAN_2003="no"
-  HAVE_F2003_REQUIREMENTS="no"
-
-  dnl --------------------------------------------------------------------
-  dnl HDF5 integer variables for the H5fortran_types.f90 file.
-  dnl
-  AC_SUBST([R_LARGE])
-  AC_SUBST([R_INTEGER])
-  AC_SUBST([HADDR_T])
-  AC_SUBST([HSIZE_T])
-  AC_SUBST([HSSIZE_T])
-  AC_SUBST([HID_T])
-  AC_SUBST([SIZE_T])
-  AC_SUBST([OBJECT_NAMELEN_DEFAULT_F])
-
-  dnl --------------------------------------------------------------------
-  dnl General Fortran flags
-  dnl
-  AM_FCFLAGS="${AM_FCFLAGS} ${FFLAGS}"
-  FCFLAGS="${FCFLAGS} ${FFLAGS}"
-
-  dnl --------------------------------------------------------------------
-  dnl Fortran source extention
-  dnl
-  AC_FC_SRCEXT([f90])
-
-  AC_SUBST([F9XSUFFIXFLAG])
-  AC_SUBST([FSEARCH_DIRS])
-
-  dnl --------------------------------------------------------------------
-  dnl Check for a Fortran 9X compiler and how to include modules.
-  dnl 
-  AC_PROG_FC([f90 pgf90 slf90 f95 g95 xlf95 efc ifort ftn],)
-  AC_F9X_MODS
-
-  dnl It seems that libtool (as of Libtool 1.5.14) is trying to
-  dnl configure itself for Fortran 77.
-  dnl Tell it that our F77 compiler is $FC (actually a F9X compiler)
-  F77=$FC
-
-  dnl Change to the Fortran 90 language
-  AC_LANG_PUSH(Fortran)
-
-  dnl --------------------------------------------------------------------
-  dnl Define wrappers for the C compiler to use Fortran function names
-  dnl
-  AC_FC_WRAPPERS
-
-  dnl --------------------------------------------------------------------
-  dnl See if the compiler will support the "-I." option
-  dnl
-  dnl  AM_FCFLAGS_saved=$AM_FCFLAGS
-  dnl  AM_FCFLAGS="${AM_FCFLAGS} -I."
-
-  dnl  AC_MSG_CHECKING(if compiler supports -I. option)
-  dnl  AC_TRY_FCOMPILE([
-  dnl      program conftest
-  dnl      end
-  dnl  ], AC_MSG_RESULT(yes),
-  dnl     AC_MSG_RESULT(no)
-  dnl     AM_FCFLAGS="$AM_FCFLAGS_saved")
-
-  dnl --------------------------------------------------------------------
-  dnl See if the fortran compiler supports the intrinsic function "SIZEOF"
-
-  AC_MSG_CHECKING([if Fortran compiler supports intrinsic SIZEOF])
-  AC_TRY_RUN([ 
-   PROGRAM main
-     i = sizeof(x)
-   END PROGRAM
-  ], [AC_MSG_RESULT(yes)
-     	HAVE_SIZEOF="yes"],
-       AC_MSG_RESULT(no))
-
-  dnl Check to see if -r8 was specified to determine if we need to
-  dnl compile the DOUBLE PRECISION interfaces.
-
-  AC_MSG_CHECKING([if Fortran default REAL is DOUBLE PRECISION])
-  
-  AC_TRY_RUN([
-     MODULE type_mod
-       INTERFACE h5t	
-         MODULE PROCEDURE h5t_real
-         MODULE PROCEDURE h5t_dble
-       END INTERFACE
-     CONTAINS
-       SUBROUTINE h5t_real(r)
-         REAL :: r
-       END SUBROUTINE h5t_real
-       SUBROUTINE h5t_dble(d)
-         DOUBLE PRECISION :: d
-       END SUBROUTINE h5t_dble
-     END MODULE type_mod
-     PROGRAM main
-       USE type_mod
-       REAL :: r
-       DOUBLE PRECISION :: d
-       CALL h5t(r)
-       CALL h5t(d)
-     END PROGRAM main
-                  ],
-   AC_MSG_RESULT(no), 
-   [AC_MSG_RESULT(yes) 
-       FORTRAN_DEFAULT_REALisDBLE="yes"])
-
-  if test "X$HDF_FORTRAN2003" = "Xyes"; then
-
-    dnl Checking if the compiler supports the required Fortran 2003 features and
-    dnl disable Fortran 2003 if it does not.
-
-    AC_MSG_CHECKING([if Fortran compiler version compatible with Fortran 2003 HDF])
-    HAVE_FORTRAN_2003="no"
-	
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[
-
-	USE iso_c_binding
-	IMPLICIT NONE
-	TYPE(C_PTR) :: ptr
-	TYPE(C_FUNPTR) :: funptr
-	CHARACTER(LEN=80, KIND=c_char), TARGET :: ichr
-
-	ptr = C_LOC(ichr(1:1))
-
-        ])], 
-        [AC_MSG_RESULT(yes) 
-        HAVE_F2003_REQUIREMENTS=[yes]],
-        [AC_MSG_RESULT(no)])
-
-    if test "X$HAVE_F2003_REQUIREMENTS" = "Xno"; then
-    dnl  echo $HAVE_FORTRAN_2003
-      AC_MSG_ERROR([Fortran compiler lacks required Fortran 2003 features; unsupported Fortran 2003 compiler, remove --enable-fortran2003])
-    else
-      HAVE_FORTRAN_2003="yes"
-    dnl  echo $HAVE_FORTRAN_2003
-    fi
-
-  fi
-else
-  FC="no"
-fi
-
-dnl Change back to the C language
-AC_LANG_POP(Fortran)
-
-AM_CONDITIONAL([FORTRAN_HAVE_SIZEOF], [test "X$HAVE_SIZEOF" = "Xyes"])
-AM_CONDITIONAL([FORTRAN_2003_CONDITIONAL_F], [test "X$HAVE_FORTRAN_2003" = "Xyes"])
-AM_CONDITIONAL([FORTRAN_DEFAULT_REALisDBLE_F], [test "X$FORTRAN_DEFAULT_REALisDBLE" = "Xyes"])
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like the C++ interface compiled
-dnl
-dnl We need to check for a C++ compiler unconditionally, since
-dnl AC_PROG_CXX defines some macros that Automake 1.9.x uses and will
-dnl miss even if c++ is not enabled.
-  AC_PROG_CXX
-  AC_PROG_CXXCPP	dnl this is checked for when AC_HEADER_STDC is done
-
-AC_MSG_CHECKING([if c++ interface enabled])
-
-AC_ARG_ENABLE([cxx],
-              [AC_HELP_STRING([--enable-cxx],
-                              [Compile the C++ interface [default=no]])],
-              [HDF_CXX=$enableval])
-
-if test "X$HDF_CXX" = "Xyes"; then
-  echo "yes"
-  HDF5_INTERFACES="$HDF5_INTERFACES c++"
-
-  dnl Change to the C++ language
-  AC_LANG_PUSH(C++)
-
-  AC_MSG_CHECKING([if $CXX needs old style header files in includes])
-  AC_TRY_RUN([
-#include <iostream>
-
-int main(void) { return 0; }
-  ], [
-    echo no
-  ], [
-    echo yes
-    CXXFLAGS="${CXXFLAGS} -DOLD_HEADER_FILENAME"
-    AM_CXXFLAGS="${AM_CXXFLAGS} -DOLD_HEADER_FILENAME"
-  ])
-
-  AC_MSG_CHECKING([if $CXX can handle namespaces])
-  AC_TRY_RUN([
-namespace H5 {
-int fnord;
-}
-
-int main(void) {
-   using namespace H5;
-   fnord = 37;
-   return 0;
-} 
-  ], [
-     echo yes
-  ], [
-     echo no
-     CXXFLAGS="${CXXFLAGS} -DH5_NO_NAMESPACE"
-     AM_CXXFLAGS="${AM_CXXFLAGS} -DH5_NO_NAMESPACE"
-  ])
-
-  AC_MSG_CHECKING([if $CXX supports std])
-  AC_TRY_RUN([
-#include <string>
-
-using namespace std;
-
-int main(void) {
-   string myString("testing namespace std");
-   return 0;
-}
-  ], [
-     echo yes
-  ], [
-     echo no
-     CXXFLAGS="${CXXFLAGS} -DH5_NO_STD"
-     AM_CXXFLAGS="${AM_CXXFLAGS} -DH5_NO_STD"
-  ])
-
-  AC_MSG_CHECKING([if $CXX supports bool types])
-  AC_TRY_RUN([
-int main(void) {
-   bool flag;
-   return 0;
-}
-  ], [
-     echo yes
-  ], [
-     echo no
-     CXXFLAGS="${CXXFLAGS} -DBOOL_NOTDEFINED"
-     AM_CXXFLAGS="${AM_CXXFLAGS} -DBOOL_NOTDEFINED"
-  ])
-
-  AC_MSG_CHECKING([if $CXX has offsetof extension])
-    AC_TRY_COMPILE([
-  #include <stdio.h>
-  #include <stddef.h>
-    ],[
-    struct index_st
-    {
-      unsigned char type;
-      unsigned char num;
-      unsigned int len;
-    };
-    typedef struct index_st index_t;
-    int x,y;
-    x = offsetof(struct index_st, len);
-    y = offsetof(index_t, num)
-    ],
-    AC_DEFINE([CXX_HAVE_OFFSETOF], [1],
-    [Define if C++ compiler recognizes offsetof])
-    AC_MSG_RESULT([yes]),
-    AC_MSG_RESULT([no]))
-
-  AC_MSG_CHECKING([if $CXX can handle static cast])
-  AC_TRY_RUN([
-int main(void) {
-   float test_float;
-   int test_int;
-   test_float = 37.0;
-   test_int = static_cast <int> (test_float);
-   return 0;
-}
-  ], [
-    echo yes
-  ], [
-    echo no
-    CXXFLAGS="${CXXFLAGS} -DNO_STATIC_CAST"
-    AM_CXXFLAGS="${AM_CXXFLAGS} -DNO_STATIC_CAST"
-  ])
-else
-  echo "no"
-  CXX="no"
-fi
-
-dnl Change back to the C language
-AC_LANG_POP(C++)
-
-dnl ----------------------------------------------------------------------
-dnl Check if they have Perl installed on their system. We only need Perl
-dnl if they're using a GNU compiler.
-dnl
-AC_SUBST([PERL]) PERL=""
-if test "X$GCC" = "Xyes"; then
-  AC_CHECK_PROGS([PERL], [perl],, [$PATH])
-fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Check which archiving tool to use. This needs to be done before
-dnl the AM_PROG_LIBTOOL macro.
-dnl
-if test -z "$AR"; then
-  AC_CHECK_PROGS([AR], [ar xar], [:], [$PATH])
-fi
-AC_SUBST([AR])
-
-dnl Export the AR macro so that it will be placed in the libtool file
-dnl correctly.
-export AR
-
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-
-
-dnl ----------------------------------------------------------------------
-dnl Check that the tr utility is working properly.
-
-AC_PATH_PROG(TR, tr)
-
-TR_TEST=`echo Test | ${TR} ${as_cr_letters}"," ${as_cr_LETTERS}" "`
-if test "X${TR_TEST}" != "XTEST"; then
-  AC_MSG_ERROR([tr program doesn't work])
-fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Check that time can be used with srcdir.  This is okay on most systems,
-dnl but seems to cause problems on Cygwin.
-dnl The solution on Cygwin is not to record execution time for tests.
-AC_MSG_CHECKING([if srcdir= and time commands work together])
-
-AC_SUBST([TIME])
-TIME=time
-TIME_TEST=`foo="bar" ${TIME} echo 'baz' 2> /dev/null | grep baz`
-
-if test "X${TIME_TEST}" = "Xbaz"; then
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-  TIME=
-fi
-
-
-dnl The following variables are used to distinguish between building a
-dnl serial and parallel library.
-dnl
-dnl    HAVE_PARALLEL	-- defined in H5config.h if we are building
-dnl			   a parallel library even if configure wasn't
-dnl			   able to find some header file or library that
-dnl			   might be required. This is defined if the
-dnl			   compiler looks like a parallel compiler (e.g.,
-dnl			   mpicc or mpcc) or if the user explicitly states
-dnl			   that a parallel library is being built by supplying
-dnl			   the `--enable-parallel' configure switch.
-dnl
-dnl    PARALLEL		-- This variable is set to a non-null value if
-dnl			   configure thinks we're compiling a parallel
-dnl			   version of the library.
-dnl
-dnl    RUNSERIAL	-- This is a command which will be prepended to
-dnl			   the executable name to run the executable using
-dnl			   a single process. For serial versions of the
-dnl			   library this will normally be empty. For parallel
-dnl			   versions it might be something like `mpiexec -n 1'.
-dnl			   The value of this variable is substituted in *.in
-dnl			   files.
-dnl
-dnl    RUNPARALLEL	-- This is a command which will be prepended to
-dnl			   the executable name to run the executable on
-dnl			   multiple processors. For the serial library the
-dnl			   value will normally be the empty string. For
-dnl			   parallel library it should be something like
-dnl			   "mpiexec -n \$\${NPROCS:=6}" where NPROCS will
-dnl			   eventually contain the number of processors on which
-dnl			   to run the executable (the double dollarsigns are to
-dnl			   protect the expansion until make executes the
-dnl			   command).  The value of this variable is
-dnl			   substituted in *.in files.
-dnl
-AC_SUBST([PARALLEL])
-AC_SUBST([RUNSERIAL])
-AC_SUBST([RUNPARALLEL])
-AC_SUBST([TESTPARALLEL])
-
-dnl ----------------------------------------------------------------------
-dnl If the compiler is obviously a parallel compiler then we're building
-dnl a parallel version of hdf5 and should define HAVE_PARALLEL. Furthermore,
-dnl the name of the compiler might tell us how to run the resulting
-dnl executable. For `mpicc' the executable should be run with `mpiexec' from
-dnl the same directory as mpicc if it exists.
-dnl
-case "$CC_BASENAME" in
-  mpicc)
-    dnl The mpich compiler. Use mpiexec from the same directory if it
-    dnl exists.
-    PARALLEL=mpicc
-    AC_MSG_CHECKING([for mpiexec])
-
-    dnl Find the path where mpicc is located.
-    cmd="`echo $CC | cut -f1 -d' '`"
-    if (echo $cmd | grep / >/dev/null); then
-      path="`echo $cmd | sed 's/\(.*\)\/.*$/\1/'`"
-    else
-      for path in `echo $PATH | ${TR} ":" " "`; do
-        if test -x $path/$cmd; then
-          break
-        fi
-      done
-    fi
-
-    dnl Is there an mpiexec at that path?
-    if test -x $path/mpiexec; then
-      AC_MSG_RESULT([$path/mpiexec])
-      RUNSERIAL="${RUNSERIAL:-none}"
-
-      if test -z "$RUNPARALLEL"; then
-        RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}"
-      fi
-    else
-      AC_MSG_RESULT([none])
-    fi
-    ;;
-
-  mpcc|mpcc_r)
-    dnl The IBM compiler
-    PARALLEL="$CC_BASENAME"
-    ;;
-
-  *)
-    dnl Probably not a parallel compiler, but if `--enable-parallel'
-    dnl is defined below then we're still building a parallel hdf5.
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl If the Fortran compiler is obviously a parallel compiler then we're
-dnl building a parallel version of hdf5 and should define HAVE_PARALLEL.
-dnl Furthermore, the name of the compiler might tell us how to run the
-dnl resulting executable. For `mpif90' the executable should be run with
-dnl `mpiexec' from the same directory as mpif90 if it exists.
-dnl
-if test "X$HDF_FORTRAN" = "Xyes" ; then
-  dnl Change to the Fortran 90 language
-  AC_LANG_PUSH(Fortran)
-
-  case "$FC" in
-    *mpif90*)
-      dnl The Fortran mpich compiler. Use mpiexec from the same directory
-      dnl if it exists.
-      PARALLEL=mpif90
-      AC_MSG_CHECKING([for mpiexec])
-
-      dnl Find the path where mpif90 is located.
-      cmd=`echo $FC |cut -f1 -d' '`
-      if (echo $cmd |grep / >/dev/null); then
-        path="`echo $cmd |sed 's/\(.*\)\/.*$/\1/'`"
-      else
-        for path in `echo $PATH | ${TR} ":" " "`; do
-          if test -x $path/$cmd; then
-            break;
-          fi
-        done
-      fi
-
-      dnl Is there an mpiexec at that path?
-      if test -x $path/mpiexec; then
-        AC_MSG_RESULT([$path/mpiexec])
-        RUNSERIAL="${RUNSERIAL:-none}"
-
-        if test -z "$RUNPARALLEL"; then
-          RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}"
-        fi
-      else
-        AC_MSG_RESULT([none])
-      fi
-      ;;
-
-    *mpxlf* | *mpxlf_r* | *mpxlf90* | *mpxlf90_r* | *mpxlf95* | *mpxlf95_r*)
-      dnl The IBM compiler
-      PARALLEL="$FC"
-      ;;
-
-    *)
-      dnl Probably not a parallel compiler, but if `--enable-parallel'
-      dnl is defined below then we're still building a parallel hdf5.
-      ;;
-  esac
-
-  dnl Change to the C language
-  AC_LANG_POP(Fortran)
-fi
-
-dnl -----------------------------------------------------------------------------
-dnl If shared libraries are being used with parallel, disable them, unless the 
-dnl user explicity enables them via the '--enable-shared' option.
-if test "X${enable_shared}" = "X" -a "X${enable_parallel}" = "Xyes"; then
-    echo '    shared libraries disabled in parallel'
-    enable_shared="no"
-elif test "X${enable_shared}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
-    echo '    shared libraries explicitly enabled by user'
-elif test "X${enable_shared}" = "X" -a "X${PARALLEL}" != "X"; then
-    echo '    shared libraries disabled when a parallel compiler is being used'
-    enable_shared="no"
-elif test "X${enable_shared}" = "Xyes" -a "X${PARALLEL}" != "X"; then
-    echo '    shared libraries explicitly enabled by user'
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Fortran libraries are not currently supported on Mac. Disable them.
-dnl (this is overridable with --enable-unsupported).
-dnl
-AC_SUBST([H5_FORTRAN_SHARED])
-H5_FORTRAN_SHARED="no"
-if test "X${HDF_FORTRAN}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
-  AC_MSG_CHECKING([if shared Fortran libraries are supported])
-  H5_FORTRAN_SHARED="yes"
-
-  dnl Disable fortran shared libraries on Mac. (MAM - 03/30/11)
-  case "`uname`" in
-    Darwin*)
-    H5_FORTRAN_SHARED="no"
-    CHECK_WARN="Shared Fortran libraries not currently supported on Mac."
-      ;;
-  esac
-
-  dnl Report results of check(s)
-  if test "X${H5_FORTRAN_SHARED}" = "Xno"; then
-    AC_MSG_RESULT([no])
-    AC_MSG_WARN([$CHECK_WARN])
-    if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-      AC_MSG_WARN([Disabling shared Fortran libraries.])
-      AC_MSG_WARN([To override this behavior, please use --enable-unsupported configure option.])
-        if test "X${enable_static}" = "Xno"; then
-          AC_MSG_ERROR([both static and shared Fortran libraries are disabled])
-        fi
-    else
-      AC_MSG_WARN([Allowing unsupported Fortran shared libraries due to use of --enable-unsupported flag])
-      H5_FORTRAN_SHARED="yes"
-    fi
-  else
-    AC_MSG_RESULT([yes])
-  fi
-fi
-
-AM_CONDITIONAL([FORTRAN_SHARED_CONDITIONAL], [test "X$H5_FORTRAN_SHARED" = "Xyes"])
-
-dnl ----------------------------------------------------------------------
-dnl Disable C++ shared libraries if +DD64 flag is detected.
-dnl
-AC_SUBST([H5_CXX_SHARED])
-H5_CXX_SHARED="no"
-if test "X${HDF_CXX}" = "Xyes" && test "X${enable_shared}" != "Xno"; then
-  AC_MSG_CHECKING([if shared C++ libraries are supported])
-  H5_CXX_SHARED="yes"
-
-  dnl Disable C++ shared libraries if DD64 flag is being used.
-  if (echo dummy ${CXX} ${CXXLD} ${CFLAGS} ${CXXFLAGS} ${LDFLAGS} | grep 'DD64') > /dev/null; then
-    H5_CXX_SHARED="no"
-    CHECK_WARN="Shared C++ libraries not currently supported with +DD64 flag."
-  fi
-
-  dnl Report results of check(s)
-  if test "X${H5_CXX_SHARED}" = "Xno"; then
-    AC_MSG_RESULT([no])
-    AC_MSG_WARN([$CHECK_WARN])
-    if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-      AC_MSG_WARN([Disabling shared C++ libraries.])
-      AC_MSG_WARN([To override this behavior, please use --enable-unsupported configure option.])
-      if test "X${enable_static}" = "Xno"; then
-        AC_MSG_ERROR([both static and shared C++ libraries are disabled])
-      fi
-    else
-      AC_MSG_WARN([Allowing unsupported C++ shared librares due to use of --enable-unsupported flag])
-    fi
-  else
-    AC_MSG_RESULT([yes])
-  fi
-fi
-
-AM_CONDITIONAL([CXX_SHARED_CONDITIONAL], [test "X$H5_CXX_SHARED" = "Xyes"])
-
-dnl ----------------------------------------------------------------------
-dnl pgcc version 6.0x have optimization (-O, -O2 or -O3) problem.  Detect
-dnl these versions and add option "-Mx,28,0x8" to the compiler to avoid
-dnl the problem if optimization is enabled.
-dnl
-if (${CC-cc} -V 2>&1 | grep '^pgcc 6.0') > /dev/null && test "X$enable_production" = "Xyes"; then
-    echo 'adding compiler flag to avoid optimization problem in pgcc'
-    CC="${CC-cc} -Mx,28,0x8"
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Shared libraries are not currently supported under Cygwin, so configure
-dnl disables them unless --enable-unsupported has been supplied by the user.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  case "`uname`" in
-    CYGWIN*)
-      if test "X${enable_shared}" = "Xyes"; then
-        echo '    warning: shared libraries are not supported on Cygwin!'
-        echo '    disabling shared libraries'
-        echo '    use --enable-unsupported to override this warning and keep shared libraries enabled'
-      fi
-      enable_shared="no"
-      ;;
-  esac
-fi
-
-dnl ----------------------------------------------------------------------
-dnl The GCC compiler on Cygwin running on Windows XP has rounding problem
-dnl in the data conversion dt_arith.c from unsigned long long to long 
-dnl double (see bug #1813).  I define a macro here to skip the test for
-dnl Cygwin.  I'll come back and figure out the problem once I'm available.
-dnl 2010/5/5 - SLU
-case "`uname`" in
-  CYGWIN*)
-    AC_DEFINE([CYGWIN_ULLONG_TO_LDOUBLE_ROUND_PROBLEM], [1], [Define a macro for Cygwin (on XP only) where the compiler has rounding problem converting from unsigned long long to long double])
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Windows won't create DLLs without the following macro.
-dnl
-AC_LIBTOOL_WIN32_DLL
-
-dnl ----------------------------------------------------------------------
-dnl Create libtool.  If shared/static libraries are going to be enabled
-dnl or disabled, it should happen before these macros.
-LT_PREREQ([2.2])
-LT_INIT([dlopen])
-
-dnl ----------------------------------------------------------------------
-dnl Check if we should install only statically linked executables.
-dnl   This check needs to occur after libtool is initialized because
-dnl   we check a libtool cache value and may issue a warning based 
-dnl   on its result.
-AC_MSG_CHECKING([if we should install only statically linked executables])
-AC_ARG_ENABLE([static_exec],
-              [AC_HELP_STRING([--enable-static-exec],
-                              [Install only statically linked executables
-                               [default=no]])],
-              [STATIC_EXEC=$enableval])
-
-if test "X$STATIC_EXEC" = "Xyes"; then
-  echo "yes"
-  dnl Issue a warning if -static flag is not supported.
-  if test "X$lt_cv_prog_compiler_static_works" = "Xno"; then
-      echo "    warning: -static flag not supported on this system; executable won't statically link shared system libraries."
-  fi
-  LT_STATIC_EXEC="-all-static"
-else
-  echo "no"
-  LT_STATIC_EXEC=""
-fi
-
-AC_SUBST([LT_STATIC_EXEC])
-
-dnl Fix up the INSTALL macro if it's a relative path. We want the
-dnl full-path to the binary instead.
-case "$INSTALL" in
-  *install-sh*)
-    INSTALL='\${top_srcdir}/bin/install-sh -c'
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Some users have reported problems with libtool's use of '-Wl,-rpath' to
-dnl link shared libraries in nondefulat directories. Allow users to
-dnl disable embedding the rpath information in the executables and to
-dnl instead solely rely on the information in LD_LIBRARY_PATH.
-AC_MSG_CHECKING([if -Wl,-rpath should be used to link shared libs in nondefault directories])
-AC_ARG_ENABLE([sharedlib-rpath],
-              [AC_HELP_STRING([--disable-sharedlib-rpath],
-               [Disable use of the '=Wl,-rpath' linker option])],
-              [RPATH=$enableval])
-
-case "X-$RPATH" in
-  X-no)
-    AC_MSG_RESULT([no])
-    runpath_var=
-    hardcode_libdir_flag_spec=
-    hardcode_libdir_flag_spec_ld=
-    ;;
-  X-|X-yes)
-    AC_MSG_RESULT([yes])
-    ;;
-  *)
-    AC_MSG_RESULT([error])
-    AC_MSG_ERROR([\'$enableval\' is not a valid rpath type])
-    ;;
-esac
-
-AC_MSG_CHECKING([make])
-
-dnl ----------------------------------------------------------------------
-dnl Sometimes makes think the `.PATH:' appearing before the first rule
-dnl with an action should override the `all' default target. So we have
-dnl to decide what the proper syntax is.
-dnl
-AC_MSG_CHECKING([how make searches directories])
-while true; do #for break
-  # The most common method is `VPATH=DIR1 DIR2 ...'
-  cat >maketest <<EOF
-VPATH=$srcdir/config $srcdir/src $srcdir/bin
-.c.o:
-	cp $< H5.o
-
-foo: H5.o
-	rm -f H5.o
-	@echo works
-EOF
-
-  if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
-    SEARCH_RULE='VPATH='
-    SEARCH_SEP=' '
-    AC_MSG_RESULT([VPATH=DIR1 DIR2 ...])
-    break
-  fi
-
-  dnl The second most common method is like above except with the
-  dnl directories separated by colons.
-  cat >maketest <<EOF
-VPATH=$srcdir/config:$srcdir/src:$srcdir/bin
-.c.o:
-	cp $< H5.o
-
-foo: H5.o
-	rm -f H5.o
-	@echo works
-EOF
-
-  if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
-    SEARCH_RULE='VPATH='
-    SEARCH_SEP=':'
-    AC_MSG_RESULT([VPATH=DIR1:DIR2:...])
-    break
-  fi
-
-  dnl pmake uses the construct `.PATH: DIR1 DIR2
-  cat >maketest <<EOF
-.PATH: $srcdir/config $srcdir/src $srcdir/bin
-.c.o:
-	cp $< H5.o
-
-foo: H5.o
-	rm -f H5.o
-	@echo works
-EOF
-
-  if (MAKE= ${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
-    SEARCH_RULE='.PATH: '
-    SEARCH_SEP=' '
-    AC_MSG_RESULT([.PATH: DIR1 DIR2 ...])
-    break
-  fi
-
-  dnl No way for make to search directories
-  SEARCH_RULE='## SEARCH DISABLED: '
-  SEARCH_SEP=' '
-  AC_MSG_RESULT([it doesn't])
-  if test ! -f configure; then
-    AC_MSG_ERROR([${MAKE-make} requires the build and source directories to be the same])
-  fi
-  break
-done
-rm maketest
-
-dnl ----------------------------------------------------------------------
-dnl pmake will throw an error if variables are undefined in a Makefile.
-dnl These errors can be changed to warnings using the -V flag.
-dnl
-AC_SUBST(AM_MAKEFLAGS) AM_MAKEFLAGS=""
-
-dnl Don't run test if MAKE is defined but is the empty string
-if test -n "${MAKE-make}"; then 
-
-  AC_MSG_CHECKING([whether make will build with undefined variables])
-
-  cat >maketest <<EOF
-foo: \$(UNDEFINED) \$(UNDEFINED2)
-	@echo \$(UNDEFINED3) works
-EOF
-
-  if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([no, setting -V flag])
-    AM_MAKEFLAGS="\-V"
-  fi
-
-  rm maketest
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Production flags?  Save the value in $CONFIG_MODE so we have it for
-dnl the record.
-dnl
-AC_MSG_CHECKING(for production mode)
-AC_ARG_ENABLE(production,
-              [AC_HELP_STRING([--enable-production],
-                              [Determines how to run the compiler.])])
-
-case "X-$enable_production" in
-  X-|X-yes)
-    enable_production="yes"
-    AC_MSG_RESULT([production])
-    CONFIG_MODE=production
-    H5_CFLAGS="$H5_CFLAGS $PROD_CFLAGS"
-    H5_CPPFLAGS="$H5_CPPFLAGS $PROD_CPPFLAGS"
-    H5_CXXFLAGS="$H5_CXXFLAGS $PROD_CXXFLAGS"
-    H5_FCFLAGS="$H5_FCFLAGS $PROD_FCFLAGS"
-    ;;
-  X-no)
-    enable_production="no"
-    AC_MSG_RESULT([development])
-    CONFIG_MODE=development
-    H5_CFLAGS="$H5_CFLAGS $DEBUG_CFLAGS"
-    H5_CPPFLAGS="$H5_CPPFLAGS $DEBUG_CPPFLAGS"
-    H5_CXXFLAGS="$H5_CXXFLAGS $DEBUG_CXXFLAGS"
-    H5_FCFLAGS="$H5_FCFLAGS $DEBUG_FCFLAGS"
-    ;;
-  X-pg|X-profile)
-    enable_production="profile"
-    AC_MSG_RESULT([profile])
-    CONFIG_MODE=profile
-    H5_CFLAGS="$H5_CFLAGS $PROFILE_CFLAGS"
-    H5_CPPFLAGS="$H5_CPPFLAGS $PROFILE_CPPFLAGS"
-    H5_CXXFLAGS="$H5_CXXFLAGS $PROFILE_CXXFLAGS"
-    H5_FCFLAGS="$H5_FCFLAGS $PROFILE_FCFLAGS"
-    ;;
-  *)
-    enable_production="user-defined"
-    AC_MSG_RESULT([user-defined])
-    CONFIG_MODE="$enableval"
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Check for system libraries.
-dnl
-AC_CHECK_LIB([m], [ceil])
-
-if test "`uname`" = "SunOS" -o "`uname -sr`" = "HP-UX B.11.00"; then
-  dnl ...for Solaris
-  AC_CHECK_LIB([socket], [socket])
-  AC_CHECK_LIB([nsl], [xdr_int])
-fi
-
-dnl AC_CHECK_LIB([coug], [main])		dnl ...for ASCI/Red
-
-dnl ----------------------------------------------------------------------
-dnl Check for system header files.
-dnl
-AC_HEADER_STDC
-AC_HEADER_TIME
-
-dnl ----------------------------------------------------------------------
-dnl Check for these two functions before the time headers are checked
-dnl for, otherwise they are not detected correctly on Solaris (the
-dnl configure test will fail due to multiply-defined symbols).
-dnl
-AC_CHECK_FUNCS(difftime)
-AC_CHECK_FUNCS(gettimeofday, [have_gettime="yes"], [have_gettime="no"])
-AC_SEARCH_LIBS([clock_gettime], [rt posix4])
-AC_CHECK_FUNCS([clock_gettime],[have_clock_gettime="yes"],[have_clock_gettime="no"])
-
-dnl Unix
-AC_CHECK_HEADERS([sys/resource.h sys/time.h unistd.h sys/ioctl.h sys/stat.h])
-AC_CHECK_HEADERS([sys/socket.h sys/types.h])
-AC_CHECK_HEADERS([stddef.h setjmp.h features.h])
-AC_CHECK_HEADERS([stdint.h], [C9x=yes])
-
-dnl Darwin
-AC_CHECK_HEADERS([mach/mach_time.h])
-
-dnl Windows
-case "`uname`" in
-  CYGWIN*)
-    AC_CHECK_HEADERS([io.h sys/timeb.h])
-    ;;
-  *)
-    AC_CHECK_HEADERS([io.h winsock.h sys/timeb.h])
-    ;;
-esac
-
-case "$host" in
-  alpha*-dec*-osf*)
-    dnl The <sys/sysinfo.h> and <sys/proc.h> are needed on the DEC
-    dnl Alpha to turn off UAC fixing. We do *not* attempt to
-    dnl locate these files on other systems because there are too
-    dnl many problems with including them.
-    AC_CHECK_HEADERS([sys/sysinfo.h sys/proc.h])
-    ;;
-  mips*-sgi*-irix*)
-    dnl The <sys/fpu.h> is needed on the SGI machines to turn off
-    dnl denormalized floating-point values going to zero.  We do *not*
-    dnl attempt to dnl locate these files on other systems because there
-    dnl may be problems with including them.
-    AC_CHECK_HEADERS([sys/fpu.h])
-    AC_CHECK_FUNCS([get_fpc_csr])
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Some platforms require that all symbols are resolved when a library
-dnl is linked. We can use the -no-undefined flag to tell libtool that
-dnl it will be able to build shared libraries on these architectures,
-dnl as it will not do so by default.
-dnl
-if test "X${enable_shared}" = "Xyes"; then
-  AC_MSG_CHECKING([if libtool needs -no-undefined flag to build shared libraries])
-  case "`uname`" in
-    CYGWIN*|MINGW*|AIX*)
-      dnl Add in the -no-undefined flag to LDFLAGS for libtool.
-      AC_MSG_RESULT([yes])
-      H5_LDFLAGS="$H5_LDFLAGS -no-undefined"
-      ;;
-    *)
-      dnl Don't add in anything.
-      AC_MSG_RESULT([no])
-      ;;
-  esac
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Test for Largefile support.
-dnl
-AC_MSG_CHECKING([if configure should try to set up large file support])
-
-AC_ARG_ENABLE([largefile],
-           [AC_HELP_STRING([--disable-largefile],
-                           [omit support for large files])])
-
-dnl The linux-lfs option is deprecated, but if it is used to disable
-dnl largefile support on linux and the largefile option is not specified,
-dnl then go ahead and disable large-file support.
-case "$host_cpu-$host_vendor-$host_os" in
-  *linux*)
-    AC_ARG_ENABLE([linux-lfs],
-                  [AC_HELP_STRING([--disable-linux-lfs],
-                                  [Disable support for large (64-bit)
-                                   files on Linux. This option is 
-                                   deprecated in favor of
-                                   --disable-largefile.])])
-
-    if test "$enable_linux_lfs" = no; then
-      if test "$enable_largefile" != yes; then
-        enable_largefile=no
-      fi
-    fi
-    ;;
-esac
-
-dnl If largefile support is enabled, then set up appropriate compiler options.
-if test "$enable_largefile" != no; then
-  AC_MSG_RESULT(yes)
-
-  dnl Check for needed compiler options. This check is pulled drectly 
-  dnl from autoconf's AC_SYS_LARGEFILE macro, as of Autoconf v2.65.
-  AC_CACHE_CHECK([for special C compiler options needed for large files],
-    ac_cv_sys_largefile_CC,
-    [ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-     # IRIX 6.2 and later do not support large files by default,
-     # so use the C compiler's -n32 option if that helps.
-     AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
-     AC_COMPILE_IFELSE([], [break])
-     CC="$CC -n32"
-     AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
-     break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi])
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  dnl Use the macro _AC_SYS_LARGEFILE_MACRO_VALUE to test defines
-  dnl that might need to be set for largefile support to behave 
-  dnl correctly. This macro is defined in acsite.m4 and overrides
-  dnl the version provided by Autoconf (as of v2.65). The custom
-  dnl macro additionally adds the appropriate defines to AM_CPPFLAGS 
-  dnl so that later configure checks have them visible. 
-
-  dnl Check for _FILE_OFFSET_BITS
-  _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
-    ac_cv_sys_file_offset_bits,
-    [Number of bits in a file offset, on hosts where this is settable.],
-    [_AC_SYS_LARGEFILE_TEST_INCLUDES])
-
-  dnl Check for _LARGE_FILES
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
-      ac_cv_sys_large_files,
-      [Define for large files, on AIX-style hosts.],
-      [_AC_SYS_LARGEFILE_TEST_INCLUDES])
-  fi
-
-  dnl Now actually test to see if we can create large files after we've
-  dnl checked for any needed defines.
-  AC_MSG_CHECKING([if large (64-bit) files are supported on this system.])
-  AC_CACHE_VAL([hdf5_cv_have_lfs],
-    [AC_TRY_RUN([
-      #include <stdio.h>
-      #include <unistd.h>
-      #include <stdlib.h>
-      #include <fcntl.h>
-      #define BIG_FILE (off_t)0x80000000UL 
-      int main(void) {
-        int fd;
-        if ((fd=open("test.conf", O_RDWR|O_TRUNC|O_CREAT, 0666)) < 0) exit(1);
-        if (lseek(fd, BIG_FILE, SEEK_SET)!=BIG_FILE) exit(1);
-        if (5!=write(fd, "hello", (size_t)5)) exit(1);
-        if (lseek(fd, 2*BIG_FILE, SEEK_SET) != 2*BIG_FILE) exit(1);
-        if (5!=write(fd, "hello", (size_t)5)) exit(1);
-        if (unlink("test.conf") < 0) exit(1);
-        exit(0);
-      }
-    ],[hdf5_cv_have_lfs=yes],[hdf5_cv_have_lfs=no],)])
-
-  if test "X${hdf5_cv_have_lfs}" = "Xyes"; then
-    AC_MSG_RESULT([yes])
-    LARGEFILE="yes"
-  fi 
-  if test "X${hdf5_cv_have_lfs}" = "Xno"; then
-    AC_MSG_RESULT([no])
-    LARGEFILE="no"
-  fi 
-
-else
-  LARGEFILE="no"
-  AC_MSG_RESULT(no)
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Add necessary defines for Linux Systems.
-dnl
-case "$host_cpu-$host_vendor-$host_os" in
-  *linux*)
-    dnl If largefile support is enabled, then make available various
-    dnl LFS-related routines using the following _LARGEFILE*_SOURCE macros.
-    if test "X$LARGEFILE" != "Xno"; then
-        AM_CPPFLAGS="-D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE $AM_CPPFLAGS"
-    fi
-
-    dnl Add POSIX support on Linux systems, so <features.h> defines
-    dnl __USE_POSIX, which is required to get the prototype for fdopen
-    dnl defined correctly in <stdio.h>. 
-    dnl This flag was removed from h5cc as of 2009-10-17 when it was found
-    dnl that the flag broke compiling netCDF-4 code with h5cc, but kept in 
-    dnl H5_CPPFLAGS because fdopen and HDfdopen fail without it. HDfdopen
-    dnl is used only by H5_debug_mask which is used only when debugging in
-    dnl H5_init_library (all in H5.c).  When the flag was removed this was
-    dnl the only compile failure noted.
-    dnl This was originally defined as _POSIX_SOURCE which was updated to
-    dnl _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
-    dnl functionality so clock_gettime and CLOCK_MONOTONIC are defined
-    dnl correctly.
-    dnl POSIX feature information can be found in the gcc manual at:
-    dnl http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
-    H5_CPPFLAGS="-D_POSIX_C_SOURCE=199506L $H5_CPPFLAGS"
-
-    dnl Also add BSD support on Linux systems, so <features.h> defines
-    dnl __USE_BSD, which is required to get the prototype for strdup
-    dnl defined correctly in <string.h> and snprintf & vsnprintf defined
-    dnl correctly in <stdio.h>
-    dnl Linking to the bsd-compat library is required as per the gcc manual:
-    dnl http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
-    dnl though we don't do this due to the big test failing on older CentOS
-    dnl systems when compiled with gcc 4.6.2.
-    AM_CPPFLAGS="-D_BSD_SOURCE $AM_CPPFLAGS"
-    ;;
-esac
-
-dnl Need to add the AM_ and H5_ into CPFLAGS/CPPFLAGS to make them visible 
-dnl for configure checks.
-dnl Note: Both will be restored by the end of configure.
-CPPFLAGS="$H5_CPPFLAGS $AM_CPPFLAGS $CPPFLAGS"
-CFLAGS="$H5_CFLAGS $AM_CFLAGS $CFLAGS"
-
-AC_TRY_COMPILE([#include <sys/types.h>],
-               [off64_t n = 0;],
-               [AC_CHECK_FUNCS([lseek64 fseeko64 ftello64 ftruncate64])],
-               [AC_MSG_RESULT([skipping test for lseek64(), fseeko64 , ftello64, ftruncate64() because off64_t is not defined])])
-AC_CHECK_FUNCS(fseeko ftello)
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/stat.h>],
-[struct stat64 sb;],
-[AC_CHECK_FUNCS([stat64 fstat64])],
-[AC_MSG_RESULT([skipping test for stat64() and fstat64()])])
-
-dnl ----------------------------------------------------------------------
-dnl Data types and their sizes.
-dnl
-AC_TYPE_OFF_T
-AC_CHECK_TYPE([size_t], [unsigned long])
-AC_CHECK_TYPE([ssize_t], [long])
-AC_CHECK_TYPE([ptrdiff_t], [long])
-AC_C_BIGENDIAN
-AC_CHECK_SIZEOF([char], [1])
-AC_CHECK_SIZEOF([short], [2])
-AC_CHECK_SIZEOF([int], [4])
-AC_CHECK_SIZEOF([unsigned], [4])
-AC_CHECK_SIZEOF([long], [4])
-AC_CHECK_SIZEOF([long long], [8])
-AC_CHECK_SIZEOF([__int64], [8])
-AC_CHECK_SIZEOF([float], [4])
-AC_CHECK_SIZEOF([double], [8])
-AC_CHECK_SIZEOF([long double], [8])
-
-dnl Checkpoint the cache
-AC_CACHE_SAVE
-
-dnl Posix.1g types (C9x)
-cat >>confdefs.h <<\EOF
-#include <sys/types.h>
-EOF
-
-if test "X$C9x" = "Xyes"; then
-  cat >>confdefs.h <<\EOF
-#include <stdint.h>
-EOF
-fi
-
-AC_CHECK_SIZEOF(        int8_t, [1])
-AC_CHECK_SIZEOF(       uint8_t, [1])
-AC_CHECK_SIZEOF(  int_least8_t, [1])
-AC_CHECK_SIZEOF( uint_least8_t, [1])
-AC_CHECK_SIZEOF(   int_fast8_t, [1])
-AC_CHECK_SIZEOF(  uint_fast8_t, [1])
-
-AC_CHECK_SIZEOF(       int16_t, [2])
-AC_CHECK_SIZEOF(      uint16_t, [2])
-AC_CHECK_SIZEOF( int_least16_t, [2])
-AC_CHECK_SIZEOF(uint_least16_t, [2])
-AC_CHECK_SIZEOF(  int_fast16_t, [2])
-AC_CHECK_SIZEOF( uint_fast16_t, [2])
-
-AC_CHECK_SIZEOF(       int32_t, [4])
-AC_CHECK_SIZEOF(      uint32_t, [4])
-AC_CHECK_SIZEOF( int_least32_t, [4])
-AC_CHECK_SIZEOF(uint_least32_t, [4])
-AC_CHECK_SIZEOF(  int_fast32_t, [4])
-AC_CHECK_SIZEOF( uint_fast32_t, [4])
-
-AC_CHECK_SIZEOF(       int64_t, [8])
-AC_CHECK_SIZEOF(      uint64_t, [8])
-AC_CHECK_SIZEOF( int_least64_t, [8])
-AC_CHECK_SIZEOF(uint_least64_t, [8])
-AC_CHECK_SIZEOF(  int_fast64_t, [8])
-AC_CHECK_SIZEOF( uint_fast64_t, [8])
-
-AC_CHECK_SIZEOF([size_t], [4])
-AC_CHECK_SIZEOF([ssize_t], [4])
-AC_CHECK_SIZEOF([ptrdiff_t], [4])
-
-cat >>confdefs.h <<\EOF
-#include <sys/types.h> /*for off_t definition*/
-EOF
-AC_CHECK_SIZEOF([off_t], [4])
-AC_CHECK_SIZEOF([off64_t], [8])
-
-dnl Checkpoint the cache
-AC_CACHE_SAVE
-
-dnl ----------------------------------------------------------------------
-dnl Check if the dev_t type is a scalar type (must come after the check for
-dnl sys/types.h)
-AC_MSG_CHECKING([if dev_t is scalar])
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-  ],
-  [dev_t d1, d2; if(d1==d2) return 0;],
-  AC_DEFINE([DEV_T_IS_SCALAR], [1],
-            [Define if `dev_t' is a scalar])
-  AC_MSG_RESULT(yes),
-  AC_MSG_RESULT(no)
-)
-
-dnl ----------------------------------------------------------------------
-dnl Fake --with-xxx option to allow us to create a help message for the
-dnl following --with-xxx options which can take either a =DIR or =INC,LIB
-dnl specifier.
-dnl
-AC_ARG_WITH([fnord],
-  [
- For the following --with-xxx options, you can specify where the header
- files and libraries are in two different ways:
-
-    --with-xxx=INC,LIB - Specify individually the include directory and
-                         library directory separated by a comma
-    --with-xxx=DIR     - Specify only the directory which contains the
-                         include/ and lib/ subdirectories
-  ])
-
-dnl ----------------------------------------------------------------------
-dnl Is the dmalloc present? It has a header file `dmalloc.h' and a library
-dnl `-ldmalloc' and their locations might be specified with the `--with-dmalloc'
-dnl command-line switch. The value is an include path and/or a library path.
-dnl If the library path is specified then it must be preceded by a comma.
-dnl
-AC_ARG_WITH([dmalloc],
-            [AC_HELP_STRING([--with-dmalloc=DIR],
-                            [Use dmalloc memory debugging aid [default=no]])],,
-            withval=no)
-
-case $withval in
-  yes)
-    HAVE_DMALLOC="yes"
-    AC_CHECK_HEADERS(dmalloc.h)
-    AC_CHECK_LIB(dmalloc, dmalloc_shutdown,, unset HAVE_DMALLOC)
-
-    if test -z "$HAVE_DMALLOC" -a -n "$HDF5_CONFIG_ABORT"; then
-      AC_MSG_ERROR(couldn't find dmalloc library)
-    fi
-    ;;
-  no)
-    HAVE_DMALLOC="no"
-    AC_MSG_CHECKING(for dmalloc library)
-    AC_MSG_RESULT(suppressed)
-    ;;
-  *)
-    HAVE_DMALLOC="yes"
-    case "$withval" in
-      *,*)
-        dmalloc_inc="`echo $withval |cut -f1 -d,`"
-        dmalloc_lib="`echo $withval |cut -f2 -d, -s`"
-        ;;
-      *)
-        if test -n "$withval"; then
-          dmalloc_inc="$withval/include"
-          dmalloc_lib="$withval/lib"
-        fi
-        ;;
-    esac
-
-    dnl Trying to include -I/usr/include and -L/usr/lib is redundant and
-    dnl can mess some compilers up.
-    if test "X$dmalloc_inc" = "X/usr/include"; then
-      dmalloc_inc=""
-    fi
-    if test "X$dmalloc_lib" = "X/usr/lib"; then
-      dmalloc_lib=""
-    fi
-
-    saved_CPPFLAGS="$CPPFLAGS"
-    saved_AM_CPPFLAGS="$AM_CPPFLAGS"
-    saved_LDFLAGS="$LDFLAGS"
-    saved_AM_LDFLAGS="$AM_LDFLAGS"
-
-    if test -n "$dmalloc_inc"; then
-      CPPFLAGS="$CPPFLAGS -I$dmalloc_inc"
-      AM_CPPFLAGS="$AM_CPPFLAGS -I$dmalloc_inc"
-    fi
-
-    AC_CHECK_HEADERS(dmalloc.h,,CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS")
-
-    if test -n "$dmalloc_lib"; then
-      LDFLAGS="$LDFLAGS -L$dmalloc_lib"
-      AM_LDFLAGS="$AM_LDFLAGS -L$dmalloc_lib"
-    fi
-
-    AC_CHECK_LIB(dmalloc, dmalloc_shutdown,, LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_DMALLOC)
-
-    if test -z "$HAVE_DMALLOC" -a -n "$HDF5_CONFIG_ABORT"; then
-      AC_MSG_ERROR(couldn't find dmalloc library)
-    fi
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Is the GNU zlib present? It has a header file `zlib.h' and a library
-dnl `-lz' and their locations might be specified with the `--with-zlib'
-dnl command-line switch. The value is an include path and/or a library path.
-dnl If the library path is specified then it must be preceded by a comma.
-dnl
-AC_SUBST(USE_FILTER_DEFLATE) USE_FILTER_DEFLATE="no"
-AC_ARG_WITH([zlib],
-            [AC_HELP_STRING([--with-zlib=DIR],
-                            [Use zlib library for external deflate I/O
-                             filter [default=yes]])],,
-            withval=yes)
-
-case $withval in
-  yes)
-    HAVE_ZLIB="yes"
-    AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H="yes"])
-    AC_CHECK_LIB([z], [compress2],, [unset HAVE_ZLIB])
-    AC_CHECK_FUNC([compress2], [HAVE_COMPRESS2="yes"])
-
-    if test -z "$HAVE_ZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
-      AC_MSG_ERROR([couldn't find zlib library])
-    fi
-    ;;
-  no)
-    HAVE_ZLIB="no"
-    AC_MSG_CHECKING([for GNU zlib])
-    AC_MSG_RESULT([suppressed])
-    ;;
-  *)
-    HAVE_ZLIB="yes"
-    case "$withval" in
-      *,*)
-        zlib_inc="`echo $withval |cut -f1 -d,`"
-        zlib_lib="`echo $withval |cut -f2 -d, -s`"
-        ;;
-      *)
-        if test -n "$withval"; then
-          zlib_inc="$withval/include"
-          zlib_lib="$withval/lib"
-        fi
-        ;;
-    esac
-
-    dnl Trying to include -I/usr/include and -L/usr/lib is redundant and
-    dnl can mess some compilers up.
-    if test "X$zlib_inc" = "X/usr/include"; then
-      zlib_inc=""
-    fi
-    if test "X$zlib_lib" = "X/usr/lib"; then
-      zlib_lib=""
-    fi
-
-    saved_CPPFLAGS="$CPPFLAGS"
-    saved_AM_CPPFLAGS="$AM_CPPFLAGS"
-    saved_LDFLAGS="$LDFLAGS"
-    saved_AM_LDFLAGS="$AM_LDFLAGS"
-
-    if test -n "$zlib_inc"; then
-      CPPFLAGS="$CPPFLAGS -I$zlib_inc"
-      AM_CPPFLAGS="$AM_CPPFLAGS -I$zlib_inc"
-    fi
-
-    AC_CHECK_HEADERS([zlib.h],
-                     [HAVE_ZLIB_H="yes"],
-                     [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"])
-
-    if test -n "$zlib_lib"; then
-      LDFLAGS="$LDFLAGS -L$zlib_lib"
-      AM_LDFLAGS="$AM_LDFLAGS -L$zlib_lib"
-    fi
-
-    AC_CHECK_LIB([z], [compress2],,
-                 [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_ZLIB])
-    AC_CHECK_FUNC([compress2], [HAVE_COMPRESS2="yes"])
-
-    if test -z "$HAVE_ZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
-      AC_MSG_ERROR([couldn't find zlib library])
-    fi
-    ;;
-esac
-
-if test "x$HAVE_ZLIB" = "xyes" -a "x$HAVE_ZLIB_H" = "xyes" -a "x$HAVE_COMPRESS2" = "xyes"; then
-    AC_DEFINE([HAVE_FILTER_DEFLATE], [1], [Define if support for deflate (zlib) filter is enabled])
-    USE_FILTER_DEFLATE="yes"
-
-    dnl Add "deflate" to external filter list
-    if test "X$EXTERNAL_FILTERS" != "X"; then
-        EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
-    fi
-    EXTERNAL_FILTERS="${EXTERNAL_FILTERS}deflate(zlib)"
-fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Is the szlib present? It has a header file `szlib.h' and a library
-dnl `-lsz' and their locations might be specified with the `--with-szlib'
-dnl command-line switch. The value is an include path and/or a library path.
-dnl If the library path is specified then it must be preceded by a comma.
-dnl
-AC_SUBST(USE_FILTER_SZIP) USE_FILTER_SZIP="no"
-AC_ARG_WITH([szlib],
-            [AC_HELP_STRING([--with-szlib=DIR],
-                            [Use szlib library for external szlib I/O
-                             filter [default=no]])],,
-            withval=no)
-
-case $withval in
-  yes)
-    HAVE_SZLIB="yes"
-    AC_CHECK_HEADERS([szlib.h], [HAVE_SZLIB_H="yes"])
-    AC_CHECK_LIB([sz], [SZ_BufftoBuffCompress],, [unset HAVE_SZLIB])
-
-    if test -z "$HAVE_SZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
-      AC_MSG_ERROR([couldn't find szlib library])
-    fi
-    ;;
-  no)
-    HAVE_SZLIB="no"
-    AC_MSG_CHECKING([for szlib])
-    AC_MSG_RESULT([suppressed])
-    ;;
-  *)
-    HAVE_SZLIB="yes"
-    case "$withval" in
-      *,*)
-        szlib_inc="`echo $withval |cut -f1 -d,`"
-        szlib_lib="`echo $withval |cut -f2 -d, -s`"
-        ;;
-      *)
-        if test -n "$withval"; then
-          szlib_inc="$withval/include"
-          szlib_lib="$withval/lib"
-        fi
-        ;;
-    esac
-    
-    dnl Trying to include -I/usr/include and -L/usr/lib is redundant and
-    dnl can mess some compilers up.
-    if test "X$szlib_inc" = "X/usr/include"; then
-      szlib_inc=""
-    fi 
-    if test "X$szlib_lib" = "X/usr/lib"; then
-      szlib_lib=""
-    fi
-    
-    saved_CPPFLAGS="$CPPFLAGS"
-    saved_AM_CPPFLAGS="$AM_CPPFLAGS"
-    saved_LDFLAGS="$LDFLAGS"
-    saved_AM_LDFLAGS="$AM_LDFLAGS"
-    
-    if test -n "$szlib_inc"; then
-      CPPFLAGS="$CPPFLAGS -I$szlib_inc"
-      AM_CPPFLAGS="$AM_CPPFLAGS -I$szlib_inc"
-    fi
-    
-    AC_CHECK_HEADERS([szlib.h],
-                     [HAVE_SZLIB_H="yes"],
-                     [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"])
-
-    if test -n "$szlib_lib"; then
-      LDFLAGS="$LDFLAGS -L$szlib_lib"
-      AM_LDFLAGS="$AM_LDFLAGS -L$szlib_lib"
-    fi
-    
-    AC_CHECK_LIB([sz], [SZ_BufftoBuffCompress],,
-                 [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_SZLIB])
-
-    if test -z "$HAVE_SZLIB" -a -n "$HDF5_CONFIG_ABORT"; then
-      AC_MSG_ERROR([couldn't find szlib library])
-    fi
-    ;;
-esac
-
-if test "x$HAVE_SZLIB" = "xyes" -a "x$HAVE_SZLIB_H" = "xyes"; then
-    dnl SZLIB library is available.  Check if it can encode
-    AC_MSG_CHECKING([for szlib encoder])
-    
-    dnl Set LD_LIBRARY_PATH so encoder test can find the library and run.
-    dnl Also add LL_PATH substitution to Makefiles so they can use the 
-    dnl path as well, for testing examples.
-    if test -z "$LD_LIBRARY_PATH"; then
-    export LD_LIBRARY_PATH="$szlib_lib"
-    else
-    export LD_LIBRARY_PATH="$szlib_lib:$LD_LIBRARY_PATH"
-    fi
-
-    AC_SUBST([LL_PATH]) LL_PATH="$LD_LIBRARY_PATH"    
-
-    AC_CACHE_VAL([hdf5_cv_szlib_can_encode],
-        [AC_TRY_RUN([
-        #include <szlib.h>
-        
-        int main(void)
-        {       
-                /* SZ_encoder_enabled returns 1 if encoder is present */
-            if(SZ_encoder_enabled() == 1)
-                exit(0);
-            else
-                exit(1);
-        }
-        ], [hdf5_cv_szlib_can_encode=yes], [hdf5_cv_szlib_can_encode=no],)])
-    
-    AC_DEFINE(HAVE_FILTER_SZIP, 1, 
-            [Define if support for szip filter is enabled])
-    USE_FILTER_SZIP="yes"
-
-    if test ${hdf5_cv_szlib_can_encode} = "yes"; then
-        AC_MSG_RESULT([yes])
-    fi 
-    if test ${hdf5_cv_szlib_can_encode} = "no"; then
-        AC_MSG_RESULT([no])
-    fi 
-
-    dnl Add "szip" to external filter list
-    if test ${hdf5_cv_szlib_can_encode} = "yes"; then
-        if test "X$EXTERNAL_FILTERS" != "X"; then
-            EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
-        fi
-        EXTERNAL_FILTERS="${EXTERNAL_FILTERS}szip(encoder)"
-    fi 
-    if test ${hdf5_cv_szlib_can_encode} = "no"; then
-        if test "X$EXTERNAL_FILTERS" != "X"; then
-            EXTERNAL_FILTERS="${EXTERNAL_FILTERS},"
-        fi
-        EXTERNAL_FILTERS="${EXTERNAL_FILTERS}szip(no encoder)"
-    fi
-
-fi
-
-AM_CONDITIONAL([BUILD_SHARED_SZIP_CONDITIONAL], [test "X$USE_FILTER_SZIP" = "Xyes" && test "X$LL_PATH" != "X"])
-
-dnl Checkpoint the cache
-AC_CACHE_SAVE
-
-dnl ----------------------------------------------------------------------
-dnl Is the Pthreads library present?  It has a header file `pthread.h' and
-dnl a library `-lpthread' and their locations might be specified with the
-dnl `--with-pthread' command-line switch.  The value is an include path
-dnl and/or a library path.  If the library path is specified then it must
-dnl be preceded by a comma.
-dnl
-AC_SUBST([PTHREAD]) PTHREAD=yes
-AC_ARG_WITH([pthread],
-            [AC_HELP_STRING([--with-pthread=DIR],
-                            [Use the Pthreads library [default=no]])],,
-            withval=no)
-
-case "$withval" in
-  yes)
-    AC_CHECK_HEADERS([pthread.h])
-    AC_CHECK_LIB([pthread], [pthread_self],, [unset PTHREAD])
-    ;;
-  no)
-    AC_MSG_CHECKING([for pthread])
-    AC_MSG_RESULT([suppressed])
-    unset PTHREAD
-    ;;
-  *)
-    case "$withval" in
-      *,*)
-        pthread_inc="`echo $withval | cut -f1 -d,`"
-        pthread_lib="`echo $withval | cut -f2 -d, -s`"
-        ;;
-      *)
-        if test -n "$withval"; then
-          pthread_inc="$withval/include"
-          pthread_lib="$withval/lib"
-        fi
-        ;;
-    esac
-
-    dnl Trying to include -I/usr/include and -L/usr/lib is redundant and
-    dnl can mess some compilers up.
-    if test "X$pthread_inc" = "X/usr/include"; then
-      pthread_inc=""
-    fi
-    if test "X$pthread_lib" = "X/usr/lib"; then
-      pthread_lib=""
-    fi
-
-    if test -n "$pthread_inc"; then
-      saved_CPPFLAGS="$CPPFLAGS"
-      saved_AM_CPPFLAGS="$AM_CPPFLAGS"
-      CPPFLAGS="$CPPFLAGS -I$pthread_inc"
-      AM_CPPFLAGS="$AM_CPPFLAGS -I$pthread_inc"
-      AC_CHECK_HEADERS([pthread.h],, [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"; unset PTHREAD])
-    else
-      AC_CHECK_HEADERS([pthread.h],, [unset PTHREAD])
-    fi
-
-    if test -n "$pthread_lib"; then
-      saved_LDFLAGS="$LDFLAGS"
-      saved_AM_LDFLAGS="$AM_LDFLAGS"
-      LDFLAGS="$LDFLAGS -L$pthread_lib"
-      AM_LDFLAGS="$AM_LDFLAGS -L$pthread_lib"
-      AC_CHECK_LIB([pthread], [pthread_self],,
-                   [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset PTHREAD])
-
-    else
-      AC_CHECK_LIB([pthread], [pthread_self],, [unset PTHREAD])
-    fi
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Enable thread-safe version of library.  It requires Pthreads support.
-dnl
-AC_MSG_CHECKING([for thread safe support])
-AC_ARG_ENABLE([threadsafe],
-              [AC_HELP_STRING([--enable-threadsafe],
-                              [Enable thread safe capability])],
-              THREADSAFE=$enableval)
-
-dnl The --enable-threadsafe flag is not compatible with --enable-cxx.
-dnl If the user tried to specify both flags, throw an error, unless
-dnl they also provided the --enable-unsupported flag.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  if test "X${HDF_CXX}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then
-    AC_MSG_ERROR([--enable-cxx and --enable-threadsafe flags are incompatible. Use --enable-unsupported to override this error.])
-  fi
-fi
-
-dnl --enable-threadsafe is also incompatible with --enable-fortran, unless
-dnl --enable-unsupported has been specified on the configure line.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  if test "X${HDF_FORTRAN}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then
-    AC_MSG_ERROR([--enable-fortran and --enable-threadsafe flags are incompatible. Use --enable-unsupported to override this error.])
-  fi
-fi
-
-case "X-$THREADSAFE" in
-  X-|X-no)
-    AC_MSG_RESULT([no])
-    ;;
-  X-yes)
-    dnl Check that we can link a simple Pthread program.
-    AC_TRY_LINK(, [pthread_self()],
-                [AC_MSG_RESULT([yes]); THREADSAFE=yes],
-                [AC_MSG_ERROR([needed pthread library not available])])
-    ;;
-  *)
-    AC_MSG_RESULT([error])
-    AC_MSG_ERROR([\'$enableval\' is not a valid threadsafe type])
-    ;;
-esac
-
-if test "X$THREADSAFE" = "Xyes"; then
-  AC_DEFINE([HAVE_THREADSAFE], [1], [Define if we have thread safe support])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Check for MONOTONIC_TIMER support (used in clock_gettime).  This has
-dnl to be done after any POSIX/BSD defines to ensure that the test gets
-dnl the correct POSIX level on linux.
-AC_CHECK_DECL(CLOCK_MONOTONIC,[have_clock_monotonic="yes"],[have_clock_monotonic="no"],[[#include <time.h>]])
-
-dnl ----------------------------------------------------------------------
-dnl How does one figure out the local time zone?  Anyone know of a
-dnl Posix way to do this?
-dnl
-
-dnl First check if `struct tm' has a `tm_gmtoff' member.
-AC_MSG_CHECKING([for tm_gmtoff in struct tm])
-AC_TRY_COMPILE([
-#include <sys/time.h>
-#include <time.h>], [struct tm tm; tm.tm_gmtoff=0;],
-AC_DEFINE([HAVE_TM_GMTOFF], [1],
-          [Define if `tm_gmtoff' is a member of `struct tm'])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-dnl check if `struct tm' has a `__tm_gmtoff' member.
-AC_MSG_CHECKING([for __tm_gmtoff in struct tm])
-AC_TRY_COMPILE([
-#include <sys/time.h>
-#include <time.h>], [struct tm tm; tm.__tm_gmtoff=0;],
-AC_DEFINE([HAVE___TM_GMTOFF], [1],
-          [Define if `__tm_gmtoff' is a member of `struct tm'])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-dnl Check whether the global variable `timezone' is defined.
-AC_MSG_CHECKING([for global timezone variable])
-
-
-case "`uname`" in
-  CYGWIN*)
-    AC_MSG_RESULT([disabled in CYGWIN])
-    ;;
-  *)
-    AC_TRY_LINK([
-    #include <sys/time.h>
-    #include <time.h>], [timezone=0;],
-    AC_DEFINE([HAVE_TIMEZONE], [1],
-              [Define if `timezone' is a global variable])
-    AC_MSG_RESULT([yes]),
-    AC_MSG_RESULT([no]))
-    ;;
-esac
-
-dnl Check whether `struct timezone' is defined.
-AC_STRUCT_TIMEZONE
-AC_MSG_CHECKING([for struct timezone])
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>], [struct timezone tz; tz.tz_minuteswest=0;],
-AC_DEFINE([HAVE_STRUCT_TIMEZONE], [1],
-          [Define if `struct timezone' is defined])
-have_struct_tz="yes"
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-dnl If gettimeofday() is going to be used, make sure it uses the timezone struct
-
-if test "$have_gettime" = "yes" -a "$have_struct_tz" = "yes"; then
-   AC_MSG_CHECKING(whether gettimeofday() gives timezone)
-   AC_CACHE_VAL([hdf5_cv_gettimeofday_tz],
-       [AC_TRY_RUN([
-          #include <time.h>
-          #include <sys/time.h>
-          int main(void)
-          {
-             struct timeval tv;
-             struct timezone tz;
-             tz.tz_minuteswest = 7777;  /* Initialize to an unreasonable number */
-             tz.tz_dsttime = 7;
-             gettimeofday(&tv, &tz);
-                /* Check whether the function returned any value at all */
-             if(tz.tz_minuteswest == 7777 && tz.tz_dsttime == 7)
-                exit(1);
-             else exit (0);
-          }], [hdf5_cv_gettimeofday_tz=yes], [hdf5_cv_gettimeofday_tz=no],)])
-
-   if test ${hdf5_cv_gettimeofday_tz} = "yes"; then
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([GETTIMEOFDAY_GIVES_TZ], [1],
-                [Define if gettimeofday() populates the tz pointer passed in])
-   else
-      AC_MSG_RESULT([no])
-   fi
-fi 
-
-dnl ----------------------------------------------------------------------
-dnl Does the struct stat have the st_blocks field?  This field is not Posix.
-dnl
-AC_MSG_CHECKING([for st_blocks in struct stat])
-AC_TRY_COMPILE([
-#include <sys/stat.h>],[struct stat sb; sb.st_blocks=0;],
-AC_DEFINE([HAVE_STAT_ST_BLOCKS], [1],
-          [Define if `struct stat' has the `st_blocks' field])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-dnl ----------------------------------------------------------------------
-dnl How do we figure out the width of a tty in characters?
-dnl
-AC_CHECK_FUNCS(_getvideoconfig gettextinfo GetConsoleScreenBufferInfo)
-AC_CHECK_FUNCS(_scrsize ioctl)
-
-AC_MSG_CHECKING([for struct videoconfig])
-AC_TRY_COMPILE(,[struct videoconfig w; w.numtextcols=0;],
-AC_DEFINE([HAVE_STRUCT_VIDEOCONFIG], [1],
-          [Define if `struct videoconfig' is defined])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-AC_MSG_CHECKING([for struct text_info])
-AC_TRY_COMPILE(, [struct text_info w; w.screenwidth=0;],
-AC_DEFINE([HAVE_STRUCT_TEXT_INFO], [1],
-          [Define if `struct text_info' is defined])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-AC_MSG_CHECKING([for TIOCGWINSZ])
-AC_TRY_COMPILE([#include <sys/ioctl.h>],[int w=TIOCGWINSZ;],
-AC_DEFINE([HAVE_TIOCGWINSZ], [1],
-          [Define if the ioctl TIOGWINSZ is defined])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-AC_MSG_CHECKING([for TIOCGETD])
-AC_TRY_COMPILE([#include <sys/ioctl.h>],[int w=TIOCGETD;],
-AC_DEFINE([HAVE_TIOCGETD], [1],
-          [Define if the ioctl TIOCGETD is defined])
-AC_MSG_RESULT([yes]),
-AC_MSG_RESULT([no]))
-
-
-dnl ----------------------------------------------------------------------
-dnl Check for functions.
-dnl
-AC_CHECK_FUNCS(alarm BSDgettimeofday fork frexpf frexpl)
-AC_CHECK_FUNCS(gethostname getpwuid getrusage lstat)
-AC_CHECK_FUNCS(rand_r random setsysinfo)
-AC_CHECK_FUNCS(signal longjmp setjmp siglongjmp sigsetjmp sigprocmask)
-AC_CHECK_FUNCS(snprintf srandom strdup symlink system)
-AC_CHECK_FUNCS(tmpfile vasprintf waitpid)
-
-dnl Check for vsnprintf() separately, so we can detect situations where it
-dnl doesn't return the correct size for formatted strings that are too large
-dnl for the buffer provided
-AC_CHECK_FUNCS(vsnprintf,
-
-    dnl Check if vsnprintf() returns correct size for strings that don't fit
-    dnl into the size allowed.  If vsnprintf() works correctly on this platform,
-    dnl it should return a value of 42 for the test below
-    dnl
-    dnl Note that vsnprintf fails in two different ways:
-    dnl         - In IRIX64, calls to vnsprintf() with a formatted string that
-    dnl                 is larger than the buffer size allowed incorrectly
-    dnl                 return the size of the buffer minus one.
-    dnl         - In HP/UX, calls to vsnprintf() with a formatted string that
-    dnl                 is larger than the buffer size allowed incorrectly
-    dnl                 return (-1)
-    AC_MSG_CHECKING([if vsnprintf returns correct value])
-
-    AC_CACHE_VAL([hdf5_cv_vsnprintf_works],
-        AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-int test_vsnprintf(const char *fmt,...)
-{
-    va_list     ap;
-    char *s = malloc(16);
-    int ret;
-
-    va_start(ap, fmt);
-    ret=vsnprintf(s,16,"%s",ap);
-    va_end(ap);
-
-    return(ret!=42 ? 1 : 0);
-}
-
-int main(void)
-{
-    exit(test_vsnprintf("%s","A string that is longer than 16 characters"));
-}
-   ],[hdf5_cv_vsnprintf_works=yes],[hdf5_cv_vsnprintf_works=no],))
-
-       if test ${hdf5_cv_vsnprintf_works} = "yes"; then
-          AC_MSG_RESULT([yes])
-          AC_DEFINE([VSNPRINTF_WORKS], [1],
-                    [Define if vsnprintf() returns the correct value for formatted strings that don't fit into size allowed])
-       else
-          AC_MSG_RESULT([no])
-       fi
-    ,)
-
-dnl ----------------------------------------------------------------------
-dnl Check that a lone colon can be used as an argument
-dnl This is not true on Cray X1, which interprets a lone colon as a
-dnl system command.
-dnl
-AC_CACHE_CHECK([if lone colon can be used as an argument],
-               [hdf5_cv_lone_colon],
-               [
-  echo "int main(int argc, char * argv[]) {return 0;}" > conftest.c
-  $CC $CFLAGS conftest.c > /dev/null 2> /dev/null
-  echo "./a.out :" > conftest.sh
-  chmod 700 conftest.sh
-
-  ./conftest.sh 2> conftest.out
-  rm a.out
-  TEST_OUTPUT=`cat conftest.out`
-
-  if test "X$TEST_OUTPUT" = "X"; then
-    hdf5_cv_lone_colon=yes
-  else
-    hdf5_cv_lone_colon=no
-  fi
-               ])
-
-AC_SUBST(H5_LONE_COLON) H5_LONE_COLON="$hdf5_cv_lone_colon"
-
-dnl ----------------------------------------------------------------------
-dnl Check compiler characteristics
-dnl
-AC_C_CONST
-AC_C_INLINE
-
-AC_MSG_CHECKING([for __attribute__ extension])
-AC_TRY_COMPILE(,[int __attribute__((unused)) x],
-               AC_DEFINE([HAVE_ATTRIBUTE], [1],
-                         [Define if the __attribute__(()) extension is present])
-               AC_MSG_RESULT([yes]),
-               AC_MSG_RESULT([no]))
-AC_MSG_CHECKING([for __func__ extension])
-AC_TRY_COMPILE(,[ const char *fname = __func__; ],
-               AC_DEFINE([HAVE_C99_FUNC], [1],
-                         [Define if the compiler understands the __func__ keyword])
-               AC_MSG_RESULT([yes]),
-               AC_MSG_RESULT([no]))
-AC_MSG_CHECKING([for __FUNCTION__ extension])
-AC_TRY_COMPILE(,[(void)__FUNCTION__],
-               AC_DEFINE([HAVE_FUNCTION], [1],
-                         [Define if the compiler understands the __FUNCTION__ keyword])
-               AC_MSG_RESULT([yes]),
-               AC_MSG_RESULT([no]))
-AC_MSG_CHECKING([for C99 designated initialization support])
-AC_TRY_COMPILE(,[
-                typedef struct {
-                    int x;
-                    union {
-                        int i;
-                        double d;
-                    } u;
-                } di_struct_t;
-                di_struct_t x = {0, { .d = 0.0}}; ],
-               AC_DEFINE([HAVE_C99_DESIGNATED_INITIALIZER], [1],
-                         [Define if the compiler understands C99 designated initialization of structs and unions])
-               AC_MSG_RESULT([yes]),
-               AC_MSG_RESULT([no]))
-
-dnl ----------------------------------------------------------------------
-dnl Try to figure out how to print `long long'.  Some machines use `%lld'
-dnl and others use `%qd'.  There may be more!  The final `l' is a
-dnl default in case none of the others work.
-dnl Need to patch up LD_LIBRARY_PATH so that the execution can find all
-dnl the dynamic library.  The correct way to do it should be updating
-dnl LD_LIBRARY_PATH along with LDFLAGS or do it with the AC_TRY_RUN macro.
-dnl
-AC_MSG_CHECKING([how to print long long])
-AC_CACHE_VAL([hdf5_cv_printf_ll],
-LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo $AM_LDFLAGS $LDFLAGS | sed -e 's/-L/:/g' -e 's/ //g'`"
-export LD_LIBRARY_PATH
-
-for hdf5_cv_printf_ll in l ll L q unknown; do
-   AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(void)
-{
-	char *s = malloc(128);
-	long long x = (long long)1048576 * (long long)1048576;
-	sprintf(s,"%${hdf5_cv_printf_ll}d",x);
-	exit(strcmp(s,"1099511627776"));
-}
-   ], break,,continue)
-done)dnl
-
-AC_MSG_RESULT([%${hdf5_cv_printf_ll}d and %${hdf5_cv_printf_ll}u])
-AC_DEFINE_UNQUOTED([PRINTF_LL_WIDTH], ["$hdf5_cv_printf_ll"], 
-                   [Width for printf() for type `long long' or `__int64', use `ll'])
-
-dnl ----------------------------------------------------------------------
-dnl Check if pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM)
-dnl is supported on this system
-dnl
-AC_MSG_CHECKING([Threads support system scope])
-AC_CACHE_VAL([hdf5_cv_system_scope_threads],
-[AC_TRY_RUN([
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <pthread.h>
-#endif
-
-int main(void)
-{
-    pthread_attr_t attribute;
-    int ret;
-
-    pthread_attr_init(&attribute);
-    ret=pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
-    exit(ret==0 ? 0 : 1);
-}
-], [hdf5_cv_system_scope_threads=yes], [hdf5_cv_system_scope_threads=no],)])
-
-if test ${hdf5_cv_system_scope_threads} = "yes"; then
-  AC_DEFINE([SYSTEM_SCOPE_THREADS], [1],
-            [Define if your system supports pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM) call.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Checking to see if GPFS is available on this filesystem
-dnl
-AC_ARG_ENABLE([gpfs],
-              [AC_HELP_STRING([--enable-gpfs],
-                              [Enable GPFS hints for the MPI/POSIX file
-                               driver. [default=no]])],,
-              [enableval=no])
-
-case "X-$enableval" in
-  X-yes)
-    AC_CHECK_HEADERS([gpfs.h],
-                     AC_MSG_CHECKING([for GPFS support])
-                     AC_TRY_COMPILE([#include <gpfs.h>],
-                                    [int fd = 0; gpfs_fcntl(fd, (void *)0);],
-                                    AC_DEFINE(HAVE_GPFS, 1,
-                                              [Define if we have GPFS support])
-                                    AC_MSG_RESULT([yes])
-                                    LIBS="$LIBS -lgpfs"
-                                    GPFS="yes",
-                                    AC_MSG_RESULT([no])
-                                    GPFS="no"))
-    ;;
-  X-no|*)
-    AC_MSG_CHECKING([for gpfs])
-    AC_MSG_RESULT([suppressed])
-    ;;
-esac
-   
-dnl ----------------------------------------------------------------------
-dnl Turn on debugging by setting compiler flags
-dnl This must come after the enable-production since it depends on production.
-dnl
-AC_MSG_CHECKING(for debug flags)
-AC_ARG_ENABLE([debug],
-              [AC_HELP_STRING([--enable-debug=all],
-                              [Turn on debugging in all packages. One may
-                               also specify a comma-separated list of
-                               package names without the leading H5 or
-                               the word no. The default is most packages
-			       if production is disabled; no if it is enabled.
-                               ])],
-              [DEBUG_PKG=$enableval])
-
-dnl Default to no if producton is enabled
-if test "X-$DEBUG_PKG" = X- ; then
-    if test "$enable_production" = yes ; then
-	DEBUG_PKG=no
-    else
-	DEBUG_PKG=yes
-    fi
-fi
-
-AC_SUBST([DEBUG_PKG])
-all_packages="ac,b,b2,d,e,f,g,hg,hl,i,mf,mm,o,p,s,t,v,z"
-case "X-$DEBUG_PKG" in
-  X-yes)
-    DEBUG_PKG="d,e,f,g,hg,i,mm,o,p,s,t,v,z"
-    H5_CPPFLAGS="$H5_CPPFLAGS -UNDEBUG"
-    AC_MSG_RESULT([default ($DEBUG_PKG)])
-    ;;
-  X-all)
-    DEBUG_PKG=$all_packages
-    H5_CPPFLAGS="$H5_CPPFLAGS -UNDEBUG"
-    AC_MSG_RESULT([all ($DEBUG_PKG)])
-    ;;
-  X-no|X-none)
-    AC_MSG_RESULT([none])
-    DEBUG_PKG=
-    H5_CPPFLAGS="$H5_CPPFLAGS -DNDEBUG"
-    ;;
-  *)
-    AC_MSG_RESULT([$DEBUG_PKG])
-    ;;
-esac
-
-if test -n "$DEBUG_PKG"; then
-  for pkg in `echo $DEBUG_PKG | ${TR} ${as_cr_letters}"," ${as_cr_LETTERS}" "`; do
-    H5_CPPFLAGS="$H5_CPPFLAGS -DH5${pkg}_DEBUG"
-  done
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like the function stack support compiled in
-dnl
-AC_MSG_CHECKING([whether function stack tracking is enabled])
-AC_ARG_ENABLE([codestack],
-              [AC_HELP_STRING([--enable-codestack],
-                              [Enable the function stack tracing (for developer debugging).])],
-              [CODESTACK=$enableval])
-
-case "X-$CODESTACK" in
-  X-yes)
-      CODESTACK=yes
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([HAVE_CODESTACK], [1],
-                [Define if the function stack tracing code is to be compiled in])
-    ;;
-  *)
-      CODESTACK=no
-      AC_MSG_RESULT([no])
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like the metadata trace file code compiled in
-dnl
-AC_MSG_CHECKING([whether metadata trace file code is enabled])
-AC_ARG_ENABLE([metadata-trace-file],
-              [AC_HELP_STRING([--enable-metadata-trace-file],
-                              [Enable metadata trace file collection.])],
-              [METADATATRACEFILE=$enableval])
-
-case "X-$METADATATRACEFILE" in
-  X-yes)
-      METADATATRACEFILE=yes
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([METADATA_TRACE_FILE], [1],
-                [Define if the metadata trace file code is to be compiled in])
-    ;;
-  *)
-      METADATATRACEFILE=no
-      AC_MSG_RESULT([no])
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Enable tracing of the API
-dnl This must come after the enable-debug since it depends on debug.
-dnl
-AC_SUBST([TRACE_API])
-AC_MSG_CHECKING([for API tracing]);
-AC_ARG_ENABLE([trace],
-              [AC_HELP_STRING([--enable-trace],
-                              [Enable API tracing capability. Default=no
-                               if debug is disabled.])],
-              TRACE=$enableval)
-
-dnl Default to no if debug is disabled
-if test "X-$TRACE" = X- ; then
-  if test -z "$DEBUG_PKG" ; then
-    TRACE=no
-  else
-    TRACE=yes
-  fi
-fi
-
-case "X-$TRACE" in
-  X-yes)
-    AC_MSG_RESULT([yes])
-    TRACE_API=yes
-    H5_CPPFLAGS="$H5_CPPFLAGS -DH5_DEBUG_API"
-    ;;
-  X-no|*)
-    AC_MSG_RESULT([no])
-    TRACE_API=no
-    H5_CPPFLAGS="$H5_CPPFLAGS -UH5_DEBUG_API"
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Enable instrumenting of the library's internal operations
-dnl This must come after the enable-debug since it depends on debug.
-dnl
-AC_SUBST([INSTRUMENT_LIBRARY])
-AC_MSG_CHECKING([for instrumented library]);
-AC_ARG_ENABLE([instrument],
-              [AC_HELP_STRING([--enable-instrument],
-                              [Enable library instrumentation of optimization
-                                tracing.  Default=no if debug is disabled.])],
-              INSTRUMENT=$enableval)
-
-dnl Default to no if debug is disabled
-if test "X-$INSTRUMENT" = X- ; then
-  if test -z "$DEBUG_PKG" ; then
-    INSTRUMENT=no
-  else
-    INSTRUMENT=yes
-  fi
-fi
-
-case "X-$INSTRUMENT" in
-  X-yes)
-    AC_MSG_RESULT([yes])
-    INSTRUMENT_LIBRARY=yes
-    AC_DEFINE([HAVE_INSTRUMENTED_LIBRARY], [1],
-              [Define if library will contain instrumentation to detect correct optimization operation])
-    ;;
-  X-no|*)
-    AC_MSG_RESULT([no])
-    INSTRUMENT_LIBRARY=no
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like to securely clear file buffers before they are
-dnl     written.
-dnl
-AC_SUBST([CLEARFILEBUF])
-AC_MSG_CHECKING([whether to clear file buffers])
-AC_ARG_ENABLE([clear-file-buffers],
-              [AC_HELP_STRING([--enable-clear-file-buffers],
-                              [Securely clear file buffers before writing
-                              to file.  Default=yes.])],
-              [CLEARFILEBUF=$enableval])
-
-case "X-$CLEARFILEBUF" in
-  *)
-      CLEARFILEBUF=yes
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([CLEAR_MEMORY], [1],
-                [Define if the memory buffers being written to disk should be
-                cleared before writing.])
-    ;;
-  X-no)
-      CLEARFILEBUF=no
-      AC_MSG_RESULT([no])
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like to use a memory checking tool (like valgrind's
-dnl     'memcheck' tool, or Rational Purify, etc) and the library should be
-dnl     more scrupulous with it's memory operations.  Enabling this also
-dnl     disables the library's free space manager code.
-dnl
-AC_SUBST([USINGMEMCHECKER])
-AC_MSG_CHECKING([whether a memory checking tool will be used])
-AC_ARG_ENABLE([using-memchecker],
-              [AC_HELP_STRING([--enable-using-memchecker],
-                              [Enable this option if a memory allocation and/or
-                              bounds checking tool will be used on the HDF5
-                              library.  Enabling this causes the library to be
-                              more picky about it's memory operations and also
-                              disables the library's free space manager code.
-                              Default=no.])],
-              [USINGMEMCHECKER=$enableval])
-
-case "X-$USINGMEMCHECKER" in
-  X-yes)
-      USINGMEMCHECKER=yes
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([USING_MEMCHECKER], [1],
-                [Define if a memory checking tool will be used on the library,
-                to cause library to be very picky about memory operations and
-                also disable the internal free list manager code.])
-    ;;
-  *)
-      USINGMEMCHECKER=no
-      AC_MSG_RESULT([no])
-    ;;
-esac
-
-dnl Checkpoint the cache
-AC_CACHE_SAVE
-
-dnl What header files and libraries do we have to look for for parallel
-dnl support?  For the most part, search paths are already specified with
-dnl CPPFLAGS and LDFLAGS or are known to the compiler.  If the user says
-dnl `--disable-parallel' but specifies a known parallel compiler (like mpicc
-dnl or mpcc) then parallel support is enabled but configure doesn't search
-dnl for any parallel header files or libraries.
-dnl
-AC_ARG_ENABLE([parallel],
-              [AC_HELP_STRING([--enable-parallel],
-                              [Search for MPI-IO and MPI support files])])
-
-dnl The --enable-parallel flag is not compatible with --enable-cxx.
-dnl If the user tried to specify both flags, throw an error, unless
-dnl they also provided the --enable-unsupported flag.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  if test "X${HDF_CXX}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
-    AC_MSG_ERROR([--enable-cxx and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error.])
-  fi
-fi
-
-dnl --enable-parallel is also incompatible with --enable-threadsafe, unless
-dnl --enable-unsupported has been specified on the configure line.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  if test "X${THREADSAFE}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then
-    AC_MSG_ERROR([--enable-threadsafe and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error.])
-  fi
-fi
-
-dnl It's possible to build in parallel by specifying a parallel compiler
-dnl without using the --enable-parallel flag.  This isn't allowed with
-dnl C++ or threadsafe, either, unless the --enable-unsupported flag
-dnl has also been specified.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  if test "X${PARALLEL}" != "X" -a "X${enable_cxx}" = "Xyes" ; then
-    AC_MSG_ERROR([An MPI compiler is being used; --enable-cxx is not allowed. Use --enable-unsupported to override this error.])
-  fi
-  if test "X${PARALLEL}" != "X" -a "X${THREADSAFE}" = "Xyes"; then
-    AC_MSG_ERROR([An MPI compiler is being used; --enable-threadsafe is not allowed. Use --enable-unsupported to override this error.])
-  fi
-fi
-
-AC_MSG_CHECKING([for parallel support files])
-case "X-$enable_parallel" in
-  X-|X-no|X-none)
-    dnl Either we are not compiling for parallel or the header and
-    dnl library files and locations are known to the compiler (this is
-    dnl the case for a correct installation of mpicc for instance).
-    AC_MSG_RESULT([skipped])
-    ;;
-
-  X-yes)
-    dnl We want to compile a parallel library with a compiler that
-    dnl may already know how to link with MPI and MPI-IO.
-    AC_MSG_RESULT([provided by compiler])
-    PARALLEL=yes
-
-    dnl Try link a simple MPI program.  If fail, try again with -lmpi and
-    dnl -lmpich.
-    AC_TRY_LINK(, MPI_Init(),, \
-	AC_CHECK_LIB(mpi, MPI_Init,, \
-	    AC_CHECK_LIB(mpich, MPI_Init,, PARALLEL=no)))
-
-    dnl Then try link a simple MPI-IO program. If fail, try again with
-    dnl -lmpio.
-    if test "X$PARALLEL" = "Xyes"; then
-      AC_TRY_LINK(, [MPI_File_open()],,
-                  [AC_CHECK_LIB([mpio], [MPI_File_open],, [PARALLEL=no])])
-    fi
-
-    if test "X$HDF_FORTRAN" = "Xyes"; then
-      dnl Change to the Fortran 90 language
-      AC_LANG_PUSH(Fortran)
-
-      dnl Try link a simple MPI program.  If fail, try again with -lmpi.
-      AC_LINK_IFELSE([
-          program main
-          include 'mpif.h'
-          integer:: ierr
-          call mpi_file_open( ierr )
-          end],,
-          AC_CHECK_LIB(mpi, [
-            include 'mpif.h'
-            integer:: ierr
-            call mpi_file_open( ierr )],, PARALLEL=no))
-
-      dnl Then try link a simple MPI-IO program.  If fail, try again with
-      dnl -lmpio.
-      if test "X$PARALLEL" = "Xyes"; then
-        AC_LINK_IFELSE([
-            program main
-            include 'mpif.h'
-            integer:: ierr
-            call mpi_file_open( ierr )
-            end],,
-            AC_CHECK_LIB(mpio, [
-              include 'mpif.h'
-              integer:: ierr
-              call mpi_file_open( ierr )],, PARALLEL=no))
-      fi
-
-      dnl Change to the C language
-      AC_LANG_POP(Fortran)
-    fi
-
-    dnl Set RUNPARALLEL to mpiexec if not set yet.
-    dnl Check for building on Cray if RUNPARALLEL is not yet set by checking
-    dnl for 'aprun' command (which is the parallel job launcher, like mpiexec).
-    if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
-        dnl Find the path where aprun is located.
-  	for path in `echo $PATH | ${TR} ":" " "`; do
-  	  if test -x $path/aprun; then
-            RUNPARALLEL="aprun -q -n \$\${NPROCS:=6}"
-  	    break;
-  	  fi
-	done
-    fi
-
-    dnl Set RUNPARALLEL to mpiexec if not set yet.
-    if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then
-      RUNPARALLEL="mpiexec -n \$\${NPROCS:=6}"
-    fi
-    ;;
-
-  *)
-    AC_MSG_RESULT([error])
-    AC_MSG_ERROR([\'$enable_parallel\' is not a valid parallel search type])
-    ;;
-esac
-
-dnl ----------------------------------------------------------------------
-dnl Print some other parallel information and do some sanity checks.
-dnl
-AC_SUBST([ADD_PARALLEL_FILES]) ADD_PARALLEL_FILES="no"
-
-if test -n "$PARALLEL"; then
-  dnl The 'testpar' directory should participate in the build
-  TESTPARALLEL=testpar
-
-  dnl We are building a parallel library
-  AC_DEFINE([HAVE_PARALLEL], [1], [Define if we have parallel support])
-
-  dnl Display what we found about running programs
-  AC_MSG_CHECKING([prefix for running on one processor])
-  AC_MSG_RESULT([$RUNSERIAL])
-  AC_MSG_CHECKING([prefix for running in parallel])
-  AC_MSG_RESULT([$RUNPARALLEL])
-
-  dnl Check that we can link a simple MPI and MPI-IO application
-  AC_MSG_CHECKING([whether a simple MPI-IO program can be linked])
-  AC_TRY_LINK(, [MPI_Init(); MPI_File_open();],
-              AC_MSG_RESULT([yes]),
-              AC_MSG_RESULT([no])
-              AC_MSG_ERROR([unable to link a simple MPI-IO application]))
-
-  dnl There *must* be some way to run in parallel even if it's just the
-  dnl word `none'.
-  if test -z "$RUNPARALLEL"; then
-    AC_MSG_ERROR([no way to run a parallel program])
-  fi
-
-  dnl If RUNSERIAL or RUNPARALLEL is the word `none' then replace it with
-  dnl the empty string.
-  if test "X$RUNSERIAL" = "Xnone"; then
-    RUNSERIAL=""
-  fi
-  if test "X$RUNPARALLEL" = "Xnone"; then
-    RUNPARALLEL=""
-  fi
-
-  if test "X$HDF_FORTRAN" = "Xyes"; then
-    ADD_PARALLEL_FILES="yes"
-    AC_MSG_CHECKING([for MPI_Comm_c2f and MPI_Comm_f2c functions])
-
-    AC_TRY_LINK([#include <mpi.h>],
-      [MPI_Comm c_comm; MPI_Comm_c2f(c_comm)],
-      AC_DEFINE([HAVE_MPI_MULTI_LANG_Comm], [1],
-                [Define if `MPI_Comm_c2f' and `MPI_Comm_f2c' exists])
-      AC_MSG_RESULT([yes]),
-      AC_MSG_RESULT([no])
-    )
-
-    AC_MSG_CHECKING([for MPI_Info_c2f and MPI_Info_f2c functions])
-    AC_TRY_LINK([#include <mpi.h>],
-      [MPI_Info c_info; MPI_Info_c2f(c_info)],
-      AC_DEFINE([HAVE_MPI_MULTI_LANG_Info], [1],
-                [Define if `MPI_Info_c2f' and `MPI_Info_f2c' exists])
-      AC_MSG_RESULT([yes]),
-      AC_MSG_RESULT([no])
-    )
-  fi
-
-  dnl --------------------------------------------------------------------
-  dnl Do we want MPE instrumentation feature on?
-  dnl
-  dnl This must be done after enable-parallel is checked since it depends
-  dnl on a mpich compiler.
-  dnl
-  MPE=yes
-  AC_ARG_WITH([mpe],
-              [AC_HELP_STRING([--with-mpe=DIR],
-                              [Use MPE instrumentation [default=no]])],,
-              [withval=no])
-
-  case "X-$withval" in
-    X-|X-no|X-none)
-      AC_MSG_CHECKING([for MPE])
-      AC_MSG_RESULT([suppressed])
-      unset MPE
-      ;;
-    X-yes)
-      AC_CHECK_HEADERS([mpe.h],, [unset MPE])
-      AC_CHECK_LIB([mpe], [MPE_Init_log],, [unset MPE])
-      AC_CHECK_LIB([lmpe], [CLOG_Init],, [unset MPE])
-      ;;
-    *)
-      case "$withval" in
-        *,*)
-          mpe_inc="`echo $withval | cut -f1 -d,`"
-          mpe_lib="`echo $withval | cut -f2 -d, -s`"
-          ;;
-        *)
-          if test -n "$withval"; then
-            mpe_inc="$withval/include"
-            mpe_lib="$withval/lib"
-          fi
-          ;;
-      esac
-  
-      dnl Trying to include -I/usr/include and -L/usr/lib is redundant and
-      dnl can mess some compilers up.
-      if test "X$mpe_inc" = "X/usr/include"; then
-        mpe_inc=""
-      fi
-      if test "X$mpe_lib" = "X/usr/lib"; then
-        mpe_lib=""
-      fi
-  
-      if test -n "$mpe_inc"; then
-        saved_CPPFLAGS="$CPPFLAGS"
-        saved_AM_CPPFLAGS="$AM_CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS -I$mpe_inc"
-        AM_CPPFLAGS="$AM_CPPFLAGS -I$mpe_inc"
-        AC_CHECK_HEADERS([mpe.h],, [CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"; unset MPE])
-      else
-        AC_CHECK_HEADERS([mpe.h],, [unset MPE])
-      fi
-  
-      if test -n "$mpe_lib"; then
-        saved_LDFLAGS="$LDFLAGS"
-        saved_AM_LDFLAGS="$AM_LDFLAGS"
-        LDFLAGS="$LDFLAGS -L$mpe_lib"
-        AM_LDFLAGS="$AM_LDFLAGS -L$mpe_lib"
-        AC_CHECK_LIB([mpe], [MPE_Init_log],,
-                     [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset MPE])
-        AC_CHECK_LIB([lmpe], [CLOG_Init],,
-                     [LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset MPE])
-
-      else
-        AC_CHECK_LIB([mpe], [MPE_Init_log],, [unset MPE])
-        AC_CHECK_LIB([lmpe], [CLOG_Init],, [unset MPE])
-      fi
-      ;;
-  esac
-
-  if test "X-$MPE" = "X-yes"; then
-    AC_DEFINE([HAVE_MPE], [1], [Define if we have MPE support])
-  fi
-
-  dnl ----------------------------------------------------------------------
-  dnl Set the flag to indicate that the MPI_File_set_size() function
-  dnl works with files over 2GB, unless it's already set in the cache.
-  dnl (This flag should be set for all machines, except for ASCI Red, where
-  dnl the cache value is set in it's config file)
-  dnl
-  AC_MSG_CHECKING([if MPI_File_set_size works for files over 2GB])
-  AC_CACHE_VAL([hdf5_cv_mpi_file_set_size_big], [hdf5_cv_mpi_file_set_size_big=yes])
-  
-  if test ${hdf5_cv_mpi_file_set_size_big} = "yes"; then
-    AC_DEFINE([MPI_FILE_SET_SIZE_BIG], [1],
-              [Define if your system's `MPI_File_set_size' function works for files over 2GB.])
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([no])
-  fi
-
-  dnl ----------------------------------------------------------------------
-  dnl Set the flag to indicate that the MPI_File_get_size() function
-  dnl works.  The default is enabled unless the user knows the function
-  dnl doesn't work on the system and disables it.  (This flag should be set
-  dnl for all machines except for SGI Altix Propack 4 where the function 
-  dnl doesn't return correct file size.)
-  dnl
-  AC_ARG_ENABLE([mpi-size],
-                [AC_HELP_STRING([--enable-mpi-size],
-                                [Some systems (only SGI Altix Propack 4 so far) return wrong value
-                                 from MPI_File_get_size.  By disabling this function, the library
-                                 will replace it with stat to get the correct file size.
-                                 [default=yes]])],
-                [MPI_GET_SIZE=$enableval])
-
-  AC_MSG_CHECKING([if MPI_File_get_size is enabled])
-
-  AC_SUBST(MPI_GET_SIZE)
-  case "X-$MPI_GET_SIZE" in
-    X-no)
-      AC_MSG_RESULT([no])
-      MPI_GET_SIZE=no
-      ;;
-    X-yes|*)
-      AC_MSG_RESULT([yes])
-      MPI_GET_SIZE=yes
-      AC_DEFINE([HAVE_MPI_GET_SIZE], [1],
-                [Define if MPI_File_get_size works correctly])
-      ;;
-  esac
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Turn on internal I/O filters by setting macros in header files
-dnl Internal I/O filters are contained entirely within the library and do
-dnl not depend on external headers or libraries.  The shuffle filter is
-dnl an example of an internal filter, while the gzip filter is an example of
-dnl an external filter.  Each external filter is controlled with an
-dnl "--with-foo=" configure flag.
-dnl
-AC_SUBST([FILTERS])
-AC_SUBST(USE_FILTER_SHUFFLE) USE_FILTER_SHUFFLE="no"
-AC_SUBST(USE_FILTER_FLETCHER32) USE_FILTER_FLETCHER32="no"
-AC_SUBST(USE_FILTER_NBIT) USE_FILTER_NBIT="no"
-AC_SUBST(USE_FILTER_SCALEOFFSET) USE_FILTER_SCALEOFFSET="no"
-AC_MSG_CHECKING([for I/O filters])
-AC_ARG_ENABLE([filters],
-              [AC_HELP_STRING([--enable-filters=all],
-                              [Turn on all internal I/O filters. One may
-                               also specify a comma-separated list of filters
-                               or the word no.  The default is all internal
-                               I/O filters.])],
-              [FILTERS=$enableval])
-
-dnl Eventually: all_filters="shuffle,foo,bar,baz"
-all_filters="shuffle,fletcher32,nbit,scaleoffset"
-case "X-$FILTERS" in
-  X-|X-all)
-    FILTERS=$all_filters
-    AC_MSG_RESULT([all ($FILTERS)])
-    ;;
-  X-no|X-none)
-    AC_MSG_RESULT([none])
-    FILTERS="none"
-    ;;
-  *)
-    AC_MSG_RESULT([$FILTERS])
-    ;;
-esac
-
-if test -n "$FILTERS"; then
-  for filter in `echo $FILTERS | tr ${as_cr_letters}',' ${as_cr_LETTERS}' '`; do
-    dnl ------------------------------------------------------------------
-    dnl Have to use separate 'if' construct for each filter, so that
-    dnl autoheader can detect the AC_DEFINE for each one...
-    dnl
-    if test $filter = "SHUFFLE"; then
-      AC_DEFINE([HAVE_FILTER_SHUFFLE], [1],
-                [Define if support for shuffle filter is enabled])
-      USE_FILTER_SHUFFLE="yes"
-    fi
-    if test $filter = "FLETCHER32"; then
-      AC_DEFINE([HAVE_FILTER_FLETCHER32], [1],
-                [Define if support for Fletcher32 checksum is enabled])
-      USE_FILTER_FLETCHER32="yes"
-    fi
-    if test $filter = "NBIT"; then
-      AC_DEFINE([HAVE_FILTER_NBIT], [1],
-                [Define if support for nbit filter is enabled])
-      USE_FILTER_NBIT="yes"
-    fi
-    if test $filter = "SCALEOFFSET"; then
-      AC_DEFINE([HAVE_FILTER_SCALEOFFSET], [1],
-                [Define if support for scaleoffset filter is enabled])
-      USE_FILTER_SCALEOFFSET="yes"
-    fi
-  done
-fi
-
-dnl ----------------------------------------------------------------------
-dnl This is defined only when we're using CodeWarrior, since it has a
-dnl broken "open()" call.
-dnl
-if test 1 = 2; then
-  AC_DEFINE([NO_SHARED_WRITING], [1],
-            [Define if shared writing must be disabled (CodeWarrior only)])
-fi
-
-dnl --------------------------------------------------------------------------
-dnl Should the Default Virtual File Driver be compiled?
-dnl
-
-AC_MSG_CHECKING([for Default Virtual File Driver definition])
-AC_ARG_WITH([default-vfd],
-            [AC_HELP_STRING([--with-default-vfd=driver],
-                            [Specify default file driver
-                             [default=sec2]])],,
-            withval=sec2)
-
-if test "X$withval" = "Xsec2"; then
-    AC_MSG_RESULT([yes])
-    default_vfd=yes
-    vfd_define=H5FD_SEC2
-elif test "X$withval" = "Xstdio"; then
-    AC_MSG_RESULT([yes])
-    default_vfd=yes
-    vfd_define=H5FD_STDIO
-else
-    AC_MSG_RESULT([no])
-    default_vfd=no
-fi
-
-if test "X$default_vfd" = "Xyes"; then
-  AC_DEFINE_UNQUOTED([DEFAULT_VFD], [$vfd_define],
-            [Define the default virtual file driver to compile])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Check if Direct I/O driver is enabled by --enable-direct-vfd
-dnl
-
-AC_MSG_CHECKING([for Direct Virtual File Driver support])
-
-AC_ARG_ENABLE([direct-vfd],
-              [AC_HELP_STRING([--enable-direct-vfd],
-                              [Build the Direct I/O Virtual File Driver
-                               [default=yes]])],
-              [DIRECT_VFD=$enableval], [DIRECT_VFD=yes])
-
-if test "$DIRECT_VFD" = "yes"; then
-   AC_CACHE_VAL([hdf5_cv_direct_io],
-       [AC_TRY_RUN([
-	  #include <sys/types.h>
-	  #include <sys/stat.h>
-	  #include <fcntl.h>
-	  #include <stdlib.h>
-          int main(void)
-          {
-             int fid; 
-             if((fid=open("tst_file", O_CREAT | O_TRUNC | O_DIRECT, 0755))<0)
-		exit(1);
-             close(fid);  
-             remove("tst_file"); 
-             exit (0);
-          }], AC_TRY_LINK(, [posix_memalign()], [hdf5_cv_direct_io=yes], [hdf5_cv_direct_io=no]), [hdf5_cv_direct_io=no],)])
-
-   if test ${hdf5_cv_direct_io} = "yes"; then
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([HAVE_DIRECT], [1],
-                [Define if the direct I/O virtual file driver should be compiled])
-   else
-      AC_MSG_RESULT([no])
-      DIRECT_VFD=no
-   fi
-else
-      AC_MSG_RESULT([suppressed])
-fi
-
-AM_CONDITIONAL([DIRECT_VFD_CONDITIONAL], [test "X$DIRECT_VFD" = "Xyes"])
-
-dnl ----------------------------------------------------------------------
-dnl Decide whether the presence of user's exception handling functions is
-dnl checked and data conversion exceptions are returned.  This is mainly
-dnl for the speed optimization of hard conversions.  Soft conversions can
-dnl actually benefit little.  
-dnl
-AC_MSG_CHECKING([whether exception handling functions is checked during data conversions])
-AC_ARG_ENABLE([dconv-exception],
-              [AC_HELP_STRING([--enable-dconv-exception],
-                              [if exception handling functions is checked during 
-                              data conversions [default=yes]])],
-              [DCONV_EXCEPTION=$enableval], [DCONV_EXCEPTION=yes])
-
-if test "$DCONV_EXCEPTION" = "yes"; then
-  AC_MSG_RESULT([yes])
-  AC_DEFINE([WANT_DCONV_EXCEPTION], [1],
-            [Check exception handling functions during data conversions])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Decide whether the data accuracy has higher priority during data
-dnl conversions.  If not, some hard conversions will still be prefered even
-dnl though the data may be wrong (for example, some compilers don't 
-dnl support denormalized floating values) to maximize speed.
-dnl 
-AC_MSG_CHECKING([whether data accuracy is guaranteed during data conversions])
-AC_ARG_ENABLE([dconv-accuracy],
-              [AC_HELP_STRING([--enable-dconv-accuracy],
-                              [if data accuracy is guaranteed during 
-                              data conversions [default=yes]])],
-              [DATA_ACCURACY=$enableval], [DATA_ACCURACY=yes])
-
-if test "$DATA_ACCURACY" = "yes"; then
-  AC_MSG_RESULT([yes])
-  AC_DEFINE([WANT_DATA_ACCURACY], [1],
-            [Data accuracy is prefered to speed during data conversions])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can handle converting
-dnl denormalized floating-point values.
-dnl (This flag should be set for all machines, except for the Crays, where
-dnl the cache value is set in it's config file)
-dnl
-AC_MSG_CHECKING([if converting denormalized floating-point values is possible])
-AC_CACHE_VAL([hdf5_cv_convert_denormal_float], [hdf5_cv_convert_denormal_float=yes])
-
-if test ${hdf5_cv_convert_denormal_float} = "yes"; then
-  AC_DEFINE([CONVERT_DENORMAL_FLOAT], [1],
-            [Define if your system can handle converting denormalized floating-point values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can handle converting
-dnl floating-point to long long values.
-dnl (This flag should be _unset_ for all machines, except for Windows, where
-dnl it's set in the custom Windows H5pubconf.h file)
-dnl
-AC_MSG_CHECKING([if converting floating-point values to long long is not working])
-AC_CACHE_VAL([hdf5_cv_convert_float_llong_not_works], [hdf5_cv_convert_float_llong_not_works=no])
-
-if test ${hdf5_cv_convert_float_llong_not_works} = "yes"; then
-  AC_DEFINE([HW_FP_TO_LLONG_NOT_WORKS], [1],
-            [Define if your system can't handle converting floating-point values to long long.])
-  AC_MSG_RESULT([true])
-else
-  AC_MSG_RESULT([false])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine has window style pathname,
-dnl that is, "drive-letter:\" (e.g. "C:") or "drive-letter:/" (e.g. "C:/").
-dnl (This flag should be _unset_ for all machines, except for Windows, where
-dnl it's set in the custom Windows H5pubconf.h file)
-dnl
-AC_MSG_CHECKING([if the machine has window style path name])
-
-case "`uname`" in
-  MINGW*)
-    AC_DEFINE([HAVE_WINDOW_PATH], [1],
-              [Define if your system has window style path name.])
-    AC_MSG_RESULT([yes])
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-esac
-
-dnl -----------------------------------------------------------------------
-dnl Set flag to indicate that the machine can handle conversion from 
-dnl long double to integers accurately.  This flag should be set "yes" for 
-dnl all machines except all SGIs.  For SGIs, some conversions are
-dnl incorrect and its cache value is set "no" in its config/irix6.x and 
-dnl irix5.x.
-dnl
-AC_MSG_CHECKING([if converting from long double to integers is accurate])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_ldouble_to_integer_accurate=${hdf5_cv_ldouble_to_integer_accurate=no}
-else
-   AC_CACHE_VAL([hdf5_cv_ldouble_to_integer_accurate], [hdf5_cv_ldouble_to_integer_accurate=yes])
-fi
-
-if test "${hdf5_cv_ldouble_to_integer_accurate}" = "yes"; then
-  AC_DEFINE([LDOUBLE_TO_INTEGER_ACCURATE], [1],
-            [Define if your system can convert long double to integers accurately.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl -----------------------------------------------------------------------
-dnl Set flag to indicate that the machine can do conversion from 
-dnl long double to integers regardless of accuracy.  This flag should be 
-dnl set "yes" for all machines except HP-UX 11.00.  For HP-UX 11.00, the
-dnl compiler has 'floating exception' when converting 'long double' to all 
-dnl integers except 'unsigned long long'.  Other HP-UX systems are unknown
-dnl yet. (1/8/05 - SLU)
-
-AC_MSG_CHECKING([if converting from long double to integers works])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_ldouble_to_integer_works=${hdf5_cv_ldouble_to_integer_works=no}
-else
-   AC_CACHE_VAL([hdf5_cv_ldouble_to_integer_works],
-        [AC_TRY_RUN([
-        int main(void)
-        {
-            void *align;
-            long double ld= 9701917572145405952.00L;
-            unsigned char v1;
-            short v2;
-            unsigned int v3;
-            int  ret = 0;
-
-            align = (void*)malloc(sizeof(long double));
-            memcpy(align, &ld, sizeof(long double));
-
-            /*For HU-UX11.00, there's floating exception(core dump) when doing some of casting
-             *from 'long double' to integers*/
-            v1=(unsigned char)(*((long double*)align));
-            v2=(short)(*((long double*)align));
-            v3=(unsigned int)(*((long double*)align));
-
-    done:
-            exit(ret);
-        }
-        ], [hdf5_cv_ldouble_to_integer_works=yes], [hdf5_cv_ldouble_to_integer_works=no],)])
-fi
-
-if test ${hdf5_cv_ldouble_to_integer_works} = "yes"; then
-  AC_DEFINE([LDOUBLE_TO_INTEGER_WORKS], [1],
-            [Define if your system can convert from long double to integer values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl -----------------------------------------------------------------------
-dnl Set flag to indicate that the machine can handle conversion from 
-dnl integers to long double.  (This flag should be set "yes" for all 
-dnl machines except all SGIs, where some conversions are
-dnl incorrect and its cache value is set "no" in its config/irix6.x and 
-dnl irix5.x) 
-dnl
-AC_MSG_CHECKING([if accurately converting from integers to long double])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_integer_to_ldouble_accurate=${hdf5_cv_integer_to_ldouble_accurate=no}
-else
-   AC_CACHE_VAL([hdf5_cv_integer_to_ldouble_accurate], [hdf5_cv_integer_to_ldouble_accurate=yes])
-fi
-
-if test ${hdf5_cv_integer_to_ldouble_accurate} = "yes"; then
-  AC_DEFINE([INTEGER_TO_LDOUBLE_ACCURATE], [1],
-            [Define if your system can accurately convert from integers to long double values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl 'unsigned long' to 'float' values.
-dnl (This flag should be set for all machines, except for Pathscale compiler
-dnl on Sandia's Linux machine where the compiler interprets 'unsigned long'
-dnl values as negative when the first bit of 'unsigned long' is on during 
-dnl the conversion to float.) 
-dnl
-AC_MSG_CHECKING([if accurately converting unsigned long to float values])
-
-AC_CACHE_VAL([hdf5_cv_ulong_to_float_accurate],
-    [AC_TRY_RUN([
-    int main(void)
-    {
-        int           ret = 0;
-        unsigned long l1;
-        unsigned long l2;
-        unsigned long l3;
-        float f1;
-        float f2;
-        float f3;
-
-
-        if(sizeof(unsigned long)==8) {
-            l1 = 0xffffffffffffffffUL;
-            l2 = 0xffffffffffff0000UL;
-            l3 = 0xf000000000000000UL;
-
-            f1 = (float)l1;
-            f2 = (float)l2;
-            f3 = (float)l3;
-
-            if((f1 < 0) || (f2 < 0) || (f3 < 0))
-                ret = 1;
-        }
-
-done:
-        exit(ret);
-    }
-    ], [hdf5_cv_ulong_to_float_accurate=yes], [hdf5_cv_ulong_to_float_accurate=no],)])
-
-if test ${hdf5_cv_ulong_to_float_accurate} = "yes"; then
-  AC_DEFINE([ULONG_TO_FLOAT_ACCURATE], [1],
-            [Define if your system accurately converting unsigned long to float values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl 'unsigned (long) long' values to 'float' and 'double' values.
-dnl (This flag should be set for all machines, except for the SGIs, where
-dnl the cache value is set in the config/irix6.x config file) and Solaris
-dnl 64-bit machines, where the short program below tests if round-up is 
-dnl correctly handled.
-dnl
-AC_MSG_CHECKING([if accurately converting unsigned long long to floating-point values])
-
-if test ${host_os_novers} = "solaris2.x"; then
-    AC_CACHE_VAL([hdf5_cv_ulong_to_fp_bottom_bit_accurate],
-    [AC_TRY_RUN([
-    int main(void)
-    {
-        unsigned long l1;
-        unsigned long l2;
-        unsigned long l3;
-        unsigned long l4;
-        unsigned long long ld1;
-        unsigned long long ld2;
-        unsigned long long ld3;
-        unsigned long long ld4;
-        double        d1, d2, d3, d4;
-        unsigned char s[8];
-        int           ret = 0;
-
-        if(sizeof(unsigned long)==8) {
-            l1 = 0xf000000000000b00UL; /*Round-down case*/
-            l2 = 0xf000000000000401UL; /*Round-up case*/
-            l3 = 0xf000000000000400UL; /*Round-down case*/
-            l4 = 0xf000000000000c00UL; /*Round-up case*/
-            
-            d1 = (double)l1;
-            d2 = (double)l2;
-            d3 = (double)l3;
-            d4 = (double)l4;
-        } else if(sizeof(unsigned long long)==8) { 
-            ld1 = 0xf000000000000b00ULL; /*Round-down case*/
-            ld2 = 0xf000000000000401ULL; /*Round-up case*/
-            ld3 = 0xf000000000000400ULL; /*Round-down case*/
-            ld4 = 0xf000000000000c00ULL; /*Round-up case*/
-            
-            d1 = (double)ld1;
-            d2 = (double)ld2;
-            d3 = (double)ld3;
-            d4 = (double)ld4;
-        } else {
-            ret = 1;
-            goto done;
-        }
-        
-        memcpy(s, &d1, 8);
-        if(s[7]!=1)
-            ret = 1;
-
-        memcpy(s, &d2, 8);
-        if(s[7]!=1)
-            ret = 1;
-
-        memcpy(s, &d3, 8);
-        if(s[7]!=0)
-            ret = 1;
-
-        memcpy(s, &d4, 8);
-        if(s[7]!=2)
-            ret = 1;
-
-done:
-        exit(ret);
-    }
-    ], [hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes], [hdf5_cv_ulong_to_fp_bottom_bit_accurate=no],)])
-else
-    AC_CACHE_VAL([hdf5_cv_ulong_to_fp_bottom_bit_accurate], [hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes])
-fi
-
-if test ${hdf5_cv_ulong_to_fp_bottom_bit_accurate} = "yes"; then
-  AC_DEFINE([ULONG_TO_FP_BOTTOM_BIT_ACCURATE], [1],
-            [Define if your system can accurately convert unsigned (long) long values to floating-point values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl 'float' or 'double' to 'unsigned long long' values.
-dnl (This flag should be set for all machines, except for PGI compiler 
-dnl where round-up happens when the fraction of float-point value is greater 
-dnl than 0.5.
-dnl
-AC_MSG_CHECKING([if accurately roundup converting floating-point to unsigned long long values])
-
-AC_CACHE_VAL([hdf5_cv_fp_to_ullong_accurate],
-    [AC_TRY_RUN([
-    int main(void)
-    {
-        float  f = 111.60f;
-        double d = 222.55L;
-        unsigned long long l1 = (unsigned long long)f;
-        unsigned long long l2 = (unsigned long long)d;
-        int           ret = 0;
-
-        if(l1 == 112) 
-            ret = 1;
-        if(l2 == 223) 
-            ret = 1;
-
-done:
-        exit(ret);
-    }
-    ], [hdf5_cv_fp_to_ullong_accurate=yes], [hdf5_cv_fp_to_ullong_accurate=no],)])
-
-if test ${hdf5_cv_fp_to_ullong_accurate} = "yes"; then
-  AC_DEFINE([FP_TO_ULLONG_ACCURATE], [1],
-            [Define if your system roundup accurately converting floating-point to unsigned long long values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl 'float', 'double' or 'long double' to 'unsigned long long' values.
-dnl (This flag should be set for all machines, except for HP-UX machines
-dnl where the maximal number for unsigned long long is 0x7fffffffffffffff
-dnl during conversion.
-dnl
-AC_MSG_CHECKING([if right maximum converting floating-point to unsigned long long values])
-
-AC_CACHE_VAL([hdf5_cv_fp_to_ullong_right_maximum],
-    [AC_TRY_RUN([
-    int main(void)
-    {
-        float  f = 9701917572145405952.00f;
-        double d1 = 9701917572145405952.00L;
-        long double d2 = 9701917572145405952.00L;
-        double d3 = 2e40L;
-        unsigned long long l1 = (unsigned long long)f;
-        unsigned long long l2 = (unsigned long long)d1;
-        unsigned long long l3 = (unsigned long long)d2;
-        unsigned long long l4;
-        unsigned long long l5 = 0x7fffffffffffffffULL;
-        int           ret = 0;
-
-        if(l1 <= l5 || l2 <= l5 || l3 <= l5) 
-            ret = 1;
-
-        l4 = (unsigned long long)d3;
-        if(l4 <= l5)
-            ret = 1;
-
-done:
-        exit(ret);
-    }
-    ], [hdf5_cv_fp_to_ullong_right_maximum=yes], [hdf5_cv_fp_to_ullong_right_maximum=no],)])
-
-if test ${hdf5_cv_fp_to_ullong_right_maximum} = "yes"; then
-  AC_DEFINE([FP_TO_ULLONG_RIGHT_MAXIMUM], [1],
-            [Define if your system has right maximum convert floating-point to unsigned long long values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl 'long double' to 'unsigned int' values.  (This flag should be set for 
-dnl all machines, except for some Intel compilers on some Linux.)
-dnl
-AC_MSG_CHECKING([if correctly converting long double to unsigned int values])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_ldouble_to_uint_accurate=${hdf5_cv_ldouble_to_uint_accurate=no}
-else
-   AC_CACHE_VAL([hdf5_cv_ldouble_to_uint_accurate],
-        [AC_TRY_RUN([
-        int main(void)
-        {
-            long double ld = 2733248032.9183987530L;
-            unsigned int i;
-            int           ret = 0;
-
-            i = (unsigned int)ld;
-            if(i!=2733248032 && i!=2733248031 && i!=2733248033)
-                ret = 1;
-
-    done:
-            exit(ret);
-        }
-        ], [hdf5_cv_ldouble_to_uint_accurate=yes], [hdf5_cv_ldouble_to_uint_accurate=no],)])
-fi
-
-if test ${hdf5_cv_ldouble_to_uint_accurate} = "yes"; then
-  AC_DEFINE([LDOUBLE_TO_UINT_ACCURATE], [1],
-            [Define if your system can convert long double to unsigned int values correctly.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can _compile_
-dnl 'unsigned long long' to 'float' and 'double' typecasts.
-dnl (This flag should be set for all machines, except for under Windows when
-dnl compiled with Visual Studio 6, where the macro value is set in the
-dnl src/H5pubconf.h file)
-dnl
-AC_MSG_CHECKING([if compiling unsigned long long to floating-point typecasts work])
-AC_CACHE_VAL([hdf5_cv_ullong_to_fp_cast_works], [hdf5_cv_ullong_to_fp_cast_works=yes])
-
-if test ${hdf5_cv_ullong_to_fp_cast_works} = "yes"; then
-  AC_DEFINE([ULLONG_TO_FP_CAST_WORKS], [1],
-            [Define if your system can compile unsigned long long to floating-point casts.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can _compile_
-dnl 'long long' to 'float' and 'double' typecasts.
-dnl (This flag should be set for all machines, except for under Windows when
-dnl compiled with Visual Studio 6, where the macro value is set in the
-dnl src/H5pubconf.h file)
-dnl
-AC_MSG_CHECKING([if compiling long long to floating-point typecasts work])
-AC_CACHE_VAL([hdf5_cv_llong_to_fp_cast_works], [hdf5_cv_llong_to_fp_cast_works=yes])
-
-if test ${hdf5_cv_llong_to_fp_cast_works} = "yes"; then
-  AC_DEFINE([LLONG_TO_FP_CAST_WORKS], [1],
-            [Define if your system can compile long long to floating-point casts.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can convert from
-dnl 'unsigned long long' to 'long double' without precision loss.
-dnl (This flag should be set for all machines, except for FreeBSD(sleipnir)
-dnl where the last 2 bytes of mantissa are lost when compiler tries to do 
-dnl the conversion, and Cygwin where compiler doesn't do rounding correctly.)
-dnl
-AC_MSG_CHECKING([if converting unsigned long long to long double with precision])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_ullong_to_ldouble_precision=${hdf5_cv_ullong_to_ldouble_precision=no}
-else
-   AC_CACHE_VAL([hdf5_cv_ullong_to_ldouble_precision],
-        [AC_TRY_RUN([
-        #include <stdlib.h>
-        #include <string.h>
-
-        int main(void)
-        {
-            /* General variables */
-            int endian;
-            int tst_value = 1; 
-            int ret = 0;
-
-            /* For FreeBSD */
-            unsigned long long l = 0xa601e80bda85fcefULL;
-            long double ld;
-            unsigned char *c1, *c2;
-            size_t size;
-
-            /* For Cygwin */
-            unsigned long long l_cyg = 0xfffffffffffffff0ULL;
-            long double ld_cyg;
-            unsigned char *c2_cyg;
-            size_t size_cyg;
-            
-            
-            /* Determine this system's endianess */
-            c1 = (unsigned char*)calloc(1, sizeof(int));
-            memcpy((void*)c1, &tst_value, sizeof(int));
-            if(c1[0]==1)
-                endian = 0;  /* little endian */
-            else 
-                endian = 1;  /* big endian */
-            
-            /* For FreeBSD */     
-            size = sizeof(long double);
-            memset(&ld, 0, size); 
-            ld = (long double)l;
-
-            c2 = (unsigned char*)calloc(1, size);
-            memcpy((void*)c2, &ld, size);
-
-            /* Test if the last 2 bytes of mantissa are lost.  Mainly for FreeBSD on Intel
-             * architecture(sleipnir) where it happens. */        
-            /*if(endian==0 && c2[0]==0 && c2[1]==0)*/ /*little endian*/
-            if(endian==0 && c2[0]==0) { /*little endian*/
-                ret = 1;
-                goto done;
-            }
-
-            /* For Cygwin */
-            size_cyg = sizeof(long double);
-            memset(&ld_cyg, 0, size); 
-            ld_cyg = (long double)l_cyg;
-
-            c2_cyg = (unsigned char*)calloc(1, size_cyg);
-            memcpy((void*)c2_cyg, &ld_cyg, size_cyg);
-
-            /* Test if the last 4 bytes(roughly) of mantissa are rounded up.  Mainly for Cygwin
-             * where the values like 0xffffffffffffffff,  0xfffffffffffffffe, ..., 
-             * 0xfffffffffffff000 ... are rounded up as 0x0000403f8000000000000000 
-             * instead of 0x0000403effffffffffffffff, 0x0000403efffffffffffffffe, ..., 
-             * 0x0000403efffffffffffff000 ...
-             */    
-            if(endian==0 && c2_cyg[0]==0 && c2_cyg[1]==0 && c2_cyg[2]==0 && c2_cyg[3]==0)
-                ret = 1;
-
-    done:
-            if(c1)
-                free(c1);
-            if(c2)
-                free(c2);
-            if(c2_cyg)
-                free(c2_cyg);
-            exit(ret);
-        }
-        ], [hdf5_cv_ullong_to_ldouble_precision=yes], [hdf5_cv_ullong_to_ldouble_precision=no],)])
-fi
-
-if test ${hdf5_cv_ullong_to_ldouble_precision} = "yes"; then
-  AC_DEFINE([ULLONG_TO_LDOUBLE_PRECISION], [1],
-            [Define if your system can convert unsigned long long to long double with correct precision.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can handle overflow converting
-dnl all floating-point to all integer types.
-dnl (This flag should be set for all machines, except for Cray X1 where
-dnl floating exception is generated when the floating-point value is greater
-dnl than the maximal integer value).
-dnl
-AC_MSG_CHECKING([if overflows normally converting floating-point to integer values])
-
-AC_CACHE_VAL([hdf5_cv_fp_to_integer_overflow_works],
-    [AC_TRY_RUN([
-    int main(void)
-    {
-        float  f = 2147483648.0f;
-        int    i;
-
-        i = (int)f;
-
-done:
-        exit(0);
-    }
-    ], [hdf5_cv_fp_to_integer_overflow_works=yes], [hdf5_cv_fp_to_integer_overflow_works=no],)])
-
-if test ${hdf5_cv_fp_to_integer_overflow_works} = "yes"; then
-  AC_DEFINE([FP_TO_INTEGER_OVERFLOW_WORKS], [1],
-            [Define if your system can handle overflow converting floating-point to integer values.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine is using a special algorithm to convert
-dnl 'long double' to '(unsigned) long' values.  (This flag should only be set for 
-dnl the IBM Power6 Linux.  When the bit sequence of long double is 
-dnl 0x4351ccf385ebc8a0bfcc2a3c3d855620, the converted value of (unsigned)long 
-dnl is 0x004733ce17af227f, not the same as the library's conversion to 0x004733ce17af2282.
-dnl The machine's conversion gets the correct value.  We define the macro and disable
-dnl this kind of test until we figure out what algorithm they use.
-dnl
-AC_MSG_CHECKING([if using special algorithm to convert long double to (unsigned) long values])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_ldouble_to_long_special=${hdf5_cv_ldouble_to_long_special=no}
-else
-   AC_CACHE_VAL([hdf5_cv_ldouble_to_long_special],
-        [AC_TRY_RUN([
-        int main(void)
-        {
-            long double         ld = 20041683600089727.779961L;
-            long                ll;
-            unsigned long       ull;
-            unsigned char       s[16];
-            unsigned char       s2[8];
-            int                 ret = 1;
-            
-            if(sizeof(long double) == 16 && sizeof(long) == 8) {
-                /*make sure the long double type has 16 bytes in size and 
-                 * 11 bits of exponent.  If it is,
-                 *the bit sequence should be like below.  It's not 
-                 *a decent way to check but this info isn't available. */   
-                memcpy(s, &ld, 16);
-                if(s[0]==0x43 && s[1]==0x51 && s[2]==0xcc && s[3]==0xf3 &&
-                    s[4]==0x85 && s[5]==0xeb && s[6]==0xc8 && s[7]==0xa0 &&
-                    s[8]==0xbf && s[9]==0xcc && s[10]==0x2a && s[11]==0x3c) {
-
-                    /* Assign the hexadecimal value of long double type. */
-                    s[0]=0x43; s[1]=0x51; s[2]=0xcc; s[3]=0xf3;
-                    s[4]=0x85; s[5]=0xeb; s[6]=0xc8; s[7]=0xa0;
-                    s[8]=0xbf; s[9]=0xcc; s[10]=0x2a; s[11]=0x3c;
-                    s[12]=0x3d; s[13]=0x85; s[14]=0x56; s[15]=0x20;
-
-                    memcpy(&ld, s, 16);
-
-                    ll = (long)ld;
-                    memcpy(s2, &ll, 8);
-
-                    /* The library's algorithm converts it to 0x 00 47 33 ce 17 af 22 82
-                     * and gets wrong value 20041683600089730 on the IBM Power6 Linux.
-                     * But the IBM Power6 Linux converts it to 0x00 47 33 ce 17 af 22 7f
-                     * and gets the correct value 20041683600089727.  It uses some special
-                     * algorithm.  We're going to define the macro and skip the test until
-                     * we can figure out how they do it. */
-                    if(s2[0]==0x00 && s2[1]==0x47 && s2[2]==0x33 && s2[3]==0xce &&
-                       s2[4]==0x17 && s2[5]==0xaf && s2[6]==0x22 && s2[7]==0x7f)
-                        ret = 0;
-
-                    ull = (unsigned long)ld;
-                    memcpy(s2, &ull, 8);
-
-                    /* The unsigned long is the same as signed long. */
-                    if(s2[0]==0x00 && s2[1]==0x47 && s2[2]==0x33 && s2[3]==0xce &&
-                       s2[4]==0x17 && s2[5]==0xaf && s2[6]==0x22 && s2[7]==0x7f)
-                        ret = 0;
-                }    
-            }   
-            
-    done:
-            exit(ret);
-        }
-        ], [hdf5_cv_ldouble_to_long_special=yes], [hdf5_cv_ldouble_to_long_special=no],)])
-fi
-
-if test ${hdf5_cv_ldouble_to_long_special} = "yes"; then
-  AC_DEFINE([LDOUBLE_TO_LONG_SPECIAL], [1],
-            [Define if your system converts long double to (unsigned) long values with special algorithm.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine is using a special algorithm
-dnl to convert some values of '(unsigned) long' to 'long double' values.  
-dnl (This flag should be off for all machines, except for IBM Power6 Linux, 
-dnl when the bit sequences are 003fff..., 007fff..., 00ffff..., 01ffff..., 
-dnl ..., 7fffff..., the compiler uses a unknown algorithm.  We define a 
-dnl macro and skip the test for now until we know about the algorithm.
-dnl
-AC_MSG_CHECKING([if using special algorithm to convert (unsigned) long to long double values])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_long_to_ldouble_special=${hdf5_cv_long_to_ldouble_special=no}
-else
-   AC_CACHE_VAL([hdf5_cv_long_to_ldouble_special],
-        [AC_TRY_RUN([
-        int main(void)
-        {
-            long double         ld;
-            long                ll;
-            unsigned long       ull;
-            unsigned char       s[16];
-            int                 flag=0, ret=1;
-        
-            /*Determine if long double has 16 byte in size, 11 bit exponent, and
-             *the bias is 0x3ff */ 
-            if(sizeof(long double) == 16) { 
-                ld = 1.0L;
-                memcpy(s, &ld, 16);
-                if(s[0]==0x3f && s[1]==0xf0 && s[2]==0x00 && s[3]==0x00 &&
-                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00) 
-                    flag = 1; 
-            }
-             
-            if(flag==1 && sizeof(long)==8) {
-                ll = 0x003fffffffffffffL;
-                ld = (long double)ll;
-                memcpy(s, &ld, 16);
-                /* The library converts the value to 0x434fffffffffffff8000000000000000.
-                 * In decimal it is 18014398509481982.000000, one value short of the original.
-                 * The IBM Power6 Linux converts it to 0x4350000000000000bff0000000000000.
-                 * The value is correct in decimal. It uses some special
-                 * algorithm.  We're going to define the macro and skip the test until
-                 * we can figure out how they do it. */
-                if(s[0]==0x43 && s[1]==0x50 && s[2]==0x00 && s[3]==0x00 &&
-                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00 &&
-                    s[8]==0xbf && s[9]==0xf0 && s[10]==0x00 && s[11]==0x00 &&
-                    s[12]==0x00 && s[13]==0x00 && s[14]==0x00 && s[15]==0x00)
-                    ret = 0;
-            }        
-            if(flag==1 && sizeof(unsigned long)==8) {
-                ull = 0xffffffffffffffffUL;
-                ld = (long double)ull;
-                memcpy(s, &ld, 16);
-                /* Use a different value from signed long to test. The problem is the same
-                 * for both long and unsigned long. The value is 18446744073709551615.
-                 * The library converts the value to 0x43effffffffffffffe000000000000000.
-                 * In decimal it's 18446744073709548544.000000, very different from the original.
-                 * The IBM Power6 Linux converts it to 0x43f0000000000000bff0000000000000.
-                 * The value is correct in decimal. It uses some special
-                 * algorithm.  We're going to define the macro and skip the test until
-                 * we can figure out how they do it. */
-                if(s[0]==0x43 && s[1]==0xf0 && s[2]==0x00 && s[3]==0x00 &&
-                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00 &&
-                    s[8]==0xbf && s[9]==0xf0 && s[10]==0x00 && s[11]==0x00 &&
-                    s[12]==0x00 && s[13]==0x00 && s[14]==0x00 && s[15]==0x00)
-                    ret = 0;
-            }        
-    done:
-            exit(ret);
-        }
-        ], [hdf5_cv_long_to_ldouble_special=yes], [hdf5_cv_long_to_ldouble_special=no],)])
-fi
-
-if test ${hdf5_cv_long_to_ldouble_special} = "yes"; then
-  AC_DEFINE([LONG_TO_LDOUBLE_SPECIAL], [1],
-            [Define if your system can convert (unsigned) long to long double values with special algorithm.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl 'long double' to '(unsigned) long long' values.  (This flag should be set for 
-dnl all machines, except for Mac OS 10.4 and SGI IRIX64 6.5.  When the bit sequence
-dnl of long double is 0x4351ccf385ebc8a0bfcc2a3c..., the values of (unsigned)long long
-dnl start to go wrong on these two machines.  Adjusting it higher to 
-dnl 0x4351ccf385ebc8a0dfcc... or 0x4351ccf385ebc8a0ffcc... will make the converted 
-dnl values wildly wrong.  This test detects this wrong behavior and disable the test.  
-dnl
-AC_MSG_CHECKING([if correctly converting long double to (unsigned) long long values])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_ldouble_to_llong_accurate=${hdf5_cv_ldouble_to_llong_accurate=no}
-else
-   AC_CACHE_VAL([hdf5_cv_ldouble_to_llong_accurate],
-        [AC_TRY_RUN([
-        int main(void)
-        {
-            long double         ld = 20041683600089727.779961L;
-            long long           ll;
-            unsigned long long  ull;
-            unsigned char       s[16];
-            int                 ret = 0;
-            
-            if(sizeof(long double) == 16) {
-                /*make sure the long double type is the same as the failing type 
-                 *which has 16 bytes in size and 11 bits of exponent.  If it is,
-                 *the bit sequence should be like below.  It's not 
-                 *a decent way to check but this info isn't available. */   
-                memcpy(s, &ld, 16);
-                if(s[0]==0x43 && s[1]==0x51 && s[2]==0xcc && s[3]==0xf3 &&
-                    s[4]==0x85 && s[5]==0xeb && s[6]==0xc8 && s[7]==0xa0 &&
-                    s[8]==0xbf && s[9]==0xcc && s[10]==0x2a && s[11]==0x3c) {
-
-                    /*slightly adjust the bit sequence (s[8]=0xdf).  The converted
-                     *values will go wild on Mac OS 10.4 and IRIX64 6.5.*/ 
-                    s[0]=0x43; s[1]=0x51; s[2]=0xcc; s[3]=0xf3;
-                    s[4]=0x85; s[5]=0xeb; s[6]=0xc8; s[7]=0xa0;
-                    s[8]=0xdf; s[9]=0xcc; s[10]=0x2a; s[11]=0x3c;
-                    s[12]=0x3d; s[13]=0x85; s[14]=0x56; s[15]=0x20;
-
-                    memcpy(&ld, s, 16);
-                    ll = (long long)ld;
-                    ull = (unsigned long long)ld;
-                    
-                    if(ll != 20041683600089728 || ull != 20041683600089728)
-                        ret = 1;
-                }    
-            }    
-    done:
-            exit(ret);
-        }
-        ], [hdf5_cv_ldouble_to_llong_accurate=yes], [hdf5_cv_ldouble_to_llong_accurate=no],)])
-fi
-
-if test ${hdf5_cv_ldouble_to_llong_accurate} = "yes"; then
-  AC_DEFINE([LDOUBLE_TO_LLONG_ACCURATE], [1],
-            [Define if your system can convert long double to (unsigned) long long values correctly.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine can accurately convert
-dnl '(unsigned) long long' to 'long double' values.  (This flag should be set for 
-dnl all machines, except for Mac OS 10.4, when the bit sequences are 003fff...,
-dnl 007fff..., 00ffff..., 01ffff..., ..., 7fffff..., the converted values are twice
-dnl as big as they should be. 
-dnl
-AC_MSG_CHECKING([if correctly converting (unsigned) long long to long double values])
-
-if test ${ac_cv_sizeof_long_double} = 0; then
-   hdf5_cv_llong_to_ldouble_correct=${hdf5_cv_llong_to_ldouble_correct=no}
-else
-   AC_CACHE_VAL([hdf5_cv_llong_to_ldouble_correct],
-        [AC_TRY_RUN([
-        int main(void)
-        {
-            long double         ld;
-            long long           ll;
-            unsigned long long  ull;
-            unsigned char       s[16];
-            int                 flag=0, ret=0;
-        
-            /*Determine if long double has 16 byte in size, 11 bit exponent, and
-             *the bias is 0x3ff */ 
-            if(sizeof(long double) == 16) { 
-                ld = 1.0L;
-                memcpy(s, &ld, 16);
-                if(s[0]==0x3f && s[1]==0xf0 && s[2]==0x00 && s[3]==0x00 &&
-                    s[4]==0x00 && s[5]==0x00 && s[6]==0x00 && s[7]==0x00) 
-                    flag = 1; 
-            }
-             
-            if(flag==1 && sizeof(long long)==8) {
-                ll = 0x01ffffffffffffffLL;
-                ld = (long double)ll;
-                memcpy(s, &ld, 16);
-                /*Check if the bit sequence is as supposed to be*/
-                if(s[0]!=0x43 || s[1]!=0x7f || s[2]!=0xff || s[3]!=0xff ||
-                    s[4]!=0xff || s[5]!=0xff || s[6]!=0xff || s[7]!=0xff ||
-                    s[8]!=0xf0 || s[9]!=0x00 || s[10]!=0x00 || s[11]!=0x00)
-                    ret = 1;
-            }        
-            if(flag==1 && sizeof(unsigned long long)==8) {
-                ull = 0x01ffffffffffffffULL;
-                ld = (long double)ull;
-                memcpy(s, &ld, 16);
-                if(s[0]!=0x43 || s[1]!=0x7f || s[2]!=0xff || s[3]!=0xff ||
-                    s[4]!=0xff || s[5]!=0xff || s[6]!=0xff || s[7]!=0xff ||
-                    s[8]!=0xf0 || s[9]!=0x00 || s[10]!=0x00 || s[11]!=0x00)
-                    ret = 1;
-            }        
-    done:
-            exit(ret);
-        }
-        ], [hdf5_cv_llong_to_ldouble_correct=yes], [hdf5_cv_llong_to_ldouble_correct=no],)])
-fi
-
-if test ${hdf5_cv_llong_to_ldouble_correct} = "yes"; then
-  AC_DEFINE([LLONG_TO_LDOUBLE_CORRECT], [1],
-            [Define if your system can convert (unsigned) long long to long double values correctly.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set the flag to indicate that the machine generates bad code
-dnl for the H5V_log2_gen() routine in src/H5Vprivate.h
-dnl (This flag should be set to no for all machines, except for SGI IRIX64,
-dnl where the cache value is set to yes in it's config file)
-dnl
-AC_MSG_CHECKING([if bad code for log2 routine is generated])
-AC_CACHE_VAL([hdf5_cv_bad_log2_code_generated], [hdf5_cv_bad_log2_code_generated=no])
-
-if test ${hdf5_cv_bad_log2_code_generated} = "yes"; then
-  AC_DEFINE([BAD_LOG2_CODE_GENERATED], [1],
-            [Define if your system generates wrong code for log2 routine.])
-  AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Set some variables for general configuration information to be saved
-dnl and installed with the libraries.
-dnl
-
-dnl HDF5 version from the first line of the README.txt file.
-H5_VERSION="`cut -d' ' -f3 $srcdir/README.txt | head -1`"
-AC_SUBST([H5_VERSION])
-
-dnl Configuration date
-AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date`"
-
-dnl User doing the configuration
-AC_SUBST([CONFIG_USER]) CONFIG_USER="`whoami`@`hostname`"
-if test -n "$ORGANIZATION"; then
-  CONFIG_USER="$CONFIG_USER at $ORGANIZATION"
-fi
-
-dnl Configuration mode (production, development, profile, etc) saved above.
-AC_SUBST([CONFIG_MODE])
-
-dnl Byte sex from the AC_C_BIGENDIAN macro.
-AC_SUBST([BYTESEX])
-if test "X$ac_cv_c_bigendian" = "Xyes"; then
-  BYTESEX="big-endian"
-else
-  BYTESEX="little-endian"
-fi
-
-
-if test "X$ac_cv_c_bigendian" = "Xyes"; then
-  WORDS_BIGENDIAN="yes"
-else
-  WORDS_BIGENDIAN="no"
-fi
-AC_SUBST([WORDS_BIGENDIAN])
-
-dnl Parallel support? (set above except empty if none)
-PARALLEL=${PARALLEL:-no}
-
-dnl Compiler with version information. This consists of the full path
-dnl name of the compiler and the reported version number.
-AC_SUBST([CC_VERSION])
-dnl Strip anything that looks like a flag off of $CC
-CC_NOFLAGS=`echo $CC | sed 's/ -.*//'`
-
-if `echo $CC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
-  CC_VERSION="$CC"
-else
-  CC_VERSION="$CC";
-  for x in `echo $PATH | sed -e 's/:/ /g'`; do
-    if test -x $x/$CC_NOFLAGS; then
-      CC_VERSION="$x/$CC"
-      break
-    fi
-  done
-fi
-if test -n "$cc_version_info"; then
-  CC_VERSION="$CC_VERSION ( $cc_version_info)"
-fi
-
-AC_SUBST([FC_VERSION])
-dnl Strip anything that looks like a flag off of $CC
-FC_NOFLAGS=`echo $FC | sed 's/ -.*//'`
-
-if `echo $FC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
-  FC_VERSION="$FC"
-else
-  FC_VERSION="$FC";
-  for x in `echo $PATH | sed -e 's/:/ /g'`; do
-    if test -x $x/$FC_NOFLAGS; then
-      FC_VERSION="$x/$FC"
-      break
-    fi
-  done
-fi
-if test -n "$fc_version_info"; then
-  FC_VERSION="$FC_VERSION ( $fc_version_info)"
-fi
-
-AC_SUBST([CXX_VERSION])
-dnl Strip anything that looks like a flag off of $CC
-CXX_NOFLAGS=`echo $CXX | sed 's/ -.*//'`
-
-if `echo $CXX_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
-  CXX_VERSION="$CXX"
-else
-  CXX_VERSION="$FC";
-  for x in `echo $PATH | sed -e 's/:/ /g'`; do
-    if test -x $x/$CXX_NOFLAGS; then
-      CXX_VERSION="$x/$CXX"
-      break
-    fi
-  done
-fi
-if test -n "$cxx_version_info"; then
-  CXX_VERSION="$CXX_VERSION ( $cxx_version_info)"
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Where is the root of the source tree. Give an absolute address so
-dnl we can find it no matter which directory of the distribution is our
-dnl current directory. The built-in pwd fails on some systems, but the
-dnl /bin/pwd version works OK.
-dnl
-if test -x /bin/pwd; then
-  pwd=/bin/pwd
-else
-  pwd=pwd
-fi
-AC_SUBST([ROOT]) ROOT="`$pwd`"
-
-dnl ----------------------------------------------------------------------
-dnl Move any compiler-specific libraries into the main LIBS varaible.
-dnl 
-LIBS="$DEFAULT_LIBS $LIBS"
-
-dnl ----------------------------------------------------------------------
-dnl Determine the runtime libraries we may need to include in the
-dnl libtools command so that executables will find the correct dynamic
-dnl libraries.
-dnl 
-AC_SUBST([DYNAMIC_DIRS]) DYNAMIC_DIRS=""
-
-if test -n "$AM_LDFLAGS $LDFLAGS"; then
-  for d in $AM_LDFLAGS $LDFLAGS ; do
-    case "$d" in
-      -L*)
-        d="`echo $d | sed -e 's/-L//g'`"
-        case "$d" in
-          .*)
-            dnl If the path isn't absolute, make it so by
-            dnl prepending the ROOT directory to it.
-            d=${ROOT}/$d
-            ;;
-        esac
-        DYNAMIC_DIRS="-R${d} $DYNAMIC_DIRS"
-        ;;
-    esac
-  done
-fi
-
-if test -n "$AM_CPPFLAGS"; then
-  TEMP_CPPFLAGS=""
-  for d in $AM_CPPFLAGS ; do
-    case "$d" in
-      -I.*)
-        dnl If the path isn't absolute, make it so by prepending
-        dnl the ROOT directory to it.
-        d="`echo $d | sed -e 's/-I//g'`"
-        d="-I${ROOT}/${d}"
-        ;;
-    esac
-    TEMP_CPPFLAGS="$d $TEMP_CPPFLAGS"
-  done
-  AM_CPPFLAGS=$TEMP_CPPFLAGS
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Check if they would like the High Level library  compiled
-dnl
-
-AC_SUBST(HL) HL=""
-# name of fortran folder inside "hl", if FORTRAN compile is requested
-AC_SUBST(HL_FOR) HL_FOR=""
-AC_MSG_CHECKING([if high level library is enabled])
-AC_ARG_ENABLE([hl],
-     [AC_HELP_STRING([--enable-hl],
-                     [Enable the high level library [default=yes]])],
-     [HDF5_HL=$enableval],
-     [HDF5_HL=yes])
-
-if test "X$HDF5_HL" = "Xyes"; then
- echo "yes"
- HL="hl"
- AC_DEFINE([INCLUDE_HL], [1],
-           [Define if HDF5's high-level library headers should be included in hdf5.h])
-else
- echo "no"
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Some programs shouldn't be built by default (e.g., programs to generate
-dnl data files used by tests, some optional tests).
-dnl Check if they want such programs built anyway.
-dnl
-AC_MSG_CHECKING([additional programs should be built])
-AC_ARG_ENABLE([build-all],
-     [AC_HELP_STRING([--enable-build-all],
-                     [Build helper programs that only developers should need [default=no]])],
-     [BUILD_ALL=$enableval],
-     [BUILD_ALL=no])
-
-if test "X$BUILD_ALL" = "Xyes"; then
- echo "yes"
-else
- echo "no"
-fi
-AM_CONDITIONAL([BUILD_ALL_CONDITIONAL], [test "X$BUILD_ALL" = "Xyes"])
-
-dnl ----------------------------------------------------------------------
-dnl Enable deprecated public API symbols
-dnl
-AC_SUBST([DEPRECATED_SYMBOLS])
-AC_MSG_CHECKING([if deprecated public symbols are available]);
-AC_ARG_ENABLE([deprecated-symbols],
-              [AC_HELP_STRING([--enable-deprecated-symbols],
-                     [Enable deprecated public API symbols [default=yes]])],
-             [DEPREC_SYMBOLS=$enableval],
-             [DEPREC_SYMBOLS=yes])
-
-case "X-$DEPREC_SYMBOLS" in
-  X-yes)
-    AC_MSG_RESULT([yes])
-    DEPRECATED_SYMBOLS=yes
-    ;;
-  X-no|*)
-    AC_MSG_RESULT([no])
-    DEPRECATED_SYMBOLS=no
-    AC_DEFINE([NO_DEPRECATED_SYMBOLS], [1],
-              [Define if deprecated public API symbols are disabled])
-    ;;
-esac
-
-dnl --------------------------------------------------------------------------
-dnl Which version of the public APIs should the 'base' versioned symbols use?
-dnl
-
-AC_SUBST([DEFAULT_API_VERSION])
-AC_MSG_CHECKING([which version of public symbols to use by default])
-AC_ARG_WITH([default-api-version],
-            [AC_HELP_STRING([--with-default-api-version=(v16|v18)],
-                            [Specify default release version of public symbols
-                             [default=v18]])],,
-            withval=v18)
-
-if test "X$withval" = "Xv16"; then
-    AC_MSG_RESULT([v16])
-    DEFAULT_API_VERSION=v16
-    AC_DEFINE([USE_16_API_DEFAULT], [1],
-              [Define using v1.6 public API symbols by default])
-elif test "X$withval" = "Xv18"; then
-    AC_MSG_RESULT([v18])
-    DEFAULT_API_VERSION=v18
-else
-    AC_MSG_ERROR([invalid version of public symbols given])
-fi
-
-dnl It's an error to try to disable deprecated public API symbols while
-dnl choosing an older version of the public API as the default. However,
-dnl if the user insists on doing this via the --enable-unsupported configure
-dnl flag, we'll let them.
-if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then
-  if test "X${DEFAULT_API_VERSION}" != "Xv18" -a "X${DEPRECATED_SYMBOLS}" = "Xno" ; then
-    AC_MSG_ERROR([Removing old public API symbols not allowed when using them as default public API symbols. Use --enable-unsupported to override this error.])
-  fi
-fi
-
-dnl ----------------------------------------------------------------------
-dnl Enable strict file format checks
-dnl
-AC_SUBST([STRICT_FORMAT_CHECKS])
-AC_MSG_CHECKING([Whether to perform strict file format checks]);
-AC_ARG_ENABLE([strict-format-checks],
-              [AC_HELP_STRING([--enable-strict-format-checks],
-                     [Enable strict file format checks, default=yes if
-                        debug flag is enabled, no otherwise])],
-             [STRICT_CHECKS=$enableval])
-
-dnl Default to yes if debug is enabled
-if test "X-$STRICT_CHECKS" = X- ; then
-  if test -z "$DEBUG_PKG" ; then
-    STRICT_CHECKS=no
-  else
-    STRICT_CHECKS=yes
-  fi
-fi
-
-case "X-$STRICT_CHECKS" in
-  X-yes)
-    AC_MSG_RESULT([yes])
-    STRICT_FORMAT_CHECKS=yes
-    AC_DEFINE([STRICT_FORMAT_CHECKS], [1],
-              [Define if strict file format checks are enabled])
-    ;;
-  X-no|*)
-    AC_MSG_RESULT([no])
-    STRICT_FORMAT_CHECKS=no
-    ;;
-esac
-
-
-dnl ----------------------------------------------------------------------
-dnl Enable embedded library information
-dnl
-AC_MSG_CHECKING([Whether to have library information embedded in the executables])
-AC_ARG_ENABLE([embedded-libinfo],
-    [AC_HELP_STRING([--enable-embedded-libinfo],
-	[Enable embedded library information [default=yes]])],
-	[enable_embedded_libinfo=$enableval],
-	[enable_embedded_libinfo=yes])
-
-   if test "${enable_embedded_libinfo}" = "yes"; then
-      AC_MSG_RESULT([yes])
-      AC_DEFINE([HAVE_EMBEDDED_LIBINFO], [1],
-                [Define if library information should be embedded in the executables])
-   else
-      AC_MSG_RESULT([no])
-    fi
-
-
-dnl ----------------------------------------------------------------------
-dnl Check if pointer alignments are enforced
-dnl
-AC_MSG_CHECKING([if alignment restrictions are strictly enforced])
-AC_RUN_IFELSE([
-    AC_LANG_PROGRAM([
-        #include <stdlib.h>
-        #include <string.h>
-
-        typedef struct {
-            size_t len;
-            void *p;
-        } hvl_t;
-        ], [
-        char *chp = "beefs";
-        char **chpp = malloc (2 * sizeof (char *));
-        char **chpp2;
-        hvl_t vl = { 12345, (void *) chp };
-        hvl_t *vlp;
-        hvl_t *vlp2;
-
-        memcpy ((void *) ((char *) chpp + 1), &chp, sizeof (char *));
-        chpp2 = (char **) ((char *) chpp + 1);
-        if (strcmp (*chpp2, chp)) {
-            free (chpp);
-            return 1;
-        }
-        free (chpp);
-
-        vlp = malloc (2 * sizeof (hvl_t));
-        memcpy ((void *) ((char *) vlp + 1), &vl, sizeof (hvl_t));
-        vlp2 = (hvl_t *) ((char *) vlp + 1);
-        if (vlp2->len != vl.len || vlp2->p != vl.p) {
-            free (vlp);
-            return 1;
-        }
-        free (vlp);
-    ])
-    ], [
-    AC_DEFINE([NO_ALIGNMENT_RESTRICTIONS], [1], [Define if we can violate pointer alignment restrictions])
-    AC_MSG_RESULT([no])
-    ], [
-    AC_MSG_RESULT([yes])
-    ], [
-    AC_MSG_RESULT([unknown, assuming yes])
-    ])
-
-
-dnl ----------------------------------------------------------------------
-dnl Restore user's CFLAGS.
-CFLAGS="$saved_user_CFLAGS"
-FCFLAGS="$saved_user_FCFLAGS"
-CXXFLAGS="$saved_user_CXXFLAGS"
-CPPFLAGS="$saved_user_CPPFLAGS"
-LDFLAGS="$saved_user_LDFLAGS"
-
-
-dnl ----------------------------------------------------------------------
-dnl Create automake conditionals to tell automake makefiles which directories
-dnl need to be compiled
-
-AM_CONDITIONAL([BUILD_CXX_CONDITIONAL], [test "X$HDF_CXX" = "Xyes"])
-AM_CONDITIONAL([BUILD_PARALLEL_CONDITIONAL], [test -n "$TESTPARALLEL"])
-AM_CONDITIONAL([BUILD_FORTRAN_CONDITIONAL], [test "X$HDF_FORTRAN" = "Xyes"])
-AM_CONDITIONAL([BUILD_HDF5_HL_CONDITIONAL], [test "X$HDF5_HL" = "Xyes"])
-
-
-dnl ----------------------------------------------------------------------
-dnl Build the Makefiles.
-dnl
-
-dnl The directory search list
-AC_SUBST([SEARCH]) SEARCH='$(srcdir) $(top_builddir)/src $(top_srcdir)/src'
-cmd='echo $SEARCH |sed "s/ /'$SEARCH_SEP'/g"'
-SEARCH="$SEARCH_RULE`eval $cmd`"
-export SEARCH
-
-dnl We don't need to say when we're entering directories if we're using
-dnl GNU make because make does it for us.
-if test "X$GMAKE" = "Xyes"; then
-  AC_SUBST([SETX]) SETX=":"
-else
-  AC_SUBST([SETX]) SETX="set -x"
-fi
-
-dnl Some cleanup stuff
-rm -f conftest conftest.o conftest.c dummy.o *.mod
-
-dnl Build config.status, touch the stamp files, and build all the Makefiles.
-dnl The order is such that the first `make' does not need to update any
-dnl configuration information. See config/commence.in for the order in which
-dnl things need to be done.
-
-# First the stamp1 file for H5config.h.in
-mkdir ./config >/dev/null 2>&1
-touch ./config/stamp1
-
-# Then the config.status file (but not makefiles)
-saved_no_create=$no_create
-no_create=yes
-
-PARALLEL_MAKE=""
-FORTRAN_PARALLEL_MAKE=""
-
-if test -n "$TESTPARALLEL"; then
-  PARALLEL_MAKE="$TESTPARALLEL/Makefile $TESTPARALLEL/testph5.sh"
-
-  if test "X$HDF_FORTRAN" = "Xyes"; then
-    FORTRAN_PARALLEL_MAKE=fortran/$TESTPARALLEL/Makefile
-  fi
-fi
-
-AC_CONFIG_FILES([src/libhdf5.settings
-                 Makefile
-                 src/Makefile
-                 test/Makefile
-                 test/testcheck_version.sh
-                 test/testerror.sh
-                 test/H5srcdir_str.h
-                 test/testlibinfo.sh
-                 test/testlinks_env.sh
-                 testpar/Makefile
-                 testpar/testph5.sh
-                 perform/Makefile
-                 tools/Makefile
-                 tools/h5dump/Makefile
-                 tools/h5dump/testh5dump.sh
-                 tools/h5dump/testh5dumpxml.sh
-                 tools/h5ls/testh5ls.sh
-                 tools/h5import/Makefile
-                 tools/h5diff/Makefile
-                 tools/h5jam/Makefile
-                 tools/h5jam/testh5jam.sh
-                 tools/h5repack/Makefile
-                 tools/h5repack/h5repack.sh
-                 tools/h5ls/Makefile
-                 tools/h5copy/Makefile
-                 tools/lib/Makefile
-                 tools/misc/Makefile
-                 tools/misc/h5cc
-                 tools/misc/testh5repart.sh
-                 tools/h5stat/testh5stat.sh
-                 tools/h5stat/Makefile
-                 examples/Makefile
-                 examples/run-c-ex.sh
-                 examples/testh5cc.sh
-                 c++/Makefile
-                 c++/src/Makefile
-                 c++/src/h5c++
-                 c++/test/Makefile
-                 c++/test/H5srcdir_str.h
-                 c++/examples/Makefile
-                 c++/examples/run-c++-ex.sh
-                 c++/examples/testh5c++.sh
-                 fortran/Makefile
-                 fortran/src/h5fc
-                 fortran/src/Makefile
-                 fortran/test/Makefile
-                 fortran/testpar/Makefile
-                 fortran/examples/Makefile
-                 fortran/examples/run-fortran-ex.sh
-                 fortran/examples/testh5fc.sh
-                 hl/Makefile
-                 hl/src/Makefile
-                 hl/test/Makefile
-                 hl/test/H5srcdir_str.h
-                 hl/tools/Makefile
-                 hl/tools/gif2h5/Makefile
-                 hl/examples/Makefile
-                 hl/examples/run-hlc-ex.sh
-                 hl/c++/Makefile
-                 hl/c++/src/Makefile
-                 hl/c++/test/Makefile
-                 hl/c++/examples/Makefile
-                 hl/c++/examples/run-hlc++-ex.sh
-                 hl/fortran/Makefile
-                 hl/fortran/src/Makefile
-                 hl/fortran/test/Makefile
-                 hl/fortran/examples/Makefile
-                 hl/fortran/examples/run-hlfortran-ex.sh])
-
-AC_OUTPUT
-LT_OUTPUT
-no_create=$saved_no_create
-
-# Then the stamp2 file for H5config.h
-touch ./config/stamp2
-
-# Finally the makefiles
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-dnl Post processing to patch up some deficiencies in libtool
-case $host_os in
-  linux* | freebsd* )
-    # If gcc is not used, need to set $wl to use "-Wl,"
-    if $CC -v 2>&1 | grep '^gcc' > /dev/null ; then
-      : using gcc
-    else
-      echo 'fixing $wl in' $ofile
-ed - $ofile <<EOF 2> /dev/null
-g/^wl=""/s//wl="-Wl,"/
-w
-q
-EOF
-    fi
-    ;;
-esac
-
-dnl Are we compiling static libraries, shared libraries, or both?  This
-dnl is only used for the libhdf5.settings file. We can't just look at
-dnl $enable_static and $enable_shared because if they're yes the ltconfig
-dnl might have decided that one or the other is simply not possible.
-dnl Therefore we have to ask the generated `libtool' shell script
-dnl which 'features' it has enabled.
-if (./libtool --features | grep '^enable shared libraries' > /dev/null); then
-  enable_shared=yes
-else
-  enable_shared=no
-fi
-
-if (./libtool --features | grep '^enable static libraries' > /dev/null); then
-  enable_static=yes
-else
-  enable_static=no
-fi
-
-if test "X$enable_static" = "Xyes" && test "X$enable_shared" = "Xyes"; then
-  STATIC_SHARED="static, shared"
-elif test "X$enable_static" = "Xyes"; then
-  STATIC_SHARED="static"
-elif test "X$enable_shared" = "Xyes"; then
-  STATIC_SHARED="shared"
-else
-  STATIC_SHARED="none"
-fi
-
-chmod 755 tools/misc/h5cc
-
-if test "X$HDF_FORTRAN" = "Xyes"; then
-  chmod 755 fortran/src/h5fc
-fi
-
-if test "X$HDF_CXX" = "Xyes"; then
-  chmod 755 c++/src/h5c++
-fi
-
-dnl We don't want inline defined for C++ compilers
-dnl Don't worry about the C++ ifdef wrappers in the H5pubconf file, since
-dnl 'H5_inline' isn't a C++ keyword.
-cat >> src/H5config.h <<EOF
-
-#if defined(__cplusplus) && defined(inline)
-#undef inline
-#endif
-EOF
-
-dnl show the configure settings
-cat src/libhdf5.settings
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 56206a5..b23c6f8 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_EXAMPLES)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
 SET (examples
diff --git a/examples/Makefile.am b/examples/Makefile.am
index a35d8ca..58f50e7 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -22,14 +22,14 @@
 include $(top_srcdir)/config/commence.am
 
 if BUILD_PARALLEL_CONDITIONAL
-  TEST_PROG_PARA = ph5example
+  EXAMPLE_PROG_PARA = ph5example
 endif
 
 # Example programs.
 # Don't tell automake about them, because if it knew they were programs,
 # it would try to compile them instead of using the h5cc script.
 # Use the boilerplate in config/examples.am instead.
-TEST_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound   \
+EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound   \
            h5_group h5_select h5_attribute h5_mount h5_reference h5_drivers \
            h5_ref2reg h5_extlink h5_elink_unix2win h5_shared_mesg
 TEST_SCRIPT=testh5cc.sh
diff --git a/examples/Makefile.in b/examples/Makefile.in
index e5393b2..04c010d 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # built using h5cc (or h5fc, etc.) instead of the standard compilers.
 # This creates some extra work for us.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,31 +72,45 @@ build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/run-c-ex.sh.in $(srcdir)/testh5cc.sh.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/examples.am
-TESTS =
+TESTS = $(TEST_SCRIPT)
 subdir = examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES = run-c-ex.sh testh5cc.sh
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -98,12 +128,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -361,13 +388,13 @@ TRACE = perl $(top_srcdir)/bin/trace
 # .chklog files are output from those tests.
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog $(EXTLINK_DIRS) *.h5
- at BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_PROG_PARA = ph5example
+ at BUILD_PARALLEL_CONDITIONAL_TRUE@EXAMPLE_PROG_PARA = ph5example
 
 # Example programs.
 # Don't tell automake about them, because if it knew they were programs,
 # it would try to compile them instead of using the h5cc script.
 # Use the boilerplate in config/examples.am instead.
-TEST_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound   \
+EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound   \
            h5_group h5_select h5_attribute h5_mount h5_reference h5_drivers \
            h5_ref2reg h5_extlink h5_elink_unix2win h5_shared_mesg
 
@@ -396,12 +423,11 @@ EXAMPLETOPDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES = *.raw *.meta *.o
-CLEANFILES = $(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -414,6 +440,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -442,6 +472,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -467,6 +498,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -513,10 +546,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -678,8 +716,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
@@ -728,7 +766,7 @@ installcheck-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -754,7 +792,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -778,7 +816,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -788,7 +826,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -878,7 +916,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -908,7 +946,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/examples/h5_attribute.c b/examples/h5_attribute.c
index 646b395..0ea0153 100644
--- a/examples/h5_attribute.c
+++ b/examples/h5_attribute.c
@@ -66,7 +66,6 @@ main (void)
    unsigned i, j;              /* Counters */
    char    string_out[80];     /* Buffer to read string attribute back */
    int     point_out;          /* Buffer to read scalar attribute back */
-   int     num_attr;           /* Number of attributes */
 
    /*
     * Data initialization.
diff --git a/examples/testh5cc.sh.in b/examples/testh5cc.sh.in
index 6213a29..b5f33b5 100644
--- a/examples/testh5cc.sh.in
+++ b/examples/testh5cc.sh.in
@@ -23,6 +23,8 @@
 #	Added version compatibility tests.
 #
 
+srcdir=@srcdir@
+
 # Initializations
 TESTNAME=h5cc
 EXIT_SUCCESS=0
@@ -54,11 +56,6 @@ H5_USE_16_API_DEFAULT=`grep '#define H5_USE_16_API_DEFAULT ' ../src/H5pubconf.h`
 myos=`uname -s`
 myhostnama=`uname -n`
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # Generate some source files and library for tests.
 suffix=c		# source file suffix
 hdf5main=${H5TOOL}_hdf5main.$suffix
diff --git a/fortran/Makefile.in b/fortran/Makefile.in
index 9f006f0..806eb30 100644
--- a/fortran/Makefile.in
+++ b/fortran/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # Top-level HDF5-Fortran Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,24 +71,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = fortran
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -82,6 +105,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -89,8 +117,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -117,7 +147,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -135,12 +165,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -417,6 +444,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -445,6 +476,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -462,12 +494,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -477,7 +509,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -491,37 +527,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -530,6 +535,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -593,6 +602,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -628,13 +651,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -670,10 +690,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -753,22 +778,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installcheck-local installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installcheck-local installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -802,7 +828,7 @@ check-clean ::
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -828,7 +854,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -852,7 +878,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -862,7 +888,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -952,7 +978,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -982,7 +1008,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/fortran/examples/Makefile.am b/fortran/examples/Makefile.am
index 7465b98..4fb4180 100644
--- a/fortran/examples/Makefile.am
+++ b/fortran/examples/Makefile.am
@@ -23,7 +23,7 @@ include $(top_srcdir)/config/commence.am
 
 # Compile parallel fortran examples only if parallel is enabled
 if BUILD_PARALLEL_CONDITIONAL
-   TEST_PROG_PARA=ph5example
+   EXAMPLE_PROG_PARA=ph5example
 endif
 
 # These are the programs that 'make all' or 'make tests' will build and
@@ -32,7 +32,7 @@ endif
 # We don't tell automake about these programs so that it doesn't try to
 # compile them with the regular fortran compiler.
 
-TEST_PROG=dsetexample fileexample rwdsetexample attrexample groupexample \
+EXAMPLE_PROG=dsetexample fileexample rwdsetexample attrexample groupexample \
      grpsexample grpdsetexample hyperslab selectele grpit refobjexample  \
      refregexample mountexample compound
 
@@ -46,7 +46,7 @@ INSTALL_SCRIPT_FILES = run-fortran-ex.sh
 
 # Add attention tests for Fortran 2003 features
 if FORTRAN_2003_CONDITIONAL_F
-  TEST_PROG +=  rwdset_fortran2003 nested_derived_type \
+  EXAMPLE_PROG +=  rwdset_fortran2003 nested_derived_type \
       compound_fortran2003 compound_complex_fortran2003
   INSTALL_FILES +=  rwdset_fortran2003.f90 nested_derived_type.f90 \
       compound_fortran2003.f90 compound_complex_fortran2003.f90
diff --git a/fortran/examples/Makefile.in b/fortran/examples/Makefile.in
index 5238a5a..06c2632 100644
--- a/fortran/examples/Makefile.in
+++ b/fortran/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # built using h5cc (or h5fc, etc.) instead of the standard compilers.
 # This creates some extra work for us.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,6 +72,7 @@ build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/run-fortran-ex.sh.in $(srcdir)/testh5fc.sh.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/examples.am
@@ -67,28 +84,41 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 @FORTRAN_2003_CONDITIONAL_F_TRUE at am__append_2 = rwdset_fortran2003.f90 nested_derived_type.f90 \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@      compound_fortran2003.f90 compound_complex_fortran2003.f90
 
-TESTS =
+TESTS = $(TEST_SCRIPT)
 subdir = fortran/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES = run-fortran-ex.sh testh5fc.sh
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -106,12 +136,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -371,14 +398,14 @@ TRACE = perl $(top_srcdir)/bin/trace
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 
 # Compile parallel fortran examples only if parallel is enabled
- at BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_PROG_PARA = ph5example
+ at BUILD_PARALLEL_CONDITIONAL_TRUE@EXAMPLE_PROG_PARA = ph5example
 
 # These are the programs that 'make all' or 'make tests' will build and
 # that 'make check' will run.  List them in the order in which they should
 # be run.
 # We don't tell automake about these programs so that it doesn't try to
 # compile them with the regular fortran compiler.
-TEST_PROG = dsetexample fileexample rwdsetexample attrexample \
+EXAMPLE_PROG = dsetexample fileexample rwdsetexample attrexample \
 	groupexample grpsexample grpdsetexample hyperslab selectele \
 	grpit refobjexample refregexample mountexample compound \
 	$(am__append_1)
@@ -401,12 +428,11 @@ EXAMPLEDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/fortran
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES = *.raw *.meta *.o
-CLEANFILES = $(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -419,6 +445,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -447,6 +477,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -472,6 +503,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -518,10 +551,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -686,8 +724,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
@@ -736,7 +774,7 @@ installcheck-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -762,7 +800,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -786,7 +824,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -796,7 +834,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -886,7 +924,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -916,7 +954,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/fortran/examples/testh5fc.sh.in b/fortran/examples/testh5fc.sh.in
index 234d4e2..cd3b86e 100644
--- a/fortran/examples/testh5fc.sh.in
+++ b/fortran/examples/testh5fc.sh.in
@@ -19,6 +19,8 @@
 # Modification:
 #
 
+srcdir=@srcdir@
+
 # Initializations
 TESTNAME=h5fc
 EXIT_SUCCESS=0
@@ -46,11 +48,6 @@ verbose=yes
 myos=`uname -s`
 myhostnama=`uname -n`
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # Generate some source files and library for tests.
 suffix=f90		# source file suffix
 hdf5main=${H5TOOL}_hdf5main.$suffix
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 3d1c127..25e14ba 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -84,9 +84,6 @@ ADD_CUSTOM_COMMAND (
 # f90CStub lib
 #-----------------------------------------------------------------------------
 SET (f90CStub_C_SRCS
-    # generated files
-    ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
-
     # normal distribution
     ${HDF5_F90_SRC_SOURCE_DIR}/H5f90kit.c
     ${HDF5_F90_SRC_SOURCE_DIR}/H5_f.c
@@ -114,11 +111,17 @@ ENDIF (H5_HAVE_PARALLEL)
 
 SET_SOURCE_FILES_PROPERTIES (${f90CStub_C_SRCS} PROPERTIES LANGUAGE C)
 
-ADD_LIBRARY (${HDF5_F90_C_LIB_TARGET} ${LIB_TYPE} ${f90CStub_C_SRCS})
+SET (f90CStub_C_HDRS
+    # generated files
+    ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
+)
+
+ADD_LIBRARY (${HDF5_F90_C_LIB_TARGET} ${LIB_TYPE} ${f90CStub_C_SRCS} ${f90CStub_C_HDRS})
 TARGET_LINK_LIBRARIES (${HDF5_F90_C_LIB_TARGET} ${HDF5_LIB_TARGET} ${LINK_LIBS})
 SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_F90_C_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (${HDF5_F90_C_LIB_TARGET} ${HDF5_F90_C_LIB_NAME} ${LIB_TYPE})
 SET_TARGET_PROPERTIES (${HDF5_F90_C_LIB_TARGET} PROPERTIES FOLDER libraries/fortran)
+SET_TARGET_PROPERTIES (${HDF5_F90_C_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C)
 
 #-----------------------------------------------------------------------------
 # Fortran 2003 standard
@@ -267,6 +270,10 @@ ENDIF (WIN32 AND NOT CYGWIN)
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_F90_C_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} fortlibraries)
+  #INSTALL_TARGET_PDB (${HDF5_F90_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} fortlibraries)
+
   INSTALL (
       TARGETS
           ${HDF5_F90_C_LIB_TARGET}
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index e1aa98e..ab7adf7 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -2401,16 +2401,6 @@ nh5dread_f_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_space_id,
   hid_t c_xfer_prp;
   herr_t status;
 
-/*   int i, j; */
-/*   typedef struct { */
-/*     int x; */
-/*     float y; */
-/*   } r_dual_c; */
-
-/*   r_dual_c *name=buf; */
-
-/*   r_dual_c access[4][4]; */
-
   c_dset_id       = (hid_t)*dset_id;
   c_mem_type_id   = (hid_t)*mem_type_id;
   c_mem_space_id  = (hid_t)*mem_space_id;
@@ -2419,22 +2409,10 @@ nh5dread_f_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_space_id,
   /*
    * Call H5Dread function.
    */
-
-/*   printf("%i %i %i %i %i \n",c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp); */
-
   status = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf);
   if ( status < 0 ) return ret_value;
 
-/*   for ( i=0; i<4; ++i) */
-/*     for (j = 0; j<4; ++j) { */
-/*       access[i][j] = name[i*4+j]; */
-/*     /\* access[i].x = access[i].x + 1; *\/ */
-/*       printf("x = %i \n", access[i][j].x); */
-/*       printf("y = %f \n", access[i][j].y); */
-/*      } */
-
-
-  ret_value = 1;
+  ret_value = 0;
   return ret_value;
 }
 /****if* H5Df/nh5dget_access_plist_c
diff --git a/fortran/src/H5FDmpiof.c b/fortran/src/H5FDmpiof.c
index 89b4180..993b5ac 100644
--- a/fortran/src/H5FDmpiof.c
+++ b/fortran/src/H5FDmpiof.c
@@ -300,3 +300,40 @@ nh5pget_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag)
      ret_value = 0;
      return ret_value;
 }
+
+/****if* H5Pf/h5pget_mpio_actual_io_mode_c
+ * NAME
+ *  h5pget_mpio_actual_io_mode_c
+ * PURPOSE
+ *  Calls H5Pget_mpio_actual_io_mode
+ *
+ * INPUTS
+ *  dxpl_id        - Dataset transfer property list identifier.
+ * OUTPUTS
+ *  actual_io_mode - The type of I/O performed by this process.
+ *
+ * RETURNS
+ *  0 on success, -1 on failure
+ * AUTHOR
+ *  M. Scot Breitenfeld
+ *  July 27, 2012
+ * SOURCE
+*/
+int_f
+nh5pget_mpio_actual_io_mode_c(hid_t_f *dxpl_id, int_f *actual_io_mode)
+/******/
+{
+  int ret_value = -1;
+  H5D_mpio_actual_io_mode_t c_actual_io_mode;
+
+  /*
+   * Call H5Pget_mpio_actual_io_mode_f function.
+   */
+  if( (H5Pget_mpio_actual_io_mode((hid_t)*dxpl_id, &c_actual_io_mode)) <0 )
+    return ret_value; /* error occurred */
+
+  *actual_io_mode =(int_f)c_actual_io_mode;
+
+  ret_value = 0;
+  return ret_value;
+}
diff --git a/fortran/src/H5FDmpioff.f90 b/fortran/src/H5FDmpioff.f90
index ea9283c..f6f3108 100644
--- a/fortran/src/H5FDmpioff.f90
+++ b/fortran/src/H5FDmpioff.f90
@@ -234,4 +234,49 @@ CONTAINS
     IF (flag .EQ. 1) use_gpfs = .TRUE.
   END SUBROUTINE h5pget_fapl_mpiposix_f
 
+
+!****s* H5P/h5pget_mpio_actual_io_mode_f
+! NAME
+!  h5pget_mpio_actual_io_mode_f
+!
+! PURPOSE
+!  Retrieves the type of I/O that HDF5 actually performed on the last 
+!  parallel I/O call. This is not necessarily the type of I/O requested. 
+!
+! INPUTS
+!  dxpl_id        - Dataset transfer property list identifier.
+! OUTPUTS
+!  actual_io_mode - The type of I/O performed by this process.
+!  hdferr         - Returns 0 if successful and -1 if fails.
+!
+! AUTHOR
+!  M. Scot Breitenfeld
+!  July 27, 2012
+!
+! HISTORY
+!
+! Fortran90 Interface:
+  SUBROUTINE h5pget_mpio_actual_io_mode_f(dxpl_id, actual_io_mode, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN)  :: dxpl_id
+    INTEGER       , INTENT(OUT) :: actual_io_mode
+    INTEGER       , INTENT(OUT) :: hdferr 
+!*****    
+    INTERFACE
+       INTEGER FUNCTION h5pget_mpio_actual_io_mode_c(dxpl_id, actual_io_mode)
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_MPIO_ACTUAL_IO_MODE_C'::h5pget_mpio_actual_io_mode_c
+         !DEC$ENDIF
+         INTEGER(HID_T), INTENT(IN)  :: dxpl_id
+         INTEGER       , INTENT(OUT) :: actual_io_mode
+       END FUNCTION h5pget_mpio_actual_io_mode_c
+    END INTERFACE
+
+    actual_io_mode = -1
+
+    hdferr = h5pget_mpio_actual_io_mode_c(dxpl_id, actual_io_mode)
+
+  END SUBROUTINE h5pget_mpio_actual_io_mode_f
+
 END MODULE H5FDMPIO
diff --git a/fortran/src/H5Off.f90 b/fortran/src/H5Off.f90
index 04c96e2..4f1ea18 100644
--- a/fortran/src/H5Off.f90
+++ b/fortran/src/H5Off.f90
@@ -49,33 +49,32 @@ CONTAINS
 !
 ! PURPOSE
 !  Creates a hard link to an object in an HDF5 file.
-! INPUTS
+!
+! Inputs:
 !  object_id 	 - Object to be linked.
 !  new_loc_id 	 - File or group identifier specifying location at which object is to be linked.
 !  new_link_name - Name of link to be created, relative to new_loc_id.
-! OUTPUTS
-!  hdferr:       - error code
-!                   Success:  0
-!                   Failure: -1
-! OPTIONAL PARAMETERS
+!
+! Outputs:
+!  hdferr        - Returns 0 if successful and -1 if fails.
+!
+! Optional parameters:
 !  lcpl_id 	 - Link creation property list identifier.
 !  lapl_id 	 - Link access property list identifier.
+!
 ! AUTHOR
 !  M. Scot Breitenfeld
 !  April 21, 2008
 !
-! SOURCE
+! Fortran90 Interface:
   SUBROUTINE h5olink_f(object_id, new_loc_id, new_link_name, hdferr, lcpl_id, lapl_id)
     IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN) :: object_id  ! Object to be linked
-    INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier specifying
-                                             ! location at which object is to be linked.
-    CHARACTER(LEN=*), INTENT(IN) :: new_link_name ! Name of link to be created, relative to new_loc_id.
-    INTEGER, INTENT(OUT) :: hdferr        ! Error code
-                                          !   Success:  0
-                                          !   Failure: -1
-    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
-    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link creation property list identifier.
+    INTEGER(HID_T)  , INTENT(IN)  :: object_id
+    INTEGER(HID_T)  , INTENT(IN)  :: new_loc_id
+    CHARACTER(LEN=*), INTENT(IN)  :: new_link_name
+    INTEGER         , INTENT(OUT) :: hdferr
+    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lcpl_id
+    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lapl_id
 !*****
     INTEGER(HID_T) :: lapl_id_default
     INTEGER(HID_T) :: lcpl_id_default
@@ -115,33 +114,33 @@ CONTAINS
 !
 ! NAME
 !  h5oopen_f
+!
 ! PURPOSE
 !  Opens an object in an HDF5 file by location identifier and path name.
 !
-! INPUTS
-!  loc_id 	 - File or group identifier
+! Inputs:
+!  loc_id 	 - File or group identifier.
 !  name 	 - Path to the object, relative to loc_id.
-! OUTPUTS
-!  obj_id 	 - Object identifier for the opened object
-!  hdferr:       - error code
-!                   Success:  0
-!                   Failure: -1
-! OPTIONAL PARAMETERS
-!  lapl_id 	 - Access property list identifier for the link pointing to the object
+!
+! Outputs:
+!  obj_id 	 - Object identifier for the opened object.
+!  hdferr        - Returns 0 if successful and -1 if fails.
+!
+! Optional parameters:
+!  lapl_id 	 - Access property list identifier for the link pointing to the object.
 !
 ! AUTHOR
 !  M. Scot Breitenfeld
 !  April 18, 2008
-! SOURCE
+!
+! Fortran90 Interface:
   SUBROUTINE h5oopen_f(loc_id, name, obj_id, hdferr, lapl_id)
     IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN) :: loc_id  ! File or group identifier
-    CHARACTER(LEN=*), INTENT(IN) :: name  ! Path to the object, relative to loc_id
-    INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
-    INTEGER, INTENT(OUT) :: hdferr        ! Error code
-                                          !   Success:  0
-                                          !   Failure: -1
-    INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  ! Attribute access property list
+    INTEGER(HID_T)  , INTENT(IN)  :: loc_id
+    CHARACTER(LEN=*), INTENT(IN)  :: name
+    INTEGER(HID_T)  , INTENT(OUT) :: obj_id
+    INTEGER         , INTENT(OUT) :: hdferr
+    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lapl_id
 !*****
     INTEGER(HID_T) :: lapl_id_default
     INTEGER(SIZE_T) :: namelen
@@ -178,20 +177,21 @@ CONTAINS
 ! PURPOSE
 !  Closes an object in an HDF5 file.
 !
-! INPUTS
-!  object_id     - Object identifier
-! OUTPUTS
-!  hdferr 	 - Returns 0 if successful and -1 if fails
+! Inputs:
+!  object_id - Object identifier.
+!
+! Outputs:
+!  hdferr    - Returns 0 if successful and -1 if fails.
 !
 ! AUTHOR
 !  M. Scot Breitenfeld
 !  December 17, 2008
 !
-! SOURCE
+! Fortran90 Interface:
   SUBROUTINE h5oclose_f(object_id, hdferr)
     IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN)  :: object_id
-    INTEGER,        INTENT(OUT) :: hdferr
+    INTEGER(HID_T), INTENT(IN)   :: object_id
+    INTEGER       ,  INTENT(OUT) :: hdferr
 !*****
     INTERFACE
        INTEGER FUNCTION h5oclose_c(object_id)
@@ -214,25 +214,25 @@ CONTAINS
 ! PURPOSE
 !  Opens an object using its address within an HDF5 file. 
 !
-! INPUTS  
-!    loc_id - File or group identifier
-!    addr   - Object’s address in the file
-! OUTPUTS: 
-!    obj_id - Object identifier for the opened object
-!    hdferr - Returns 0 if successful and -1 if fails
+! Inputs:  
+!    loc_id - File or group identifier.
+!    addr   - Object’s address in the file.
+!
+! Outputs:
+!    obj_id - Object identifier for the opened object.
+!    hdferr - Returns 0 if successful and -1 if fails.
 !
 ! AUTHOR	
 !  M. Scot Breitenfeld
 !  September 14, 2009
 ! 
-! SOURCE
+! Fortran90 Interface:
   SUBROUTINE h5oopen_by_addr_f(loc_id, addr, obj_id, hdferr)
     IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN) :: loc_id  ! File or group identifier
-    INTEGER(HADDR_T), INTENT(IN) :: addr  ! Object’s address in the file
-    INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
-    INTEGER, INTENT(OUT) :: hdferr        ! Error code:
-                                          ! 0 on success and -1 on failure
+    INTEGER(HID_T)  , INTENT(IN)  :: loc_id
+    INTEGER(HADDR_T), INTENT(IN)  :: addr
+    INTEGER(HID_T)  , INTENT(OUT) :: obj_id
+    INTEGER         , INTENT(OUT) :: hdferr
 !*****
     INTERFACE
        INTEGER FUNCTION h5oopen_by_addr_c(loc_id, addr, obj_id)
@@ -249,7 +249,6 @@ CONTAINS
     hdferr = h5oopen_by_addr_c(loc_id, addr, obj_id)
 
   END SUBROUTINE h5oopen_by_addr_f
-
 !
 !****s* H5O/h5ocopy_f
 ! NAME		
@@ -258,31 +257,31 @@ CONTAINS
 ! PURPOSE
 !  Copies an object in an HDF5 file.
 !
-! INPUTS  
-!  src_loc_id - Object identifier indicating the location of the source object to be copied 
-!  src_name   - Name of the source object to be copied 
-!  dst_loc_id - Location identifier specifying the destination 
-!  dst_name   - Name to be assigned to the new copy
+! Inputs:  
+!  src_loc_id - Object identifier indicating the location of the source object to be copied.
+!  src_name   - Name of the source object to be copied.
+!  dst_loc_id - Location identifier specifying the destination.
+!  dst_name   - Name to be assigned to the new copy.
 !
-! OPTIONAL PARAMETERS
-!  ocpypl_id  - Object copy property list
-!  lcpl_id    - Link creation property list for the new hard link
+! Optional parameters:
+!  ocpypl_id  - Object copy property list.
+!  lcpl_id    - Link creation property list for the new hard link.
 !
-! OUTPUTS: 
-!  hdferr     - Returns 0 if successful and -1 if fails
+! Outputs: 
+!  hdferr     - Returns 0 if successful and -1 if fails.
 !
 ! AUTHOR	
 !  M. Scot Breitenfeld
 !  March 14, 2012
 ! 
-! SOURCE
+! Fortran90 Interface:
   SUBROUTINE h5ocopy_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr, ocpypl_id, lcpl_id)
     IMPLICIT NONE
-    INTEGER(HID_T)  , INTENT(IN) :: src_loc_id
-    CHARACTER(LEN=*), INTENT(IN) :: src_name
-    INTEGER(HID_T)  , INTENT(IN) :: dst_loc_id
-    CHARACTER(LEN=*), INTENT(IN) :: dst_name
-    INTEGER, INTENT(OUT) :: hdferr
+    INTEGER(HID_T)  , INTENT(IN)  :: src_loc_id
+    CHARACTER(LEN=*), INTENT(IN)  :: src_name
+    INTEGER(HID_T)  , INTENT(IN)  :: dst_loc_id
+    CHARACTER(LEN=*), INTENT(IN)  :: dst_name
+    INTEGER         , INTENT(OUT) :: hdferr
     INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: ocpypl_id
     INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lcpl_id
 !*****
diff --git a/fortran/src/H5Rf.c b/fortran/src/H5Rf.c
index 0c3e5a7..d9f4231 100644
--- a/fortran/src/H5Rf.c
+++ b/fortran/src/H5Rf.c
@@ -331,6 +331,47 @@ done:
      return ret_value;
 } /* end nh5rget_region_region_c() */
 
+/****if* H5Rf/h5rget_region_ptr_c
+ * NAME
+ *  h5rget_region_ptr_c
+ * PURPOSE
+ *  Call H5Rget_region to dereference dataspace region
+ * INPUTS
+ *   dset_id - dataset identifier
+ *       ref - reference to the dataset region
+ * OUTPUTS
+ *  space_id - dereferenced  dataset dataspace identifier
+ * RETURNS
+ *  0 on success, -1 on failure
+ * AUTHOR
+ *  M. Scot Breitenfeld
+ *  August 4, 2012
+ * HISTORY
+ *
+ * SOURCE
+*/
+int_f
+nh5rget_region_ptr_c(hid_t_f *dset_id, void *ref, hid_t_f *space_id)
+/******/
+{
+     hid_t c_space_id;
+     hdset_reg_ref_t ref_c;
+     int_f ret_value = 0;
+
+     /*
+      * Call H5Rget_region function.
+      */
+     if((c_space_id = H5Rget_region((hid_t)*dset_id, H5R_DATASET_REGION, ref)) < 0)
+         HGOTO_DONE(FAIL)
+
+     /* Copy the dataspace ID */
+     *space_id = (hid_t_f)c_space_id;
+
+done:
+     return ret_value;
+} /* end nh5rget_region_ptr_c() */
+
+
 /****if* H5Rf/h5rget_object_type_obj_c
  * NAME
  *        h5rget_object_type_obj_c
diff --git a/fortran/src/H5Rff.f90 b/fortran/src/H5Rff.f90
index 35a3ed6..89ffc10 100644
--- a/fortran/src/H5Rff.f90
+++ b/fortran/src/H5Rff.f90
@@ -53,12 +53,6 @@ MODULE H5R
   !        END TYPE
   !
 
-  INTERFACE h5rget_region_f
-
-     MODULE PROCEDURE h5rget_region_region_f
-
-  END INTERFACE
-
   INTERFACE h5rget_object_type_f
 
      MODULE PROCEDURE h5rget_object_type_obj_f
@@ -67,61 +61,6 @@ MODULE H5R
 
 CONTAINS
 
-!****s* H5R/h5rget_region_region_f
-!
-! NAME
-!  h5rget_region_region_f
-!
-! PURPOSE
-!  Retrieves a dataspace with the specified region selected
-!
-! INPUTS
-!  dset_id 	 - identifier of the dataset containing
-!                  reference to the regions
-!  ref 	         - reference to open
-! OUTPUTS
-!  space_id 	 - dataspace identifier
-!  hdferr 	 - Returns 0 if successful and -1 if fails
-! AUTHOR
-!  Elena Pourmal
-!  August 12, 1999
-!
-! HISTORY 	
-!  Explicit Fortran interfaces were added for
-!  called C functions (it is needed for Windows
-!  port).  February 28, 2001
-!
-! NOTES
-!  This is a module procedure for the h5rget_region_f subroutine.
-!
-! SOURCE
-  SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr)
-    IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN) :: dset_id      ! Dataset identifier
-    TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference
-    INTEGER(HID_T), INTENT(OUT) :: space_id    ! Space identifier
-    INTEGER, INTENT(OUT) :: hdferr             ! Error code
-!*****
-    INTEGER :: ref_f(REF_REG_BUF_LEN)          ! Local buffer to pass reference
-
-    INTERFACE
-       INTEGER FUNCTION h5rget_region_region_c(dset_id, ref_f, space_id)
-         USE H5GLOBAL
-         !DEC$IF DEFINED(HDF5F90_WINDOWS)
-         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_REGION_REGION_C':: h5rget_region_region_c
-         !DEC$ENDIF
-         INTEGER(HID_T), INTENT(IN) :: dset_id
-         !              INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
-         INTEGER :: ref_f(REF_REG_BUF_LEN)
-         INTEGER(HID_T), INTENT(OUT) :: space_id
-       END FUNCTION h5rget_region_region_c
-    END INTERFACE
-
-    ref_f = ref%ref
-    hdferr = h5rget_region_region_c(dset_id, ref_f, space_id )
-
-  END SUBROUTINE h5rget_region_region_f
-
 !****s* H5R/h5rget_object_type_obj_f
 !
 ! NAME
diff --git a/fortran/src/H5Rff_F03.f90 b/fortran/src/H5Rff_F03.f90
index 7f66745..88ec8cf 100644
--- a/fortran/src/H5Rff_F03.f90
+++ b/fortran/src/H5Rff_F03.f90
@@ -37,6 +37,7 @@
 !*****
 MODULE H5R_PROVISIONAL
   USE H5GLOBAL
+  USE, INTRINSIC :: ISO_C_BINDING
 
   ! If you change the value of these parameters, do not forget to change corresponding
   ! values in the H5f90.h file.
@@ -51,6 +52,19 @@ MODULE H5R_PROVISIONAL
   !             INTEGER ref(REF_REG_BUF_LEN)
   !        END TYPE
   !
+
+  TYPE :: hdset_reg_ref_t_f03 
+     INTEGER(C_SIGNED_CHAR), DIMENSION(1:H5R_DSET_REG_REF_BUF_SIZE_F) :: ref
+  END TYPE hdset_reg_ref_t_f03
+
+  INTERFACE h5rget_region_f
+
+     MODULE PROCEDURE h5rget_region_region_f ! obsolete
+     MODULE PROCEDURE h5rget_region_ptr_f  ! F2003
+
+  END INTERFACE
+
+
   INTERFACE h5rcreate_f
 
      MODULE PROCEDURE h5rcreate_object_f ! obsolete
@@ -123,8 +137,114 @@ MODULE H5R_PROVISIONAL
      END FUNCTION h5rcreate_ptr_c
   END INTERFACE
 
+  INTERFACE
+     INTEGER FUNCTION h5rget_region_ptr_c(dset_id, ref, space_id)
+       USE, INTRINSIC :: ISO_C_BINDING
+       USE H5GLOBAL
+       !DEC$IF DEFINED(HDF5F90_WINDOWS)
+       !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_REGION_PTR_C':: h5rget_region_ptr_c
+       !DEC$ENDIF
+       INTEGER(HID_T), INTENT(IN) :: dset_id
+       TYPE(C_PTR), VALUE :: ref
+       INTEGER(HID_T), INTENT(OUT) :: space_id
+     END FUNCTION h5rget_region_ptr_c
+  END INTERFACE
+
 CONTAINS
 
+!****s* H5R/h5rget_region_region_f
+!
+! NAME
+!  h5rget_region_region_f
+!
+! PURPOSE
+!  Retrieves a dataspace with the specified region selected
+!
+! INPUTS
+!  dset_id 	 - identifier of the dataset containing
+!                  reference to the regions
+!  ref 	         - reference to open
+! OUTPUTS
+!  space_id 	 - dataspace identifier
+!  hdferr 	 - Returns 0 if successful and -1 if fails
+! AUTHOR
+!  Elena Pourmal
+!  August 12, 1999
+!
+! HISTORY 	
+!  Explicit Fortran interfaces were added for
+!  called C functions (it is needed for Windows
+!  port).  February 28, 2001
+!
+! NOTES
+!  This is a module procedure for the h5rget_region_f subroutine.
+!
+! SOURCE
+  SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id      ! Dataset identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference
+    INTEGER(HID_T), INTENT(OUT) :: space_id    ! Space identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+!*****
+    INTEGER :: ref_f(REF_REG_BUF_LEN)          ! Local buffer to pass reference
+
+    INTERFACE
+       INTEGER FUNCTION h5rget_region_region_c(dset_id, ref_f, space_id)
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_REGION_REGION_C':: h5rget_region_region_c
+         !DEC$ENDIF
+         INTEGER(HID_T), INTENT(IN) :: dset_id
+         !              INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
+         INTEGER :: ref_f(REF_REG_BUF_LEN)
+         INTEGER(HID_T), INTENT(OUT) :: space_id
+       END FUNCTION h5rget_region_region_c
+    END INTERFACE
+
+    ref_f = ref%ref
+    hdferr = h5rget_region_region_c(dset_id, ref_f, space_id )
+
+  END SUBROUTINE h5rget_region_region_f
+
+!****s* H5R/h5rget_region_ptr_f
+!
+! NAME
+!  h5rget_region_ptr_f
+!
+! PURPOSE
+!  Retrieves a dataspace with the specified region 
+!  selected using pointer
+!
+! INPUTS
+!  dset_id 	 - identifier of the dataset containing
+!                  reference to the regions
+!  ref 	         - reference to open
+! OUTPUTS
+!  space_id 	 - dataspace identifier
+!  hdferr 	 - Returns 0 if successful and -1 if fails
+! AUTHOR
+!  M. Scot Breitenfeld
+!  August 4, 2012
+!
+! NOTES
+!  This is a module procedure for the h5rget_region_f subroutine.
+!
+! SOURCE
+  SUBROUTINE h5rget_region_ptr_f(dset_id, ref, space_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id      ! Dataset identifier
+    TYPE(C_PTR), INTENT(IN) :: ref ! Dataset region reference
+    INTEGER(HID_T), INTENT(OUT) :: space_id    ! Space identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+!*****
+    INTEGER :: ref_f(REF_REG_BUF_LEN)          ! Local buffer to pass reference
+
+    hdferr = h5rget_region_ptr_c(dset_id, ref, space_id )
+
+  END SUBROUTINE h5rget_region_ptr_f
+
+
 !****s* H5R (F03)/h5rcreate_object_f
 !
 ! NAME
@@ -175,7 +295,7 @@ CONTAINS
 
   END SUBROUTINE h5rcreate_object_f
 
-!****s* H5R (F03)/h5rcreate_region_f
+!****s* H5R (F90)/h5rcreate_region_f
 !
 ! NAME
 !  h5rcreate_region_f
@@ -183,16 +303,15 @@ CONTAINS
 ! PURPOSE
 !  Creates reference to the dataset region
 !
-! Inputs:
+! INPUTS
 !  loc_id 	 - location identifier
 !  name 	 - name of the dataset at the specified location
 !  space_id 	 - dataspace identifier that describes selected region
-! Outputs:
+! OUTPUTS
 !  ref 	         - reference to the dataset region
 !  hdferr:	 - error code
 !                   Success:  0
 !                   Failure: -1
-!
 ! AUTHOR
 !  Elena Pourmal
 !  August 12, 1999
@@ -205,46 +324,39 @@ CONTAINS
 ! NOTES
 !  This is a module procedure for the h5rcreate_f subroutine.
 !
-! Signature:
+! SOURCE
   SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr)
-    USE, INTRINSIC :: ISO_C_BINDING
     IMPLICIT NONE
     INTEGER(HID_T), INTENT(IN) :: loc_id   ! Location identifier
     CHARACTER(LEN=*), INTENT(IN) :: name   ! Name of the dataset at location specified
                                            ! by loc_id identifier
     INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier
-    TYPE(hdset_reg_ref_t_f), INTENT(INOUT), TARGET :: ref ! Dataset region reference
+    TYPE(hdset_reg_ref_t_f), INTENT(OUT) :: ref ! Dataset region reference
     INTEGER, INTENT(OUT) :: hdferr         ! Error code
 !*****
     INTEGER :: namelen                     ! Name length
     INTEGER :: ref_f(REF_REG_BUF_LEN)      ! Local buffer to pass reference
 
-    TYPE(C_PTR) :: f_ptr
-
-!  !$    INTERFACE
-!  !$       INTEGER FUNCTION h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id)
-!  !$         USE H5GLOBAL
-!  !$         !DEC$IF DEFINED(HDF5F90_WINDOWS)
-!  !$         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_REGION_C':: h5rcreate_region_c
-!  !$         !DEC$ENDIF
-!  !$         !DEC$ATTRIBUTES reference :: name
-!  !$         !              INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
-!  !$         INTEGER :: ref_f(REF_REG_BUF_LEN)
-!  !$         INTEGER(HID_T), INTENT(IN) :: loc_id
-!  !$         CHARACTER(LEN=*), INTENT(IN) :: name
-!  !$         INTEGER :: namelen
-!  !$         INTEGER(HID_T), INTENT(IN) :: space_id
-!  !$       END FUNCTION h5rcreate_region_c
-!  !$    END INTERFACE
-
-    f_ptr = C_LOC(ref)
+    INTERFACE
+       INTEGER FUNCTION h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id)
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RCREATE_REGION_C':: h5rcreate_region_c
+         !DEC$ENDIF
+         !DEC$ATTRIBUTES reference :: name
+         !              INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
+         INTEGER :: ref_f(REF_REG_BUF_LEN)
+         INTEGER(HID_T), INTENT(IN) :: loc_id
+         CHARACTER(LEN=*), INTENT(IN) :: name
+         INTEGER :: namelen
+         INTEGER(HID_T), INTENT(IN) :: space_id
+       END FUNCTION h5rcreate_region_c
+    END INTERFACE
 
     namelen = LEN(name)
-    hdferr = h5rcreate_ptr_c(f_ptr, loc_id, name, namelen, 1, space_id)
-
-!  !$            ref_f = 0
-!  !$            hdferr = h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id )
-!  !$            ref%ref = ref_f
+    ref_f = 0
+    hdferr = h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id )
+    ref%ref = ref_f
 
   END SUBROUTINE h5rcreate_region_f
 
diff --git a/fortran/src/H5Rff_F90.f90 b/fortran/src/H5Rff_F90.f90
index 3f02825..0190e57 100644
--- a/fortran/src/H5Rff_F90.f90
+++ b/fortran/src/H5Rff_F90.f90
@@ -72,8 +72,73 @@ MODULE H5R_PROVISIONAL
 
   END INTERFACE
 
+  INTERFACE h5rget_region_f
+
+     MODULE PROCEDURE h5rget_region_region_f
+
+  END INTERFACE
+
+
 CONTAINS
 
+
+!****s* H5R/h5rget_region_region_f
+!
+! NAME
+!  h5rget_region_region_f
+!
+! PURPOSE
+!  Retrieves a dataspace with the specified region selected
+!
+! INPUTS
+!  dset_id 	 - identifier of the dataset containing
+!                  reference to the regions
+!  ref 	         - reference to open
+! OUTPUTS
+!  space_id 	 - dataspace identifier
+!  hdferr 	 - Returns 0 if successful and -1 if fails
+! AUTHOR
+!  Elena Pourmal
+!  August 12, 1999
+!
+! HISTORY 	
+!  Explicit Fortran interfaces were added for
+!  called C functions (it is needed for Windows
+!  port).  February 28, 2001
+!
+! NOTES
+!  This is a module procedure for the h5rget_region_f subroutine.
+!
+! SOURCE
+  SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr)
+    IMPLICIT NONE
+    INTEGER(HID_T), INTENT(IN) :: dset_id      ! Dataset identifier
+    TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference
+    INTEGER(HID_T), INTENT(OUT) :: space_id    ! Space identifier
+    INTEGER, INTENT(OUT) :: hdferr             ! Error code
+!*****
+    INTEGER :: ref_f(REF_REG_BUF_LEN)          ! Local buffer to pass reference
+
+    INTERFACE
+       INTEGER FUNCTION h5rget_region_region_c(dset_id, ref_f, space_id)
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5RGET_REGION_REGION_C':: h5rget_region_region_c
+         !DEC$ENDIF
+         INTEGER(HID_T), INTENT(IN) :: dset_id
+         !              INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
+         INTEGER :: ref_f(REF_REG_BUF_LEN)
+         INTEGER(HID_T), INTENT(OUT) :: space_id
+       END FUNCTION h5rget_region_region_c
+    END INTERFACE
+
+    ref_f = ref%ref
+    hdferr = h5rget_region_region_c(dset_id, ref_f, space_id )
+
+  END SUBROUTINE h5rget_region_region_f
+
+
+
 !****s* H5R (F90)/h5rcreate_object_f
 !
 ! NAME
diff --git a/fortran/src/H5Tff.f90 b/fortran/src/H5Tff.f90
index f5369d0..fd857a8 100644
--- a/fortran/src/H5Tff.f90
+++ b/fortran/src/H5Tff.f90
@@ -2050,17 +2050,19 @@ CONTAINS
 !  h5tcreate_f
 !
 ! PURPOSE
-!  Creates a new dataype
+!  Creates a new datatype.
 !
 ! INPUTS
-!  class 	 - datatype class, possible values are:
-!                    H5T_COMPOUND_F
-!                    H5T_ENUM_F
-!                    H5T_OPAQUE_F
-!  size 	 - datattype size
+!  class   - Datatype class can be one of:
+!             H5T_COMPOUND_F
+!             H5T_ENUM_F
+!             H5T_OPAQUE_F
+!             H5T_STRING_F
+!
+!  size    - Size of the datatype.
 ! OUTPUTS
-!  type_id 	 - datatype identifier
-!  hdferr 	 - Returns 0 if successful and -1 if fails
+!  type_id - Datatype identifier.
+!  hdferr  - Returns 0 if successful and -1 if fails
 !
 ! AUTHOR
 !  Elena Pourmal
@@ -2072,29 +2074,26 @@ CONTAINS
 !  port).  March 7, 2001
 ! SOURCE
   SUBROUTINE h5tcreate_f(class, size, type_id, hdferr)
-            IMPLICIT NONE
-            INTEGER, INTENT(IN) :: class ! Datatype class can be one of
-                                         ! H5T_COMPOUND_F
-                                         ! H5T_ENUM_F
-                                         ! H5T_OPAQUE_F
-            INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the datatype
-            INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier
-            INTEGER, INTENT(OUT) :: hdferr        ! Error code
+    IMPLICIT NONE
+    INTEGER        , INTENT(IN)  :: class
+    INTEGER(SIZE_T), INTENT(IN)  :: size
+    INTEGER(HID_T) , INTENT(OUT) :: type_id
+    INTEGER        , INTENT(OUT) :: hdferr
 !*****
-            INTERFACE
-              INTEGER FUNCTION h5tcreate_c(class, size, type_id)
-              USE H5GLOBAL
-              !DEC$IF DEFINED(HDF5F90_WINDOWS)
-              !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TCREATE_C'::h5tcreate_c
-              !DEC$ENDIF
-              INTEGER, INTENT(IN) :: class
-              INTEGER(SIZE_T), INTENT(IN) :: size
-              INTEGER(HID_T), INTENT(OUT) :: type_id
-              END FUNCTION h5tcreate_c
-            END INTERFACE
+    INTERFACE
+       INTEGER FUNCTION h5tcreate_c(class, size, type_id)
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TCREATE_C'::h5tcreate_c
+         !DEC$ENDIF
+         INTEGER, INTENT(IN) :: class
+         INTEGER(SIZE_T), INTENT(IN) :: size
+         INTEGER(HID_T), INTENT(OUT) :: type_id
+       END FUNCTION h5tcreate_c
+    END INTERFACE
 
-           hdferr = h5tcreate_c(class, size, type_id)
-          END SUBROUTINE h5tcreate_f
+    hdferr = h5tcreate_c(class, size, type_id)
+  END SUBROUTINE h5tcreate_f
 
 !
 !****s* H5T/h5tinsert_f
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index 05b7da0..4c85df2 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -330,20 +330,21 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
  * PURPOSE
  *  Initialize Fortran flags
  * INPUTS
- *  h5d_flags      - H5D inteface flags
- *  h5e_flags      - H5E inteface flags
- *  h5e_hid_flags  - H5E inteface flags of type hid_t
- *  h5f_flags      - H5F interface flags
- *  h5fd_flags     - H5FD interface flags
- *  h5fd_hid_flags - H5FD interface flags of type hid_t
- *  h5g_flags      - H5G interface flags
- *  h5i_flags      - H5I interface flags
- *  h5p_flags      - H5P interface flags
- *  h5p_flags_int  - H5P interface flags of type integer
- *  h5r_flags      - H5R interface flags
- *  h5s_flags      - H5S interface flags
- *  h5t_flags      - H5T interface flags
- *  h5z_flags      - H5Z interface flags
+ *  h5d_flags       - H5D inteface flags
+ *  h5e_flags       - H5E inteface flags
+ *  h5e_hid_flags   - H5E inteface flags of type hid_t
+ *  h5f_flags       - H5F interface flags
+ *  h5fd_flags      - H5FD interface flags
+ *  h5fd_hid_flags  - H5FD interface flags of type hid_t
+ *  h5g_flags       - H5G interface flags
+ *  h5i_flags       - H5I interface flags
+ *  h5p_flags       - H5P interface flags
+ *  h5p_flags_int   - H5P interface flags of type integer
+ *  h5r_flags       - H5R interface flags
+ *  h5s_flags       - H5S interface flags
+ *  h5s_hsize_flags - H5S interface flags of type hsize_t
+ *  h5t_flags       - H5T interface flags
+ *  h5z_flags       - H5Z interface flags
  * OUTPUTS
  *  None
  * RETURNS
@@ -368,7 +369,7 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int
                  int_f *h5fd_flags, hid_t_f *h5fd_hid_flags,
                  int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags,
                  hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags,
-                 int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags)
+		 hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags)
 /******/
 {
     int ret_value = -1;
@@ -397,7 +398,11 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int
     h5d_flags[19] = (int_f)H5D_CHUNK_CACHE_NSLOTS_DEFAULT;
     h5d_flags[20] = (int_f)H5D_CHUNK_CACHE_NBYTES_DEFAULT;
     h5d_flags[21] = (int_f)H5D_CHUNK_CACHE_W0_DEFAULT;
-
+    h5d_flags[22] = (int_f)H5D_MPIO_NO_COLLECTIVE;
+    h5d_flags[23] = (int_f)H5D_MPIO_CHUNK_INDEPENDENT;
+    h5d_flags[24] = (int_f)H5D_MPIO_CHUNK_COLLECTIVE;
+    h5d_flags[25] = (int_f)H5D_MPIO_CHUNK_MIXED;
+    h5d_flags[26] = (int_f)H5D_MPIO_CONTIGUOUS_COLLECTIVE;
 /*
  *  H5E flags
  */
@@ -579,31 +584,29 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int
 /*
  *  H5S flags
  */
-
-
       h5s_flags[0] = (int_f)H5S_SCALAR;
       h5s_flags[1] = (int_f)H5S_SIMPLE;
       h5s_flags[2] = (int_f)H5S_NULL;
       h5s_flags[3] = (int_f)H5S_SELECT_SET;
       h5s_flags[4] = (int_f)H5S_SELECT_OR;
-      h5s_flags[5] = (int_f)H5S_UNLIMITED;
-      h5s_flags[6] = (int_f)H5S_ALL;
-
-      h5s_flags[7] = (int_f)H5S_SELECT_NOOP;
-      h5s_flags[8] = (int_f)H5S_SELECT_AND;
-      h5s_flags[9] = (int_f)H5S_SELECT_XOR;
-      h5s_flags[10] = (int_f)H5S_SELECT_NOTB;
-      h5s_flags[11] = (int_f)H5S_SELECT_NOTA;
-      h5s_flags[12] = (int_f)H5S_SELECT_APPEND;
-      h5s_flags[13] = (int_f)H5S_SELECT_PREPEND;
-      h5s_flags[14] = (int_f)H5S_SELECT_INVALID;
-
-
-      h5s_flags[15] = (int_f)H5S_SEL_ERROR;
-      h5s_flags[16] = (int_f)H5S_SEL_NONE;
-      h5s_flags[17] = (int_f)H5S_SEL_POINTS;
-      h5s_flags[18] = (int_f)H5S_SEL_HYPERSLABS;
-      h5s_flags[19] = (int_f)H5S_SEL_ALL;
+      h5s_flags[5] = (int_f)H5S_ALL;
+
+      h5s_flags[6] = (int_f)H5S_SELECT_NOOP;
+      h5s_flags[7] = (int_f)H5S_SELECT_AND;
+      h5s_flags[8] = (int_f)H5S_SELECT_XOR;
+      h5s_flags[9] = (int_f)H5S_SELECT_NOTB;
+      h5s_flags[10] = (int_f)H5S_SELECT_NOTA;
+      h5s_flags[11] = (int_f)H5S_SELECT_APPEND;
+      h5s_flags[12] = (int_f)H5S_SELECT_PREPEND;
+      h5s_flags[13] = (int_f)H5S_SELECT_INVALID;
+
+      h5s_flags[14] = (int_f)H5S_SEL_ERROR;
+      h5s_flags[15] = (int_f)H5S_SEL_NONE;
+      h5s_flags[16] = (int_f)H5S_SEL_POINTS;
+      h5s_flags[17] = (int_f)H5S_SEL_HYPERSLABS;
+      h5s_flags[18] = (int_f)H5S_SEL_ALL;
+
+      h5s_hsize_flags[0] = (hsize_t_f)H5S_UNLIMITED;
 
 /*
  *  H5T flags
diff --git a/fortran/src/H5_ff.f90 b/fortran/src/H5_ff.f90
index 57c1afd..4000ba1 100644
--- a/fortran/src/H5_ff.f90
+++ b/fortran/src/H5_ff.f90
@@ -100,6 +100,7 @@ CONTAINS
             i_H5P_flags_int, &
             i_H5R_flags, &
             i_H5S_flags, &
+            i_H5S_hsize_flags, &
             i_H5T_flags, &
             i_H5Z_flags, &
             i_H5generic_flags)
@@ -118,6 +119,7 @@ CONTAINS
          INTEGER i_H5P_flags_int(H5P_FLAGS_INT_LEN)
          INTEGER i_H5R_flags(H5R_FLAGS_LEN)
          INTEGER i_H5S_flags(H5S_FLAGS_LEN)
+         INTEGER(HSIZE_T) i_H5S_hsize_flags(H5S_HSIZE_FLAGS_LEN)
          INTEGER i_H5T_flags(H5T_FLAGS_LEN)
          INTEGER i_H5Z_flags(H5Z_FLAGS_LEN)
          INTEGER i_H5generic_flags(H5generic_FLAGS_LEN)
@@ -150,6 +152,7 @@ CONTAINS
          H5P_flags_int, &
          H5R_flags, &
          H5S_flags, &
+         H5S_hsize_flags, &
          H5T_flags, &
          H5Z_flags, &
          H5generic_flags)
diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90
index da7a736..a6168d5 100644
--- a/fortran/src/H5f90global.f90
+++ b/fortran/src/H5f90global.f90
@@ -105,8 +105,13 @@ MODULE H5GLOBAL
        H5T_STD_U8LE,    &
        H5T_STD_U16BE,   &
        H5T_STD_U16LE,   &
-       H5T_STD_U32BE,   &
-       H5T_STD_U32LE,   &
+       H5T_STD_U32BE
+
+! NOTE: Splitting the line since the Fortran 95 standard limits the number of 
+!       continuation lines to 39; the F03/F08 standard limits the number 
+!       to 255 lines.
+
+  INTEGER(HID_T) H5T_STD_U32LE,   &
        H5T_STD_U64BE,   &
        H5T_STD_U64LE,   &
        H5T_STRING,      &
@@ -349,7 +354,7 @@ MODULE H5GLOBAL
   ! H5D flags declaration
   !
 
-  INTEGER, PARAMETER :: H5D_FLAGS_LEN = 22
+  INTEGER, PARAMETER :: H5D_FLAGS_LEN = 27
   INTEGER H5D_flags(H5D_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5D_FLAGS/
@@ -382,10 +387,17 @@ MODULE H5GLOBAL
 
 ! shortened "_DEFAULT" to "_DFLT" to satisfy the limit of 31
 ! characters for variable names in Fortran.
+! shortened "_CONTIGUOUS" to "_CONTIG" to satisfy the limit of 31
+! characters for variable names in Fortran.
 
   INTEGER :: H5D_CHUNK_CACHE_NSLOTS_DFLT_F
   INTEGER :: H5D_CHUNK_CACHE_NBYTES_DFLT_F
   INTEGER :: H5D_CHUNK_CACHE_W0_DFLT_F
+  INTEGER :: H5D_MPIO_NO_COLLECTIVE_F
+  INTEGER :: H5D_MPIO_CHUNK_INDEPENDENT_F
+  INTEGER :: H5D_MPIO_CHUNK_COLLECTIVE_F
+  INTEGER :: H5D_MPIO_CHUNK_MIXED_F
+  INTEGER :: H5D_MPIO_CONTIG_COLLECTIVE_F
 
   EQUIVALENCE(H5D_flags(1), H5D_COMPACT_F)
   EQUIVALENCE(H5D_flags(2), H5D_CONTIGUOUS_F)
@@ -414,6 +426,11 @@ MODULE H5GLOBAL
   EQUIVALENCE(H5D_flags(20), H5D_CHUNK_CACHE_NSLOTS_DFLT_F)
   EQUIVALENCE(H5D_flags(21), H5D_CHUNK_CACHE_NBYTES_DFLT_F)
   EQUIVALENCE(H5D_flags(22), H5D_CHUNK_CACHE_W0_DFLT_F)
+  EQUIVALENCE(H5D_flags(23), H5D_MPIO_NO_COLLECTIVE_F)
+  EQUIVALENCE(H5D_flags(24), H5D_MPIO_CHUNK_INDEPENDENT_F)
+  EQUIVALENCE(H5D_flags(25), H5D_MPIO_CHUNK_COLLECTIVE_F)
+  EQUIVALENCE(H5D_flags(26), H5D_MPIO_CHUNK_MIXED_F)
+  EQUIVALENCE(H5D_flags(27), H5D_MPIO_CONTIG_COLLECTIVE_F)
 
   !
   ! H5E flags declaration
@@ -685,18 +702,23 @@ MODULE H5GLOBAL
   !
   ! H5S flags declaration
   !
-  INTEGER, PARAMETER :: H5S_FLAGS_LEN = 20
+  INTEGER, PARAMETER :: H5S_FLAGS_LEN = 19
   INTEGER H5S_flags(H5S_FLAGS_LEN)
+  INTEGER, PARAMETER :: H5S_HSIZE_FLAGS_LEN = 1
+  INTEGER(HSIZE_T) H5S_hsize_flags(H5S_HSIZE_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5S_FLAGS/
+  !DEC$ATTRIBUTES DLLEXPORT :: /H5S_HSIZE_FLAGS/
   !DEC$endif
   COMMON /H5S_FLAGS/ H5S_flags
+  COMMON /H5S_HSIZE_FLAGS/ H5S_hsize_flags
+
+  INTEGER(HSIZE_T) :: H5S_UNLIMITED_F
 
   INTEGER :: H5S_SCALAR_F
   INTEGER :: H5S_SIMPLE_F
   INTEGER :: H5S_NULL_F
 
-  INTEGER :: H5S_UNLIMITED_F
   INTEGER :: H5S_ALL_F
 
   INTEGER :: H5S_SELECT_NOOP_F
@@ -710,36 +732,36 @@ MODULE H5GLOBAL
   INTEGER :: H5S_SELECT_PREPEND_F
   INTEGER :: H5S_SELECT_INVALID_F
 
-
   INTEGER :: H5S_SEL_ERROR_F
   INTEGER :: H5S_SEL_NONE_F
   INTEGER :: H5S_SEL_POINTS_F
   INTEGER :: H5S_SEL_HYPERSLABS_F
   INTEGER :: H5S_SEL_ALL_F
 
+  EQUIVALENCE(H5S_hsize_flags(1), H5S_UNLIMITED_F)
   EQUIVALENCE(H5S_flags(1), H5S_SCALAR_F)
   EQUIVALENCE(H5S_flags(2), H5S_SIMPLE_F)
   EQUIVALENCE(H5S_flags(3), H5S_NULL_F)
   EQUIVALENCE(H5S_flags(4), H5S_SELECT_SET_F)
   EQUIVALENCE(H5S_flags(5), H5S_SELECT_OR_F)
-  EQUIVALENCE(H5S_flags(6), H5S_UNLIMITED_F)
-  EQUIVALENCE(H5S_flags(7), H5S_ALL_F)
-
-  EQUIVALENCE(H5S_flags(8), H5S_SELECT_NOOP_F)
-  EQUIVALENCE(H5S_flags(9), H5S_SELECT_AND_F)
-  EQUIVALENCE(H5S_flags(10), H5S_SELECT_XOR_F)
-  EQUIVALENCE(H5S_flags(11), H5S_SELECT_NOTB_F)
-  EQUIVALENCE(H5S_flags(12), H5S_SELECT_NOTA_F)
-  EQUIVALENCE(H5S_flags(13), H5S_SELECT_APPEND_F)
-  EQUIVALENCE(H5S_flags(14), H5S_SELECT_PREPEND_F)
-  EQUIVALENCE(H5S_flags(15), H5S_SELECT_INVALID_F)
-
-
-  EQUIVALENCE(H5S_flags(16), H5S_SEL_ERROR_F)
-  EQUIVALENCE(H5S_flags(17), H5S_SEL_NONE_F)
-  EQUIVALENCE(H5S_flags(18), H5S_SEL_POINTS_F)
-  EQUIVALENCE(H5S_flags(19), H5S_SEL_HYPERSLABS_F)
-  EQUIVALENCE(H5S_flags(20), H5S_SEL_ALL_F)
+  EQUIVALENCE(H5S_flags(6), H5S_ALL_F)
+
+  EQUIVALENCE(H5S_flags(7), H5S_SELECT_NOOP_F)
+  EQUIVALENCE(H5S_flags(8), H5S_SELECT_AND_F)
+  EQUIVALENCE(H5S_flags(9), H5S_SELECT_XOR_F)
+  EQUIVALENCE(H5S_flags(10), H5S_SELECT_NOTB_F)
+  EQUIVALENCE(H5S_flags(11), H5S_SELECT_NOTA_F)
+  EQUIVALENCE(H5S_flags(12), H5S_SELECT_APPEND_F)
+  EQUIVALENCE(H5S_flags(13), H5S_SELECT_PREPEND_F)
+  EQUIVALENCE(H5S_flags(14), H5S_SELECT_INVALID_F)
+
+
+  EQUIVALENCE(H5S_flags(15), H5S_SEL_ERROR_F)
+  EQUIVALENCE(H5S_flags(16), H5S_SEL_NONE_F)
+  EQUIVALENCE(H5S_flags(17), H5S_SEL_POINTS_F)
+  EQUIVALENCE(H5S_flags(18), H5S_SEL_HYPERSLABS_F)
+  EQUIVALENCE(H5S_flags(19), H5S_SEL_ALL_F)
+
   !
   ! H5T flags declaration
   !
diff --git a/fortran/src/H5f90kit.c b/fortran/src/H5f90kit.c
index 059685e..0bc721f 100644
--- a/fortran/src/H5f90kit.c
+++ b/fortran/src/H5f90kit.c
@@ -53,7 +53,7 @@ HD5f2cstring(_fcd fdesc, size_t len)
 
     /* Search for the end of the string */
     str = _fcdtocp(fdesc);
-    for(i = (int)len - 1; i >= 0 && !HDisgraph((int)str[i]); i--)
+    for(i = (int)len - 1; i >= 0 && HDisspace((int)str[i]) && str[i] == ' '; i--)
         /*EMPTY*/;
 
     /* Allocate C string */
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index a504653..b1e650a 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -806,11 +806,21 @@ H5_FCDLL int_f nh5tconvert_c(hid_t_f *src_id, hid_t_f *dst_id, size_t_f *nelmts,
 #define nh5olink_c       H5_FC_FUNC_(h5olink_c, H5OLINK_C)
 #define nh5oopen_c       H5_FC_FUNC_(h5oopen_c, H5OOPEN_C)
 #define nh5oclose_c      H5_FC_FUNC_(h5oclose_c, H5OCLOSE_C)
-#define nh5ovisit_c      H5_FC_FUNC_(h5ovisit_c,H5OVISIT_C)
+#define nh5ovisit_c      H5_FC_FUNC_(h5ovisit_c, H5OVISIT_C)
+#define nh5ovisit_by_name_c H5_FC_FUNC_(h5ovisit_by_name_c, H5OVISIT_BY_NAME_C)
+#define nh5oget_info_c   H5_FC_FUNC_(h5oget_info_c, H5OGET_INFO_C)
+#define nh5oget_info_by_idx_c H5_FC_FUNC_(h5oget_info_by_idx_c ,H5OGET_INFO_BY_IDX_C)
 #define nh5oget_info_by_name_c H5_FC_FUNC_(h5oget_info_by_name_c ,H5OGET_INFO_BY_NAME_C)
 #define nh5oopen_by_addr_c H5_FC_FUNC_(h5oopen_by_addr_c, H5OOPEN_BY_ADDR_C)
 #define nh5ocopy_c         H5_FC_FUNC_(h5ocopy_c, H5OCOPY_C)
-
+#define nh5odecr_refcount_c H5_FC_FUNC_(h5odecr_refcount_c, H5ODECR_REFCOUNT_C)
+#define nh5oincr_refcount_c H5_FC_FUNC_(h5oincr_refcount_c, H5OINCR_REFCOUNT_C)
+#define nh5oexists_by_name_c H5_FC_FUNC_(h5oexists_by_name_c, H5OEXISTS_BY_NAME_C)
+#define nh5oset_comment_c H5_FC_FUNC_(h5oset_comment_c, H5OSET_COMMENT_C)
+#define nh5oset_comment_by_name_c H5_FC_FUNC_(h5oset_comment_by_name_c, H5OSET_COMMENT_BY_NAME_C)
+#define nh5oopen_by_idx_c H5_FC_FUNC_(h5oopen_by_idx_c, H5OOPEN_BY_IDX_C)
+#define nh5oget_comment_c H5_FC_FUNC_(h5oget_comment_c, H5OGET_COMMENT_C)
+#define nh5oget_comment_by_name_c H5_FC_FUNC_(h5oget_comment_by_name_c, H5OGET_COMMENT_BY_NAME_C)
 
 H5_FCDLL int_f nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *obj_id);
 H5_FCDLL int_f nh5oclose_c (hid_t_f *object_id );
@@ -818,11 +828,26 @@ H5_FCDLL int_f nh5oopen_by_addr_c (hid_t_f *loc_id, haddr_t_f *addr, hid_t_f *ob
 H5_FCDLL int_f nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namelen,
 			   hid_t_f *lcpl_id, hid_t_f *lapl_id);
 H5_FCDLL int_f nh5ovisit_c (hid_t_f *group_id, int_f *index_type, int_f *order, H5O_iterate_t op, void *op_data);
-H5_FCDLL int_f nh5oget_info_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen,hid_t_f *lapl_id,
+H5_FCDLL int_f nh5ovisit_by_name_c(hid_t_f *loc_id,  _fcd object_name, size_t_f *namelen, int_f *index_type, int_f *order,
+				   H5O_iterate_t op, void *op_data, hid_t_f *lapl_id );
+H5_FCDLL int_f nh5oget_info_c (hid_t_f *object_id, H5O_info_t_f *object_info);
+H5_FCDLL int_f nh5oget_info_by_idx_c (hid_t_f *loc_id, _fcd  group_name, size_t_f *namelen, 
+				      int_f *index_field, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, H5O_info_t_f *object_info);
+H5_FCDLL int_f nh5oget_info_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id,
 				       H5O_info_t_f *object_info);
 H5_FCDLL int_f nh5ocopy_c (hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_name_len,
 			   hid_t_f *dst_loc_id, _fcd dst_name, size_t_f *dst_name_len, 
 			   hid_t_f *ocpypl_id, hid_t_f *lcpl_id );
+H5_FCDLL int_f nh5odecr_refcount_c (hid_t_f *object_id);
+H5_FCDLL int_f nh5oincr_refcount_c (hid_t_f *object_id);
+H5_FCDLL int_f nh5oexists_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id);
+H5_FCDLL int_f nh5oset_comment_c (hid_t_f *object_id, _fcd comment, size_t_f *commentlen);
+H5_FCDLL int_f nh5oset_comment_by_name_c (hid_t_f *object_id, _fcd name, size_t_f *namelen,  _fcd comment, size_t_f *commentlen, hid_t_f *lapl_id);
+H5_FCDLL int_f nh5oopen_by_idx_c (hid_t_f *loc_id, _fcd  group_name, size_t_f *group_namelen, 
+				      int_f *index_type, int_f *order, hsize_t_f *n, hid_t_f *obj_id, hid_t_f *lapl_id);
+H5_FCDLL int_f nh5oget_comment_c (hid_t_f *object_id, _fcd comment, size_t_f *commentsize, hssize_t_f *bufsize);
+H5_FCDLL int_f nh5oget_comment_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *name_size, 
+					  _fcd comment, size_t_f *commentsize, size_t_f *bufsize, hid_t_f *lapl_id);
 /*
  * Functions from H5Pf.c
  */
@@ -982,6 +1007,7 @@ H5_FCDLL int_f nh5ocopy_c (hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_nam
 #define nh5pget_nlinks_c H5_FC_FUNC_(h5pget_nlinks_c, H5PGET_NLINKS_C)
 #define nh5pset_chunk_cache_c H5_FC_FUNC_(h5pset_chunk_cache_c, H5PSET_CHUNK_CACHE_C)
 #define nh5pget_chunk_cache_c H5_FC_FUNC_(h5pget_chunk_cache_c, H5PGET_CHUNK_CACHE_C)
+#define nh5pget_mpio_actual_io_mode_c H5_FC_FUNC_(h5pget_mpio_actual_io_mode_c, H5PGET_MPIO_ACTUAL_IO_MODE_C)
 
 H5_FCDLL int_f nh5pcreate_c ( hid_t_f *cls, hid_t_f *prp_id );
 H5_FCDLL int_f nh5pclose_c ( hid_t_f *prp_id );
@@ -1142,6 +1168,7 @@ H5_FCDLL int_f nh5pset_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks);
 H5_FCDLL int_f nh5pget_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks);
 H5_FCDLL int_f nh5pset_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, size_t_f *rdcc_nbytes, real_f *rdcc_w0);
 H5_FCDLL int_f nh5pget_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, size_t_f *rdcc_nbytes, real_f *rdcc_w0);
+H5_FCDLL int_f nh5pget_mpio_actual_io_mode_c(hid_t_f *dxpl_id, int_f *actual_io_mode);
 /*
  * Functions frome H5Rf.c
  */
@@ -1152,6 +1179,7 @@ H5_FCDLL int_f nh5pget_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, si
 #define nh5rdereference_object_c H5_FC_FUNC_(h5rdereference_object_c, H5RDEREFERENCE_OBJECT_C)
 #define nh5rdereference_ptr_c H5_FC_FUNC_(h5rdereference_ptr_c, H5RDEREFERENCE_PTR_C)
 #define nh5rget_region_region_c H5_FC_FUNC_(h5rget_region_region_c, H5RGET_REGION_REGION_C)
+#define nh5rget_region_ptr_c H5_FC_FUNC_(h5rget_region_ptr_c, H5RGET_REGION_PTR_C)
 #define nh5rget_object_type_obj_c H5_FC_FUNC_(h5rget_object_type_obj_c, H5RGET_OBJECT_TYPE_OBJ_C)
 #define nh5rget_name_object_c H5_FC_FUNC_(h5rget_name_object_c, H5RGET_NAME_OBJECT_C)
 #define nh5rget_name_region_c H5_FC_FUNC_(h5rget_name_region_c, H5RGET_NAME_REGION_C)
@@ -1166,6 +1194,7 @@ H5_FCDLL int_f nh5rdereference_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *
 H5_FCDLL int_f nh5rdereference_object_c (hid_t_f *dset_id, haddr_t_f *ref, hid_t_f *obj_id);
 H5_FCDLL int_f nh5rdereference_ptr_c (hid_t_f *obj_id, int_f *ref_type, void *ref, hid_t_f *ref_obj_id);
 H5_FCDLL int_f nh5rget_region_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *space_id);
+H5_FCDLL int_f nh5rget_region_ptr_c(hid_t_f *dset_id, void *ref, hid_t_f *space_id);
 H5_FCDLL int_f nh5rget_object_type_obj_c (hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type);
 H5_FCDLL int_f nh5rget_name_object_c (hid_t_f *loc_id, haddr_t_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default);
 H5_FCDLL int_f nh5rget_name_region_c (hid_t_f *loc_id, int_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default);
@@ -1235,7 +1264,7 @@ H5_FCDLL int_f nh5init_flags_c(int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_
 			       int_f *h5fd_flags, hid_t_f *h5fd_hid_flags,
 			       int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags,
 			       hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags,
-			       int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags);
+			       hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags);
 H5_FCDLL int_f nh5init1_flags_c(int_f *h5lib_flags);
 H5_FCDLL int_f nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum);
 H5_FCDLL int_f nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum);
diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c
index 61504ec..4c83d21 100644
--- a/fortran/src/H5match_types.c
+++ b/fortran/src/H5match_types.c
@@ -533,7 +533,21 @@ int main(void)
 
   /* double_f */
 #if defined H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND
-    writeFloatToFiles("Fortran_DOUBLE", "double_f", 16, H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND);
+    if(H5_C_HAS_REAL_NATIVE_16 != 0) { /* Check if C has 16 byte floats */
+      writeFloatToFiles("Fortran_DOUBLE", "double_f", 16, H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND);
+    } else {
+#if defined H5_FORTRAN_HAS_REAL_NATIVE_8_KIND /* Fall back to 8 byte floats */
+    writeFloatToFiles("Fortran_DOUBLE", "double_f", 8, H5_FORTRAN_HAS_REAL_NATIVE_8_KIND);
+    }
+#elif defined H5_FORTRAN_HAS_REAL_NATIVE_4_KIND  /* Fall back to 4 byte floats */
+    writeFloatToFiles("Fortran_DOUBLE", "double_f", 4, H5_FORTRAN_HAS_REAL_NATIVE_4_KIND);
+    }
+#else
+    /* Error: couldn't find a size for double_f when fortran has 16 byte reals */
+    return -1;
+    }
+#endif
+
 #elif defined H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND
     writeFloatToFiles("Fortran_DOUBLE", "double_f", 8, H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND);
 #else
@@ -541,6 +555,14 @@ int main(void)
     return -1;
 #endif
 
+  /* Need the buffer size for the fortran derive type 'hdset_reg_ref_t_f03'
+   * in order to be interoperable with C's structure, the C buffer size
+   * H5R_DSET_REG_REF_BUF_SIZE is (sizeof(haddr_t)+4)
+   */
+    
+    fprintf(fort_header, "        INTEGER, PARAMETER :: H5R_DSET_REG_REF_BUF_SIZE_F = %u\n", H5_SIZEOF_HADDR_T + 4 );
+
+
   /* Close files */
   endCfile();
   endFfile();
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 91e5f84..5b83f45 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -34,6 +33,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,7 +69,9 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/h5fc.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/h5fc.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/lt_vers.am
 
@@ -66,7 +84,7 @@ noinst_PROGRAMS = H5match_types$(EXEEXT) H5fortran_detect$(EXEEXT) \
 TESTS =
 subdir = fortran/src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -94,6 +112,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libhdf5_fortran_la_DEPENDENCIES = $(LIBHDF5)
@@ -121,9 +145,10 @@ am_libhdf5_fortran_la_OBJECTS = H5f90global.lo H5fortran_types.lo \
 	H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Tff$(F_STATUS).lo \
 	$(am__objects_1)
 libhdf5_fortran_la_OBJECTS = $(am_libhdf5_fortran_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libhdf5_fortran_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
 	$(AM_FCFLAGS) $(FCFLAGS) $(libhdf5_fortran_la_LDFLAGS) \
@@ -143,6 +168,18 @@ am__H5test_kind_SOURCES_DIST = $(srcdir)/H5test_kind.f90 \
 @FORTRAN_HAVE_SIZEOF_TRUE@	H5test_kind_SIZEOF.$(OBJEXT)
 H5test_kind_OBJECTS = $(am_H5test_kind_OBJECTS)
 H5test_kind_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -153,46 +190,51 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC    " $@;
+AM_V_FC = $(am__v_FC_ at AM_V@)
+am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
+am__v_FC_0 = @echo "  FC      " $@;
+am__v_FC_1 = 
 FCLD = $(FC)
 FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(libhdf5_fortran_la_SOURCES) $(H5fortran_detect_SOURCES) \
 	H5match_types.c $(H5test_kind_SOURCES)
 DIST_SOURCES = $(am__libhdf5_fortran_la_SOURCES_DIST) \
 	$(H5fortran_detect_SOURCES) H5match_types.c \
 	$(am__H5test_kind_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -211,12 +253,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -478,7 +517,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 
 # Include src directory in both Fortran and C flags (C compiler is used
@@ -568,6 +607,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -598,6 +641,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -611,7 +655,6 @@ h5fc: $(top_builddir)/config.status $(srcdir)/h5fc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -619,6 +662,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -634,13 +679,15 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libhdf5_fortran.la: $(libhdf5_fortran_la_OBJECTS) $(libhdf5_fortran_la_DEPENDENCIES) 
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libhdf5_fortran.la: $(libhdf5_fortran_la_OBJECTS) $(libhdf5_fortran_la_DEPENDENCIES) $(EXTRA_libhdf5_fortran_la_DEPENDENCIES) 
 	$(AM_V_FCLD)$(libhdf5_fortran_la_LINK) -rpath $(libdir) $(libhdf5_fortran_la_OBJECTS) $(libhdf5_fortran_la_LIBADD) $(LIBS)
 
 clean-noinstPROGRAMS:
@@ -651,13 +698,13 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-H5fortran_detect$(EXEEXT): $(H5fortran_detect_OBJECTS) $(H5fortran_detect_DEPENDENCIES) 
+H5fortran_detect$(EXEEXT): $(H5fortran_detect_OBJECTS) $(H5fortran_detect_DEPENDENCIES) $(EXTRA_H5fortran_detect_DEPENDENCIES) 
 	@rm -f H5fortran_detect$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(H5fortran_detect_OBJECTS) $(H5fortran_detect_LDADD) $(LIBS)
-H5match_types$(EXEEXT): $(H5match_types_OBJECTS) $(H5match_types_DEPENDENCIES) 
+H5match_types$(EXEEXT): $(H5match_types_OBJECTS) $(H5match_types_DEPENDENCIES) $(EXTRA_H5match_types_DEPENDENCIES) 
 	@rm -f H5match_types$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(H5match_types_OBJECTS) $(H5match_types_LDADD) $(LIBS)
-H5test_kind$(EXEEXT): $(H5test_kind_OBJECTS) $(H5test_kind_DEPENDENCIES) 
+H5test_kind$(EXEEXT): $(H5test_kind_OBJECTS) $(H5test_kind_DEPENDENCIES) $(EXTRA_H5test_kind_DEPENDENCIES) 
 	@rm -f H5test_kind$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(H5test_kind_OBJECTS) $(H5test_kind_LDADD) $(LIBS)
 
@@ -688,54 +735,44 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 .f90.o:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 .f90.obj:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
 
 .f90.lo:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 H5test_kind.o: $(srcdir)/H5test_kind.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind.o $(FCFLAGS_f90) `test -f '$(srcdir)/H5test_kind.f90' || echo '$(srcdir)/'`$(srcdir)/H5test_kind.f90
+	$(AM_V_FC)$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind.o $(FCFLAGS_f90) `test -f '$(srcdir)/H5test_kind.f90' || echo '$(srcdir)/'`$(srcdir)/H5test_kind.f90
 
 H5test_kind.obj: $(srcdir)/H5test_kind.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind.obj $(FCFLAGS_f90) `if test -f '$(srcdir)/H5test_kind.f90'; then $(CYGPATH_W) '$(srcdir)/H5test_kind.f90'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/H5test_kind.f90'; fi`
+	$(AM_V_FC)$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind.obj $(FCFLAGS_f90) `if test -f '$(srcdir)/H5test_kind.f90'; then $(CYGPATH_W) '$(srcdir)/H5test_kind.f90'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/H5test_kind.f90'; fi`
 
 H5test_kind_SIZEOF.o: $(srcdir)/H5test_kind_SIZEOF.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind_SIZEOF.o $(FCFLAGS_f90) `test -f '$(srcdir)/H5test_kind_SIZEOF.f90' || echo '$(srcdir)/'`$(srcdir)/H5test_kind_SIZEOF.f90
+	$(AM_V_FC)$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind_SIZEOF.o $(FCFLAGS_f90) `test -f '$(srcdir)/H5test_kind_SIZEOF.f90' || echo '$(srcdir)/'`$(srcdir)/H5test_kind_SIZEOF.f90
 
 H5test_kind_SIZEOF.obj: $(srcdir)/H5test_kind_SIZEOF.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind_SIZEOF.obj $(FCFLAGS_f90) `if test -f '$(srcdir)/H5test_kind_SIZEOF.f90'; then $(CYGPATH_W) '$(srcdir)/H5test_kind_SIZEOF.f90'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/H5test_kind_SIZEOF.f90'; fi`
+	$(AM_V_FC)$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o H5test_kind_SIZEOF.obj $(FCFLAGS_f90) `if test -f '$(srcdir)/H5test_kind_SIZEOF.f90'; then $(CYGPATH_W) '$(srcdir)/H5test_kind_SIZEOF.f90'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/H5test_kind_SIZEOF.f90'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -792,6 +829,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -845,10 +896,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -939,7 +995,7 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-generic clean-libLTLIBRARIES clean-libtool \
-	clean-local clean-noinstPROGRAMS ctags distclean \
+	clean-local clean-noinstPROGRAMS cscopelist ctags distclean \
 	distclean-compile distclean-generic distclean-libtool \
 	distclean-local distclean-tags distdir dvi dvi-am html html-am \
 	info info-am install install-am install-data install-data-am \
@@ -1083,7 +1139,7 @@ HDF5mpio.lo:         $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5_ff$(F_STATUS).lo
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -1109,7 +1165,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -1133,7 +1189,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -1143,7 +1199,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1233,7 +1289,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1263,7 +1319,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/fortran/src/hdf5_fortrandll.def b/fortran/src/hdf5_fortrandll.def
index 29e83f5..c0b1d10 100644
--- a/fortran/src/hdf5_fortrandll.def
+++ b/fortran/src/hdf5_fortrandll.def
@@ -429,7 +429,8 @@ H5R_PROVISIONAL_mp_H5RCREATE_OBJECT_F
 H5R_PROVISIONAL_mp_H5RCREATE_REGION_F
 H5R_PROVISIONAL_mp_H5RDEREFERENCE_OBJECT_F
 H5R_PROVISIONAL_mp_H5RDEREFERENCE_REGION_F
-H5R_mp_H5RGET_REGION_REGION_F
+H5R_PROVISIONAL_mp_H5RGET_REGION_REGION_F
+
 H5R_mp_H5RGET_OBJECT_TYPE_OBJ_F
 H5R_PROVISIONAL_mp_H5RGET_NAME_OBJECT_F
 H5R_PROVISIONAL_mp_H5RGET_NAME_REGION_F
diff --git a/fortran/src/phdf5_fortrandll.def b/fortran/src/phdf5_fortrandll.def
index 7a196cd..2beca21 100644
--- a/fortran/src/phdf5_fortrandll.def
+++ b/fortran/src/phdf5_fortrandll.def
@@ -429,7 +429,8 @@ H5R_PROVISIONAL_mp_H5RCREATE_OBJECT_F
 H5R_PROVISIONAL_mp_H5RCREATE_REGION_F
 H5R_PROVISIONAL_mp_H5RDEREFERENCE_OBJECT_F
 H5R_PROVISIONAL_mp_H5RDEREFERENCE_REGION_F
-H5R_mp_H5RGET_REGION_REGION_F
+H5R_PROVISIONAL_mp_H5RGET_REGION_REGION_F
+
 H5R_mp_H5RGET_OBJECT_TYPE_OBJ_F
 H5R_PROVISIONAL_mp_H5RGET_NAME_OBJECT_F
 H5R_PROVISIONAL_mp_H5RGET_NAME_REGION_F
@@ -528,4 +529,9 @@ H5Z_mp_H5ZFILTER_AVAIL_F
 H5Z_mp_H5ZGET_FILTER_INFO_F
 ; Parallel
 H5FDMPIO_mp_H5PSET_FAPL_MPIO_F
+H5FDMPIO_mp_H5PGET_FAPL_MPIO_F
 H5FDMPIO_mp_H5PSET_DXPL_MPIO_F
+H5FDMPIO_mp_H5PGET_DXPL_MPIO_F
+H5FDMPIO_mp_H5PSET_FAPL_MPIPOSIX_F
+H5FDMPIO_mp_H5PGET_FAPL_MPIPOSIX_F
+H5FDMPIO_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F
\ No newline at end of file
diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in
index 27198a8..e42b080 100644
--- a/fortran/test/Makefile.in
+++ b/fortran/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,6 +68,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 
@@ -61,10 +78,10 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 @FORTRAN_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
 @FORTRAN_2003_CONDITIONAL_F_TRUE at am__append_2 = fortranlib_test_F03
 check_PROGRAMS = $(am__EXEEXT_2)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_2)
 subdir = fortran/test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -75,9 +92,10 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
 libh5test_fortran_la_LIBADD =
 am_libh5test_fortran_la_OBJECTS = tf.lo t.lo
 libh5test_fortran_la_OBJECTS = $(am_libh5test_fortran_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 @FORTRAN_2003_CONDITIONAL_F_TRUE at am__EXEEXT_1 =  \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	fortranlib_test_F03$(EXEEXT)
 am__EXEEXT_2 = fortranlib_test$(EXEEXT) fflush1$(EXEEXT) \
@@ -129,6 +147,18 @@ fortranlib_test_F03_OBJECTS = $(am_fortranlib_test_F03_OBJECTS)
 fortranlib_test_F03_LDADD = $(LDADD)
 fortranlib_test_F03_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \
 	$(LIBH5F) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -139,35 +169,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC    " $@;
+AM_V_FC = $(am__v_FC_ at AM_V@)
+am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
+am__v_FC_0 = @echo "  FC      " $@;
+am__v_FC_1 = 
 FCLD = $(FC)
 FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(libh5test_fortran_la_SOURCES) $(fflush1_SOURCES) \
 	$(fflush2_SOURCES) $(fortranlib_test_SOURCES) \
 	$(fortranlib_test_1_8_SOURCES) $(fortranlib_test_F03_SOURCES)
@@ -175,12 +203,19 @@ DIST_SOURCES = $(libh5test_fortran_la_SOURCES) $(fflush1_SOURCES) \
 	$(fflush2_SOURCES) $(fortranlib_test_SOURCES) \
 	$(fortranlib_test_1_8_SOURCES) \
 	$(am__fortranlib_test_F03_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -201,12 +236,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -517,6 +549,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -546,6 +582,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -558,13 +595,15 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libh5test_fortran.la: $(libh5test_fortran_la_OBJECTS) $(libh5test_fortran_la_DEPENDENCIES) 
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libh5test_fortran.la: $(libh5test_fortran_la_OBJECTS) $(libh5test_fortran_la_DEPENDENCIES) $(EXTRA_libh5test_fortran_la_DEPENDENCIES) 
 	$(AM_V_FCLD)$(FCLINK)  $(libh5test_fortran_la_OBJECTS) $(libh5test_fortran_la_LIBADD) $(LIBS)
 
 clean-checkPROGRAMS:
@@ -575,19 +614,19 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-fflush1$(EXEEXT): $(fflush1_OBJECTS) $(fflush1_DEPENDENCIES) 
+fflush1$(EXEEXT): $(fflush1_OBJECTS) $(fflush1_DEPENDENCIES) $(EXTRA_fflush1_DEPENDENCIES) 
 	@rm -f fflush1$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(fflush1_OBJECTS) $(fflush1_LDADD) $(LIBS)
-fflush2$(EXEEXT): $(fflush2_OBJECTS) $(fflush2_DEPENDENCIES) 
+fflush2$(EXEEXT): $(fflush2_OBJECTS) $(fflush2_DEPENDENCIES) $(EXTRA_fflush2_DEPENDENCIES) 
 	@rm -f fflush2$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(fflush2_OBJECTS) $(fflush2_LDADD) $(LIBS)
-fortranlib_test$(EXEEXT): $(fortranlib_test_OBJECTS) $(fortranlib_test_DEPENDENCIES) 
+fortranlib_test$(EXEEXT): $(fortranlib_test_OBJECTS) $(fortranlib_test_DEPENDENCIES) $(EXTRA_fortranlib_test_DEPENDENCIES) 
 	@rm -f fortranlib_test$(EXEEXT)
 	$(AM_V_FCLD)$(fortranlib_test_LINK) $(fortranlib_test_OBJECTS) $(fortranlib_test_LDADD) $(LIBS)
-fortranlib_test_1_8$(EXEEXT): $(fortranlib_test_1_8_OBJECTS) $(fortranlib_test_1_8_DEPENDENCIES) 
+fortranlib_test_1_8$(EXEEXT): $(fortranlib_test_1_8_OBJECTS) $(fortranlib_test_1_8_DEPENDENCIES) $(EXTRA_fortranlib_test_1_8_DEPENDENCIES) 
 	@rm -f fortranlib_test_1_8$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(fortranlib_test_1_8_OBJECTS) $(fortranlib_test_1_8_LDADD) $(LIBS)
-fortranlib_test_F03$(EXEEXT): $(fortranlib_test_F03_OBJECTS) $(fortranlib_test_F03_DEPENDENCIES) 
+fortranlib_test_F03$(EXEEXT): $(fortranlib_test_F03_OBJECTS) $(fortranlib_test_F03_DEPENDENCIES) $(EXTRA_fortranlib_test_F03_DEPENDENCIES) 
 	@rm -f fortranlib_test_F03$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(fortranlib_test_F03_OBJECTS) $(fortranlib_test_F03_LDADD) $(LIBS)
 
@@ -602,150 +641,116 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 .f90.o:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 .f90.obj:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
 
 .f90.lo:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 fortranlib_test-fortranlib_test.o: fortranlib_test.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-fortranlib_test.o $(FCFLAGS_f90) `test -f 'fortranlib_test.f90' || echo '$(srcdir)/'`fortranlib_test.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-fortranlib_test.o $(FCFLAGS_f90) `test -f 'fortranlib_test.f90' || echo '$(srcdir)/'`fortranlib_test.f90
 
 fortranlib_test-fortranlib_test.obj: fortranlib_test.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-fortranlib_test.obj $(FCFLAGS_f90) `if test -f 'fortranlib_test.f90'; then $(CYGPATH_W) 'fortranlib_test.f90'; else $(CYGPATH_W) '$(srcdir)/fortranlib_test.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-fortranlib_test.obj $(FCFLAGS_f90) `if test -f 'fortranlib_test.f90'; then $(CYGPATH_W) 'fortranlib_test.f90'; else $(CYGPATH_W) '$(srcdir)/fortranlib_test.f90'; fi`
 
 fortranlib_test-tH5F.o: tH5F.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5F.o $(FCFLAGS_f90) `test -f 'tH5F.f90' || echo '$(srcdir)/'`tH5F.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5F.o $(FCFLAGS_f90) `test -f 'tH5F.f90' || echo '$(srcdir)/'`tH5F.f90
 
 fortranlib_test-tH5F.obj: tH5F.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5F.obj $(FCFLAGS_f90) `if test -f 'tH5F.f90'; then $(CYGPATH_W) 'tH5F.f90'; else $(CYGPATH_W) '$(srcdir)/tH5F.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5F.obj $(FCFLAGS_f90) `if test -f 'tH5F.f90'; then $(CYGPATH_W) 'tH5F.f90'; else $(CYGPATH_W) '$(srcdir)/tH5F.f90'; fi`
 
 fortranlib_test-tH5D.o: tH5D.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5D.o $(FCFLAGS_f90) `test -f 'tH5D.f90' || echo '$(srcdir)/'`tH5D.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5D.o $(FCFLAGS_f90) `test -f 'tH5D.f90' || echo '$(srcdir)/'`tH5D.f90
 
 fortranlib_test-tH5D.obj: tH5D.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5D.obj $(FCFLAGS_f90) `if test -f 'tH5D.f90'; then $(CYGPATH_W) 'tH5D.f90'; else $(CYGPATH_W) '$(srcdir)/tH5D.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5D.obj $(FCFLAGS_f90) `if test -f 'tH5D.f90'; then $(CYGPATH_W) 'tH5D.f90'; else $(CYGPATH_W) '$(srcdir)/tH5D.f90'; fi`
 
 fortranlib_test-tH5R.o: tH5R.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5R.o $(FCFLAGS_f90) `test -f 'tH5R.f90' || echo '$(srcdir)/'`tH5R.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5R.o $(FCFLAGS_f90) `test -f 'tH5R.f90' || echo '$(srcdir)/'`tH5R.f90
 
 fortranlib_test-tH5R.obj: tH5R.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5R.obj $(FCFLAGS_f90) `if test -f 'tH5R.f90'; then $(CYGPATH_W) 'tH5R.f90'; else $(CYGPATH_W) '$(srcdir)/tH5R.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5R.obj $(FCFLAGS_f90) `if test -f 'tH5R.f90'; then $(CYGPATH_W) 'tH5R.f90'; else $(CYGPATH_W) '$(srcdir)/tH5R.f90'; fi`
 
 fortranlib_test-tH5S.o: tH5S.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5S.o $(FCFLAGS_f90) `test -f 'tH5S.f90' || echo '$(srcdir)/'`tH5S.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5S.o $(FCFLAGS_f90) `test -f 'tH5S.f90' || echo '$(srcdir)/'`tH5S.f90
 
 fortranlib_test-tH5S.obj: tH5S.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5S.obj $(FCFLAGS_f90) `if test -f 'tH5S.f90'; then $(CYGPATH_W) 'tH5S.f90'; else $(CYGPATH_W) '$(srcdir)/tH5S.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5S.obj $(FCFLAGS_f90) `if test -f 'tH5S.f90'; then $(CYGPATH_W) 'tH5S.f90'; else $(CYGPATH_W) '$(srcdir)/tH5S.f90'; fi`
 
 fortranlib_test-tH5T.o: tH5T.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5T.o $(FCFLAGS_f90) `test -f 'tH5T.f90' || echo '$(srcdir)/'`tH5T.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5T.o $(FCFLAGS_f90) `test -f 'tH5T.f90' || echo '$(srcdir)/'`tH5T.f90
 
 fortranlib_test-tH5T.obj: tH5T.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5T.obj $(FCFLAGS_f90) `if test -f 'tH5T.f90'; then $(CYGPATH_W) 'tH5T.f90'; else $(CYGPATH_W) '$(srcdir)/tH5T.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5T.obj $(FCFLAGS_f90) `if test -f 'tH5T.f90'; then $(CYGPATH_W) 'tH5T.f90'; else $(CYGPATH_W) '$(srcdir)/tH5T.f90'; fi`
 
 fortranlib_test-tH5VL.o: tH5VL.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5VL.o $(FCFLAGS_f90) `test -f 'tH5VL.f90' || echo '$(srcdir)/'`tH5VL.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5VL.o $(FCFLAGS_f90) `test -f 'tH5VL.f90' || echo '$(srcdir)/'`tH5VL.f90
 
 fortranlib_test-tH5VL.obj: tH5VL.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5VL.obj $(FCFLAGS_f90) `if test -f 'tH5VL.f90'; then $(CYGPATH_W) 'tH5VL.f90'; else $(CYGPATH_W) '$(srcdir)/tH5VL.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5VL.obj $(FCFLAGS_f90) `if test -f 'tH5VL.f90'; then $(CYGPATH_W) 'tH5VL.f90'; else $(CYGPATH_W) '$(srcdir)/tH5VL.f90'; fi`
 
 fortranlib_test-tH5Z.o: tH5Z.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Z.o $(FCFLAGS_f90) `test -f 'tH5Z.f90' || echo '$(srcdir)/'`tH5Z.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Z.o $(FCFLAGS_f90) `test -f 'tH5Z.f90' || echo '$(srcdir)/'`tH5Z.f90
 
 fortranlib_test-tH5Z.obj: tH5Z.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Z.obj $(FCFLAGS_f90) `if test -f 'tH5Z.f90'; then $(CYGPATH_W) 'tH5Z.f90'; else $(CYGPATH_W) '$(srcdir)/tH5Z.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Z.obj $(FCFLAGS_f90) `if test -f 'tH5Z.f90'; then $(CYGPATH_W) 'tH5Z.f90'; else $(CYGPATH_W) '$(srcdir)/tH5Z.f90'; fi`
 
 fortranlib_test-tH5Sselect.o: tH5Sselect.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Sselect.o $(FCFLAGS_f90) `test -f 'tH5Sselect.f90' || echo '$(srcdir)/'`tH5Sselect.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Sselect.o $(FCFLAGS_f90) `test -f 'tH5Sselect.f90' || echo '$(srcdir)/'`tH5Sselect.f90
 
 fortranlib_test-tH5Sselect.obj: tH5Sselect.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Sselect.obj $(FCFLAGS_f90) `if test -f 'tH5Sselect.f90'; then $(CYGPATH_W) 'tH5Sselect.f90'; else $(CYGPATH_W) '$(srcdir)/tH5Sselect.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5Sselect.obj $(FCFLAGS_f90) `if test -f 'tH5Sselect.f90'; then $(CYGPATH_W) 'tH5Sselect.f90'; else $(CYGPATH_W) '$(srcdir)/tH5Sselect.f90'; fi`
 
 fortranlib_test-tH5P.o: tH5P.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5P.o $(FCFLAGS_f90) `test -f 'tH5P.f90' || echo '$(srcdir)/'`tH5P.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5P.o $(FCFLAGS_f90) `test -f 'tH5P.f90' || echo '$(srcdir)/'`tH5P.f90
 
 fortranlib_test-tH5P.obj: tH5P.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5P.obj $(FCFLAGS_f90) `if test -f 'tH5P.f90'; then $(CYGPATH_W) 'tH5P.f90'; else $(CYGPATH_W) '$(srcdir)/tH5P.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5P.obj $(FCFLAGS_f90) `if test -f 'tH5P.f90'; then $(CYGPATH_W) 'tH5P.f90'; else $(CYGPATH_W) '$(srcdir)/tH5P.f90'; fi`
 
 fortranlib_test-tH5A.o: tH5A.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5A.o $(FCFLAGS_f90) `test -f 'tH5A.f90' || echo '$(srcdir)/'`tH5A.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5A.o $(FCFLAGS_f90) `test -f 'tH5A.f90' || echo '$(srcdir)/'`tH5A.f90
 
 fortranlib_test-tH5A.obj: tH5A.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5A.obj $(FCFLAGS_f90) `if test -f 'tH5A.f90'; then $(CYGPATH_W) 'tH5A.f90'; else $(CYGPATH_W) '$(srcdir)/tH5A.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5A.obj $(FCFLAGS_f90) `if test -f 'tH5A.f90'; then $(CYGPATH_W) 'tH5A.f90'; else $(CYGPATH_W) '$(srcdir)/tH5A.f90'; fi`
 
 fortranlib_test-tH5I.o: tH5I.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5I.o $(FCFLAGS_f90) `test -f 'tH5I.f90' || echo '$(srcdir)/'`tH5I.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5I.o $(FCFLAGS_f90) `test -f 'tH5I.f90' || echo '$(srcdir)/'`tH5I.f90
 
 fortranlib_test-tH5I.obj: tH5I.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5I.obj $(FCFLAGS_f90) `if test -f 'tH5I.f90'; then $(CYGPATH_W) 'tH5I.f90'; else $(CYGPATH_W) '$(srcdir)/tH5I.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5I.obj $(FCFLAGS_f90) `if test -f 'tH5I.f90'; then $(CYGPATH_W) 'tH5I.f90'; else $(CYGPATH_W) '$(srcdir)/tH5I.f90'; fi`
 
 fortranlib_test-tH5G.o: tH5G.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5G.o $(FCFLAGS_f90) `test -f 'tH5G.f90' || echo '$(srcdir)/'`tH5G.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5G.o $(FCFLAGS_f90) `test -f 'tH5G.f90' || echo '$(srcdir)/'`tH5G.f90
 
 fortranlib_test-tH5G.obj: tH5G.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5G.obj $(FCFLAGS_f90) `if test -f 'tH5G.f90'; then $(CYGPATH_W) 'tH5G.f90'; else $(CYGPATH_W) '$(srcdir)/tH5G.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5G.obj $(FCFLAGS_f90) `if test -f 'tH5G.f90'; then $(CYGPATH_W) 'tH5G.f90'; else $(CYGPATH_W) '$(srcdir)/tH5G.f90'; fi`
 
 fortranlib_test-tH5E.o: tH5E.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5E.o $(FCFLAGS_f90) `test -f 'tH5E.f90' || echo '$(srcdir)/'`tH5E.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5E.o $(FCFLAGS_f90) `test -f 'tH5E.f90' || echo '$(srcdir)/'`tH5E.f90
 
 fortranlib_test-tH5E.obj: tH5E.f90
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5E.obj $(FCFLAGS_f90) `if test -f 'tH5E.f90'; then $(CYGPATH_W) 'tH5E.f90'; else $(CYGPATH_W) '$(srcdir)/tH5E.f90'; fi`
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5E.obj $(FCFLAGS_f90) `if test -f 'tH5E.f90'; then $(CYGPATH_W) 'tH5E.f90'; else $(CYGPATH_W) '$(srcdir)/tH5E.f90'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -802,6 +807,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -851,10 +870,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -942,17 +966,18 @@ uninstall-am:
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am tags uninstall uninstall-am
+	clean-noinstLTLIBRARIES cscopelist ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -973,7 +998,7 @@ fflush2.chkexe_: fflush1.chkexe_
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -999,7 +1024,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -1023,7 +1048,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -1033,7 +1058,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1123,7 +1148,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1153,7 +1178,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/fortran/test/fortranlib_test_1_8.f90 b/fortran/test/fortranlib_test_1_8.f90
index 321cb99..d3ced72 100644
--- a/fortran/test/fortranlib_test_1_8.f90
+++ b/fortran/test/fortranlib_test_1_8.f90
@@ -94,12 +94,6 @@ PROGRAM fortranlibtest
        total_error)
 
   ret_total_error = 0
-  CALL test_nbit(cleanup, ret_total_error )
-  CALL write_test_status(ret_total_error, &
-       ' Testing nbit filter', &
-       total_error)
-
-  ret_total_error = 0
   CALL test_scaleoffset(cleanup, ret_total_error )
   CALL write_test_status(ret_total_error, &
        ' Testing scaleoffset filter', &
@@ -401,141 +395,6 @@ SUBROUTINE test_h5s_encode(cleanup, total_error)
 END SUBROUTINE test_h5s_encode
 
 !-------------------------------------------------------------------------
-! Function:    test_nbit
-!
-! Purpose:     Tests (real) datatype for nbit filter
-!
-! Return:      Success:        0
-!              Failure:        >0
-!
-! Programmer:  M. Scot Breitenfeld
-!              Decemeber 7, 2010
-!
-! Modifications:
-!
-!-------------------------------------------------------------------------
-!
-
-SUBROUTINE test_nbit(cleanup, total_error )
-
-  USE HDF5
-
-  IMPLICIT NONE
-  INTEGER, PARAMETER :: wp = KIND(1.0)
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(INOUT) :: total_error
-  INTEGER(hid_t) :: file
-  
-  INTEGER(hid_t) :: dataset, datatype, space, dc
-  INTEGER(hsize_t), DIMENSION(1:2) :: dims = (/2,5/)
-  INTEGER(hsize_t), DIMENSION(1:2) :: chunk_dim = (/2,5/)
-  ! orig_data[] are initialized to be within the range that can be represented by
-  ! dataset datatype (no precision loss during datatype conversion)
-  !
-  REAL(kind=wp), DIMENSION(1:2,1:5) :: orig_data = RESHAPE( (/188384.00, 19.103516, -1.0831790e9, -84.242188, &
-       5.2045898, -49140.000, 2350.2500, -3.2110596e-1, 6.4998865e-5, -0.0000000/) , (/2,5/) )
-  REAL(kind=wp), DIMENSION(1:2,1:5) :: new_data
-  INTEGER(size_t) :: PRECISION, offset
-  INTEGER :: error
-  LOGICAL :: status
-  INTEGER*8 :: ii
-  INTEGER(size_t) :: i, j
-
-
-  ! check to see if filter is available
-  CALL H5Zfilter_avail_f(H5Z_FILTER_NBIT_F, status, error)
-  IF(.NOT.status)THEN ! We don't have H5Z_FILTER_NBIT_F filter
-     total_error = -1     ! so return
-     RETURN
-  ENDIF
-
-  CALL H5Fcreate_f("nbit.h5", H5F_ACC_TRUNC_F, file, error)
-  CALL check("H5Fcreate_f", error, total_error)
-
-  ! Define dataset datatype (integer), and set precision, offset
-  CALL H5Tcopy_f(H5T_IEEE_F32BE, datatype, error)
-  CALL CHECK(" H5Tcopy_f", error, total_error)
-  CALL H5Tset_fields_f(datatype, 26_size_t, 20_size_t, 6_size_t, 7_size_t, 13_size_t, error)
-  CALL CHECK(" H5Tset_fields_f", error, total_error)
-  offset = 7
-  CALL H5Tset_offset_f(datatype, offset, error)
-  CALL CHECK(" H5Tset_offset_f", error, total_error)
-  PRECISION = 20
-  CALL H5Tset_precision_f(datatype,PRECISION, error)
-  CALL CHECK(" H5Tset_precision_f", error, total_error)
-  
-  CALL H5Tset_size_f(datatype, 4_size_t, error)
-  CALL CHECK(" H5Tset_size_f", error, total_error)
-  
-  CALL H5Tset_ebias_f(datatype, 31_size_t, error)
-  CALL CHECK(" H5Tset_ebias_f", error, total_error)
- 
-  ! Create the data space 
-  CALL H5Screate_simple_f(2, dims, space, error)
-  CALL CHECK(" H5Screate_simple_f", error, total_error)
-
-  ! USE nbit filter
-  CALL H5Pcreate_f(H5P_DATASET_CREATE_F, dc, error)
-  CALL CHECK(" H5Pcreate_f", error, total_error)
-
-  CALL H5Pset_chunk_f(dc, 2, chunk_dim, error)
-  CALL CHECK(" H5Pset_chunk_f", error, total_error)
-  CALL H5Pset_nbit_f(dc, error)
-  CALL CHECK(" H5Pset_nbit_f", error, total_error)
-
-  ! Create the dataset
-  CALL  H5Dcreate_f(file, "nbit_real", datatype, &
-       space, dataset, error, dc)
-  CALL CHECK(" H5Dcreate_f", error, total_error)
-
-  !----------------------------------------------------------------------
-  ! STEP 1: Test nbit by setting up a chunked dataset and writing
-  ! to it.
-  !----------------------------------------------------------------------
-  !
-  CALL H5Dwrite_f(dataset, H5T_NATIVE_REAL, orig_data, dims, error)
-  CALL CHECK(" H5Dwrite_f", error, total_error)
-
-  !----------------------------------------------------------------------
-  ! STEP 2: Try to read the data we just wrote.
-  !----------------------------------------------------------------------
-  !  
-  CALL H5Dread_f(dataset, H5T_NATIVE_REAL, new_data, dims, error)
-  CALL CHECK(" H5Dread_f", error, total_error)
-
-  ! Check that the values read are the same as the values written
-  ! Assume size of long long = size of double
-  !
-  i_loop: DO i = 1, dims(1)
-     j_loop: DO j = 1, dims(2)
-        IF(.NOT.(orig_data(i,j).EQ.orig_data(i,j))) CYCLE  ! skip IF value is NaN
-        IF(new_data(i,j) .NE. orig_data(i,j))THEN
-           total_error = total_error + 1
-           WRITE(*,'("    Read different values than written.")')
-           WRITE(*,'("    At index ", 2(1X,I0))') i, j
-           EXIT i_loop
-        END IF
-     ENDDO j_loop
-  ENDDO i_loop
-
-  !----------------------------------------------------------------------
-  ! Cleanup
-  !----------------------------------------------------------------------
-  !
-  CALL H5Tclose_f(datatype, error)
-  CALL CHECK(" H5Tclose_f", error, total_error)
-  CALL H5Pclose_f(dc, error)
-  CALL CHECK(" H5Pclose_f", error, total_error)
-  CALL H5Sclose_f(space, error)
-  CALL CHECK(" H5Sclose_f", error, total_error)
-  CALL H5Dclose_f(dataset, error)
-  CALL CHECK(" H5Dclose_f", error, total_error)
-  CALL H5Fclose_f(file, error)
-  CALL CHECK(" H5Fclose_f", error, total_error)
-
-END SUBROUTINE test_nbit
-
-!-------------------------------------------------------------------------
 ! Function:    test_scaleoffset
 !
 ! Purpose:     Tests the integer datatype for scaleoffset filter
diff --git a/fortran/test/fortranlib_test_F03.f90 b/fortran/test/fortranlib_test_F03.f90
index 8ebee82..bdc12d6 100644
--- a/fortran/test/fortranlib_test_F03.f90
+++ b/fortran/test/fortranlib_test_F03.f90
@@ -112,6 +112,10 @@ PROGRAM fortranlibtest_F03
   CALL write_test_status(ret_total_error, ' Testing writing/reading string datatypes, using C_LOC', total_error)
 
   ret_total_error = 0
+  CALL vl_test_special_char(ret_total_error)
+  CALL write_test_status(ret_total_error, ' Testing string datatypes containing control characters', total_error)
+
+  ret_total_error = 0
   CALL test_create(ret_total_error)
   CALL write_test_status(ret_total_error, &
        ' Testing filling functions', &
@@ -134,6 +138,11 @@ PROGRAM fortranlibtest_F03
   ret_total_error = 0
   CALL test_iter_group(ret_total_error)
   CALL write_test_status(ret_total_error, ' Testing Group Iteration Functionality', total_error)
+
+  ret_total_error = 0
+  CALL test_nbit(ret_total_error)
+  CALL write_test_status(ret_total_error, ' Testing nbit filter', total_error)
+
  
 !     write(*,*)
 !     write(*,*) '========================================='
diff --git a/fortran/test/tH5A.f90 b/fortran/test/tH5A.f90
index 03522f7..cecaded 100644
--- a/fortran/test/tH5A.f90
+++ b/fortran/test/tH5A.f90
@@ -100,7 +100,7 @@
      CHARACTER(LEN=35), DIMENSION(2) ::  aread_data ! Buffer to put read back
                                                ! string attr data
      CHARACTER ::  attr_character_data = 'A'
-     DOUBLE PRECISION,  DIMENSION(1) ::  attr_double_data = 3.459
+     REAL(KIND=Fortran_DOUBLE),  DIMENSION(1) ::  attr_double_data = 3.459
      REAL,         DIMENSION(1) ::  attr_real_data = 4.0
      INTEGER,      DIMENSION(1) ::  attr_integer_data = 5
      INTEGER(HSIZE_T), DIMENSION(7) :: data_dims
@@ -109,7 +109,7 @@
      CHARACTER :: aread_character_data ! variable to put read back Character attr data
      INTEGER, DIMENSION(1)  :: aread_integer_data ! variable to put read back integer attr data
      INTEGER, DIMENSION(1)  :: aread_null_data = 7 ! variable to put read back null attr data
-     DOUBLE PRECISION, DIMENSION(1)   :: aread_double_data ! variable to put read back double attr data
+     REAL(KIND=Fortran_DOUBLE), DIMENSION(1)   :: aread_double_data ! variable to put read back double attr data
      REAL, DIMENSION(1)  :: aread_real_data ! variable to put read back real attr data
 
      !
diff --git a/fortran/test/tH5E_F03.f90 b/fortran/test/tH5E_F03.f90
index e378aa7..04e3190 100644
--- a/fortran/test/tH5E_F03.f90
+++ b/fortran/test/tH5E_F03.f90
@@ -24,11 +24,187 @@
 ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 !
 ! USES
+!  liter_cb_mod
 !
 ! CONTAINS SUBROUTINES
+!  test_error
 !
 !*****
 
 ! *****************************************
 ! ***        H 5 E   T E S T S
 ! *****************************************
+
+MODULE test_my_hdf5_error_handler
+
+  IMPLICIT NONE
+
+CONTAINS
+
+!/****************************************************************
+!**
+!**  my_hdf5_error_handler: Custom error callback routine.
+!**
+!****************************************************************/
+
+    INTEGER FUNCTION my_hdf5_error_handler(estack_id, data_inout) bind(C)
+
+    ! This error function handle works with only version 2 error stack
+
+    USE HDF5
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+
+    ! estack_id is always passed from C as: H5E_DEFAULT
+    INTEGER(HID_T) :: estack_id 
+    ! data that was registered with H5Eset_auto_f
+!    INTEGER, DIMENSION(1:2) :: data_inout
+    INTEGER :: data_inout
+
+    PRINT*, " "
+    PRINT*, " Subtest: H5Eset_auto_f custom error message with callback, WITH DATA"
+    PRINT*, "         -This message should be written to standard out-  "
+    PRINT*, "          Data Values Passed In =", data_inout
+    PRINT*, " "
+
+    data_inout = 10*data_inout
+
+    my_hdf5_error_handler = 1 ! this is not used by the C routine
+
+  END FUNCTION my_hdf5_error_handler
+
+  INTEGER FUNCTION my_hdf5_error_handler_nodata(estack_id, data_inout) bind(C)
+
+    ! This error function handle works with only version 2 error stack
+
+    USE HDF5
+    USE ISO_C_BINDING
+    IMPLICIT NONE
+
+    ! estack_id is always passed from C as: H5E_DEFAULT
+    INTEGER(HID_T) :: estack_id 
+    ! data that was registered with H5Eset_auto_f
+    TYPE(C_PTR) :: data_inout
+    
+    PRINT*, " "
+    PRINT*, " Subtest: H5Eset_auto_f custom error message with callback, NO DATA"
+    PRINT*, "         -This message should be written to standard out-  "
+    PRINT*, " "
+
+    my_hdf5_error_handler_nodata = 1 ! this is not used by the C routine
+
+  END FUNCTION my_hdf5_error_handler_nodata
+  
+END MODULE test_my_hdf5_error_handler
+
+SUBROUTINE test_error(total_error)
+
+  USE HDF5 
+  USE ISO_C_BINDING
+  USE test_my_hdf5_error_handler
+
+  IMPLICIT NONE
+
+  INTEGER(hid_t), PARAMETER :: FAKE_ID = -1
+  INTEGER :: total_error
+  INTEGER(hid_t) :: file
+  INTEGER(hid_t) :: dataset, space
+  INTEGER(hid_t)  :: estack_id
+  INTEGER(hsize_t), DIMENSION(1:2) :: dims
+  CHARACTER(LEN=10) :: FUNC_test_error = "test_error"
+  TYPE(C_FUNPTR) :: old_func
+  TYPE(C_PTR) :: old_data, null_data
+  INTEGER :: error
+  TYPE(C_FUNPTR) :: op
+  INTEGER, DIMENSION(1:100,1:200), TARGET :: ipoints2
+  !!    INTEGER, DIMENSION(1:2), TARGET :: my_hdf5_error_handler_data
+  INTEGER, DIMENSION(:), POINTER :: ptr_data
+  INTEGER, TARGET :: my_hdf5_error_handler_data
+  TYPE(C_PTR) :: f_ptr
+  TYPE(C_FUNPTR) :: func
+
+  TYPE(C_PTR), TARGET :: f_ptr1
+  TYPE(C_FUNPTR), TARGET :: func1
+
+  INTEGER, DIMENSION(1:1) :: array_shape
+  LOGICAL :: is_associated
+
+  !    my_hdf5_error_handler_data(1:2) =(/1,2/)
+  my_hdf5_error_handler_data = 99
+  CALL h5fcreate_f("terror.h5", H5F_ACC_TRUNC_F, file, error)
+  CALL check("h5fcreate_f", error, total_error)
+
+  ! Create the data space
+  dims(1) = 10
+  dims(2) = 20
+  CALL H5Screate_simple_f(2, dims, space, error)
+  CALL check("h5screate_simple_f", error, total_error)
+
+  ! ** SET THE CUSTOMIZED PRINTING OF ERROR STACK **
+
+  ! set the customized error handling routine
+  func = c_funloc(my_hdf5_error_handler)
+
+  ! set the data sent to the customized routine
+  f_ptr = c_loc(my_hdf5_error_handler_data)
+
+  ! turn on automatic printing, and use a custom error routine with input data
+  CALL H5Eset_auto_f(1, error, H5E_DEFAULT_F, func, f_ptr)
+
+  ! Create the erring dataset
+  CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error)
+  CALL VERIFY("h5dcreate_f", error, -1, total_error)
+
+!!$    CALL VERIFY("H5Eset_auto_f",my_hdf5_error_handler_data(1),10, total_error)
+!!$    CALL VERIFY("H5Eset_auto_f",my_hdf5_error_handler_data(2),20, total_error)
+
+!!$  ! Test enabling and disabling default printing
+!!$
+!!$  CALL H5Eget_auto_f(H5E_DEFAULT_F, func1, f_ptr1, error)
+!!$  CALL VERIFY("H5Eget_auto_f", error, 0, total_error)
+
+  !    PRINT*,c_associated(f_ptr1)
+
+  ALLOCATE(ptr_data(1:2))
+  ptr_data = 0
+  array_shape(1) = 2
+  CALL C_F_POINTER(f_ptr1, ptr_data, array_shape)
+
+  !    ptr_data => f_ptr1(1)
+
+  !    PRINT*,ptr_data(1)
+
+!!$    if(old_data != NULL)
+!!$	TEST_ERROR;
+!!$#ifdef H5_USE_16_API
+!!$    if (old_func != (H5E_auto_t)H5Eprint)
+!!$	TEST_ERROR;
+!!$#else /* H5_USE_16_API */
+!!$    if (old_func != (H5E_auto2_t)H5Eprint2)
+!!$	TEST_ERROR;
+!!$#endif /* H5_USE_16_API */
+
+
+  ! set the customized error handling routine
+  func = c_funloc(my_hdf5_error_handler_nodata)
+  ! set the data sent to the customized routine as null
+  f_ptr = C_NULL_PTR
+  ! turn on automatic printing, and use a custom error routine with no input data
+  CALL H5Eset_auto_f(1, error, H5E_DEFAULT_F, func, f_ptr)
+
+  CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error)
+  CALL VERIFY("h5dcreate_f", error, -1, total_error)
+
+
+  ! turn on automatic printing with h5eprint_f which prints an error stack in the default manner.
+
+  !    func = c_funloc(h5eprint_f)
+  !    CALL H5Eset_auto_f(0, error, H5E_DEFAULT_F, func, C_NULL_PTR)
+
+  CALL H5Eset_auto_f(0, error)
+  CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error)
+
+  CALL H5Eset_auto_f(1, error)
+  CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error)
+
+END SUBROUTINE test_error
diff --git a/fortran/test/tH5T.f90 b/fortran/test/tH5T.f90
index 6af1ba6..b42a8e6 100644
--- a/fortran/test/tH5T.f90
+++ b/fortran/test/tH5T.f90
@@ -86,8 +86,8 @@
      CHARACTER(LEN=2), DIMENSION(dimsize)      :: char_member_out ! Buffer to read data out
      INTEGER, DIMENSION(dimsize)          :: int_member
      INTEGER, DIMENSION(dimsize)          :: int_member_out
-     DOUBLE PRECISION, DIMENSION(dimsize) :: double_member
-     DOUBLE PRECISION, DIMENSION(dimsize) :: double_member_out
+     REAL(KIND=Fortran_DOUBLE), DIMENSION(dimsize) :: double_member
+     REAL(KIND=Fortran_DOUBLE), DIMENSION(dimsize) :: double_member_out
      REAL, DIMENSION(dimsize)             :: real_member
      REAL, DIMENSION(dimsize)             :: real_member_out
      INTEGER :: i
@@ -108,6 +108,51 @@
      INTEGER(HID_T) :: decoded_sid1
      INTEGER(HID_T) :: decoded_tid1
 
+     INTEGER(HID_T) :: fixed_str1, fixed_str2
+     LOGICAL :: are_equal
+     INTEGER(SIZE_T), PARAMETER :: str_size = 10 
+     INTEGER(SIZE_T) :: query_size
+
+     ! Test h5tcreate_f with H5T_STRING_F option:
+     !   Create fixed-length string in two ways and make sure they are the same
+
+     CALL h5tcopy_f(H5T_FORTRAN_S1, fixed_str1, error)
+     CALL check("h5tcopy_f", error, total_error)
+     CALL h5tset_size_f(fixed_str1, str_size, error)
+     CALL check("h5tset_size_f", error, total_error)
+     CALL h5tset_strpad_f(fixed_str1, H5T_STR_NULLTERM_F, error)
+     CALL check("h5tset_strpad_f", error, total_error)
+     
+     CALL h5tcreate_f(H5T_STRING_F, str_size, fixed_str2, error)
+     CALL check("h5tcreate_f", error, total_error)
+     CALL h5tset_strpad_f(fixed_str2, H5T_STR_NULLTERM_F, error)
+     CALL check("h5tset_strpad_f", error, total_error)
+     
+     CALL h5tequal_f(fixed_str1, fixed_str2, are_equal, error)
+     IF(.NOT.are_equal)THEN
+        CALL check("h5tcreate_f", -1, total_error)
+     ENDIF
+     
+     CALL h5tget_size_f(fixed_str1, query_size, error)
+     CALL check("h5tget_size_f", error, total_error)
+     
+     IF(query_size.NE.str_size)THEN
+        CALL check("h5tget_size_f", -1, total_error)
+     ENDIF
+     
+     CALL h5tget_size_f(fixed_str2, query_size, error)
+     CALL check("h5tget_size_f", error, total_error)
+
+     IF(query_size.NE.str_size)THEN
+        CALL check("h5tget_size_f", -1, total_error)
+     ENDIF
+     
+     CALL h5tclose_f(fixed_str1,error)
+     CALL check("h5tclose_f", error, total_error)
+     
+     CALL h5tclose_f(fixed_str2,error)
+     CALL check("h5tclose_f", error, total_error)
+
      data_dims(1) = dimsize
      !
      ! Initialize data buffer.
diff --git a/fortran/test/tH5T_F03.f90 b/fortran/test/tH5T_F03.f90
index 215ac9e..dbd8b0a 100644
--- a/fortran/test/tH5T_F03.f90
+++ b/fortran/test/tH5T_F03.f90
@@ -103,7 +103,7 @@ SUBROUTINE test_array_compound_atomic(total_error)
 
   ! Create file 
   CALL h5fcreate_f(FILENAME,H5F_ACC_TRUNC_F,fid1,error)
-  CALL check("h5fcreate_f", error, total_error)    
+  CALL check("h5fcreate_f", error, total_error)
 
   ! Create dataspace for datasets 
   CALL h5screate_simple_f(SPACE1_RANK, sdims1, sid1, error)
@@ -1976,8 +1976,8 @@ SUBROUTINE t_regref(total_error)
 
   INTEGER(HSIZE_T), DIMENSION(1:1) :: maxdims
   INTEGER(hssize_t) :: npoints
-  TYPE(hdset_reg_ref_t_f), DIMENSION(1:dim0), TARGET :: wdata ! Write buffer
-  TYPE(hdset_reg_ref_t_f), DIMENSION(:), ALLOCATABLE, TARGET :: rdata ! Read buffer
+  TYPE(hdset_reg_ref_t_f03), DIMENSION(1:dim0), TARGET :: wdata ! Write buffer
+  TYPE(hdset_reg_ref_t_f03), DIMENSION(:), ALLOCATABLE, TARGET :: rdata ! Read buffer
 
   INTEGER(size_t) :: size
   CHARACTER(LEN=1), DIMENSION(1:ds2dim0,1:ds2dim1), TARGET :: wdata2
@@ -2058,7 +2058,6 @@ SUBROUTINE t_regref(total_error)
   CALL check("h5sclose_f",error, total_error)
   CALL h5fclose_f(file , error)
   CALL check("h5fclose_f",error, total_error)
-
   !
   ! Now we begin the read section of this example.
   !
@@ -2095,10 +2094,11 @@ SUBROUTINE t_regref(total_error)
      ! Open the referenced object, retrieve its region as a
      ! dataspace selection.
      !
-     CALL H5Rdereference_f(dset, rdata(i), dset2, error)
+     f_ptr = C_LOC(rdata(i))
+     CALL H5Rdereference_f(dset, H5R_DATASET_REGION_F, f_ptr, dset2, error)
      CALL check("H5Rdereference_f",error, total_error)
-     
-     CALL H5Rget_region_f(dset, rdata(i), space, error)
+ 
+     CALL H5Rget_region_f(dset, f_ptr, space, error)
      CALL check("H5Rget_region_f",error, total_error)
   
      !
@@ -2754,7 +2754,7 @@ SUBROUTINE t_string(total_error)
   CALL check("H5Dget_type_f",error, total_error)
   CALL H5Tget_size_f(filetype, size, error)
   CALL check("H5Tget_size_f",error, total_error)
-  CALL VERIFY("H5Tget_size_f", size, sdim, total_error)
+  CALL VERIFY("H5Tget_size_f", INT(size), INT(sdim), total_error)
   !
   ! Get dataspace.
   !
@@ -2800,4 +2800,291 @@ SUBROUTINE t_string(total_error)
 
 END SUBROUTINE t_string
 
+SUBROUTINE vl_test_special_char(cleanup, total_error)
+  
+  USE hdf5
+  IMPLICIT NONE
+  
+  INTERFACE
+     SUBROUTINE setup_buffer(data_in, line_lengths, char_type)
+       USE hdf5
+       USE ISO_C_BINDING
+       IMPLICIT NONE
+       CHARACTER(len=*), DIMENSION(:) :: data_in
+       INTEGER(size_t), DIMENSION(:) :: line_lengths
+       CHARACTER(KIND=C_CHAR,LEN=*) :: char_type
+     END SUBROUTINE setup_buffer
+  END INTERFACE
+  
+  LOGICAL, INTENT(IN) :: cleanup
+  INTEGER, INTENT(OUT) :: total_error
+  
+  CHARACTER(LEN=16), PARAMETER :: filename  = "t_controlchar.h5"
+  INTEGER, PARAMETER :: line_length = 10
+  INTEGER(hid_t) :: file
+  INTEGER(hid_t) :: dataset0
+  CHARACTER(len=line_length), DIMENSION(1:100) :: data_in
+  CHARACTER(len=line_length), DIMENSION(1:100) :: data_out
+  INTEGER(size_t), DIMENSION(1:100) :: line_lengths
+  INTEGER(hid_t) :: string_id, space, dcpl
+  INTEGER(hsize_t), DIMENSION(1:1) :: dims = (/0/)
+  INTEGER(hsize_t), DIMENSION(1:1) :: max_dims = (/0/)
+  INTEGER(hsize_t), DIMENSION(1:2) :: data_dims = (/0,0/)
+  INTEGER(hsize_t), DIMENSION(1:1) :: chunk =(/10/)
+  INTEGER, PARAMETER :: ncontrolchar = 7
+  CHARACTER(KIND=C_CHAR,LEN=1), DIMENSION(1:ncontrolchar) :: controlchar = &
+       (/C_ALERT, C_BACKSPACE,C_CARRIAGE_RETURN, C_FORM_FEED,C_HORIZONTAL_TAB,C_VERTICAL_TAB, C_NEW_LINE/)
+  INTEGER :: i, j, n, error
+  n = 8
+  !
+  ! Create a new file using the default properties.
+  !
+  CALL h5fcreate_f(filename, H5F_ACC_TRUNC_F, file, error)
+  CALL check("h5fcreate_f",error, total_error)
+ 
+  max_dims = (/H5S_UNLIMITED_F/)
+
+  !
+  ! Create the memory datatype.
+  !
+  CALL h5tcopy_f(h5t_string, string_id, error)
+  CALL check("h5tcopy_f", error, total_error)
+  CALL h5tset_strpad_f(string_id, h5t_str_nullpad_f, error)
+  CALL check("h5tset_strpad_f", error, total_error)
+  dims(1) = n
+  !
+  ! Create dataspace.
+  !
+  CALL h5screate_simple_f(1, dims, space, error, max_dims)
+  CALL check("h5screate_simple_f", error, total_error)
+  CALL h5pcreate_f(h5p_dataset_create_f, dcpl, error)
+  CALL check("h5pcreate_f", error, total_error)
+  CALL h5pset_chunk_f(dcpl, 1, chunk, error)
+  CALL check("h5pset_chunk_f", error, total_error)
+  
+  data_dims(1) = line_length
+  data_dims(2) = n
+  !
+  ! Create data with strings containing various control characters.
+  !
+  DO i = 1, ncontrolchar
+     !
+     ! Create the dataset, for the string with control character and write the string data to it.
+     !
+     CALL h5dcreate_f(file, controlchar(i), string_id, space, dataset0, error, dcpl)
+     CALL check("h5dcreate_f", error, total_error)
+     CALL setup_buffer(data_in(1:n), line_lengths, controlchar(i))
+     CALL h5dwrite_vl_f(dataset0, string_id, data_in(1:n), data_dims, line_lengths(1:n), error, space)
+     CALL check("h5dwrite_vl_f", error, total_error)
+     !
+     ! Read the string back.
+     !
+     CALL h5dread_vl_f(dataset0, string_id, data_out(1:n), data_dims, line_lengths(1:n), error, space)
+     CALL check("h5dread_vl_f", error, total_error)
+  
+     DO j = 1, n
+        IF(data_in(j).NE.data_out(j))THEN
+           total_error = total_error + 1
+           EXIT
+        ENDIF
+     ENDDO
+
+     CALL h5dclose_f(dataset0, error)
+     CALL check("h5dclose_f", error, total_error)
+  ENDDO
+
+  CALL h5pclose_f(dcpl, error)
+  CALL check("h5pclose_f", error, total_error)
+  CALL h5sclose_f(space, error)
+  CALL check("h5sclose_f", error, total_error)
+  CALL h5fclose_f(file, error)
+  CALL check("h5fclose_f", error, total_error)
+  
+END SUBROUTINE vl_test_special_char
+
+
+SUBROUTINE setup_buffer(data_in, line_lengths, char_type)
+  
+  USE HDF5
+  USE ISO_C_BINDING
+  
+  IMPLICIT NONE
+  
+  ! Creates a simple "Data_in" consisting of the letters of the alphabet,
+  ! one per line, with a control character.
+  
+  CHARACTER(len=10), DIMENSION(:) :: data_in
+  INTEGER(size_t), DIMENSION(:) :: line_lengths
+  INTEGER, DIMENSION(1:3) :: letters
+  CHARACTER(LEN=3) :: lets
+  CHARACTER(KIND=C_CHAR,LEN=*) :: char_type
+  INTEGER :: i, j, n, ff
+  
+  ! Convert the letters and special character to integers    
+  lets = 'abc'
+  
+  READ(lets,'(3A1)') letters
+  READ(char_type,'(A1)') ff
+  n = SIZE(data_in)
+  j = 1
+  DO i=1,n-1
+     IF( j .EQ. 4 )THEN
+        WRITE(data_in(i:i),'(A1)') ff
+     ELSE
+        WRITE(data_in(i:i),'(A1)') letters(j)
+     ENDIF
+     line_lengths(i) = LEN_TRIM(data_in(i))
+     j = j + 1
+     IF( j .EQ. 5 ) j = 1
+  END DO
+  WRITE(data_in(n:n),'(A1)') ff
+  line_lengths(n) = 1
+  
+END SUBROUTINE setup_buffer
+
+!-------------------------------------------------------------------------
+! Function:    test_nbit
+!
+! Purpose:     Tests (real, 4 byte) datatype for nbit filter
+!
+! Return:      Success:        0
+!              Failure:        >0
+!
+! Programmer:  M. Scot Breitenfeld
+!              Decemeber 7, 2010
+!
+! Modifications: Moved this subroutine from the 1.8 test file and
+! modified it to use F2003 features. 
+! This routine requires 4 byte reals, so we use F2003 features to 
+! ensure the requirement is satisfied in a portable way. 
+! The need for this arises when a user specifies the default real is 8 bytes.
+! MSB 7/31/12
+!
+!-------------------------------------------------------------------------
+!
+
+SUBROUTINE test_nbit(cleanup, total_error )
+
+  USE HDF5
+  USE ISO_C_BINDING
+
+  IMPLICIT NONE
+  INTEGER, PARAMETER :: wp = SELECTED_REAL_KIND(Fortran_REAL_4) !should map to REAL*4 on most modern processors
+  LOGICAL, INTENT(IN)  :: cleanup
+  INTEGER, INTENT(INOUT) :: total_error
+  INTEGER(hid_t) :: file
+  
+  INTEGER(hid_t) :: dataset, datatype, space, dc, mem_type_id
+  INTEGER(hsize_t), DIMENSION(1:2) :: dims = (/2,5/)
+  INTEGER(hsize_t), DIMENSION(1:2) :: chunk_dim = (/2,5/)
+  ! orig_data[] are initialized to be within the range that can be represented by
+  ! dataset datatype (no precision loss during datatype conversion)
+  !
+  REAL(kind=wp), DIMENSION(1:2,1:5), TARGET :: orig_data = &
+       RESHAPE( (/188384.00, 19.103516, -1.0831790e9, -84.242188, &
+       5.2045898, -49140.000, 2350.2500, -3.2110596e-1, 6.4998865e-5, -0.0000000/) , (/2,5/) )
+  REAL(kind=wp), DIMENSION(1:2,1:5), TARGET :: new_data
+  INTEGER(size_t) :: PRECISION, offset
+  INTEGER :: error
+  LOGICAL :: status
+  INTEGER(size_t) :: i, j
+  TYPE(C_PTR) :: f_ptr
+
+  ! check to see if filter is available
+  CALL H5Zfilter_avail_f(H5Z_FILTER_NBIT_F, status, error)
+  IF(.NOT.status)THEN ! We don't have H5Z_FILTER_NBIT_F filter
+     total_error = -1     ! so return
+     RETURN
+  ENDIF
+
+  CALL H5Fcreate_f("nbit.h5", H5F_ACC_TRUNC_F, file, error)
+  CALL check("H5Fcreate_f", error, total_error)
+
+  ! Define dataset datatype (integer), and set precision, offset
+  CALL H5Tcopy_f(H5T_IEEE_F32BE, datatype, error)
+  CALL CHECK(" H5Tcopy_f", error, total_error)
+  CALL H5Tset_fields_f(datatype, 26_size_t, 20_size_t, 6_size_t, 7_size_t, 13_size_t, error)
+  CALL CHECK(" H5Tset_fields_f", error, total_error)
+  offset = 7
+  CALL H5Tset_offset_f(datatype, offset, error)
+  CALL CHECK(" H5Tset_offset_f", error, total_error)
+  PRECISION = 20
+  CALL H5Tset_precision_f(datatype,PRECISION, error)
+  CALL CHECK(" H5Tset_precision_f", error, total_error)
+  
+  CALL H5Tset_size_f(datatype, 4_size_t, error)
+  CALL CHECK(" H5Tset_size_f", error, total_error)
+  
+  CALL H5Tset_ebias_f(datatype, 31_size_t, error)
+  CALL CHECK(" H5Tset_ebias_f", error, total_error)
+ 
+  ! Create the data space 
+  CALL H5Screate_simple_f(2, dims, space, error)
+  CALL CHECK(" H5Screate_simple_f", error, total_error)
+
+  ! USE nbit filter
+  CALL H5Pcreate_f(H5P_DATASET_CREATE_F, dc, error)
+  CALL CHECK(" H5Pcreate_f", error, total_error)
+
+  CALL H5Pset_chunk_f(dc, 2, chunk_dim, error)
+  CALL CHECK(" H5Pset_chunk_f", error, total_error)
+  CALL H5Pset_nbit_f(dc, error)
+  CALL CHECK(" H5Pset_nbit_f", error, total_error)
+
+  ! Create the dataset
+  CALL  H5Dcreate_f(file, "nbit_real", datatype, &
+       space, dataset, error, dc)
+  CALL CHECK(" H5Dcreate_f", error, total_error)
+
+  !----------------------------------------------------------------------
+  ! STEP 1: Test nbit by setting up a chunked dataset and writing
+  ! to it.
+  !----------------------------------------------------------------------
+  !
+  mem_type_id = h5kind_to_type(wp,H5_REAL_KIND)
+
+  f_ptr = C_LOC(orig_data(1,1))
+  CALL H5Dwrite_f(dataset, mem_type_id, f_ptr, error)
+  CALL CHECK(" H5Dwrite_f", error, total_error)
+
+  !----------------------------------------------------------------------
+  ! STEP 2: Try to read the data we just wrote.
+  !----------------------------------------------------------------------
+  !  
+  f_ptr = C_LOC(new_data(1,1))
+  CALL H5Dread_f(dataset, mem_type_id, f_ptr, error)
+  CALL CHECK(" H5Dread_f", error, total_error)
+
+  ! Check that the values read are the same as the values written
+  ! Assume size of long long = size of double
+  !
+  i_loop: DO i = 1, dims(1)
+     j_loop: DO j = 1, dims(2)
+        IF(.NOT.(orig_data(i,j).EQ.orig_data(i,j))) CYCLE  ! skip IF value is NaN
+        IF(new_data(i,j) .NE. orig_data(i,j))THEN
+           total_error = total_error + 1
+           WRITE(*,'("    Read different values than written.")')
+           WRITE(*,'("    At index ", 2(1X,I0))') i, j
+           EXIT i_loop
+        END IF
+     ENDDO j_loop
+  ENDDO i_loop
+
+  !----------------------------------------------------------------------
+  ! Cleanup
+  !----------------------------------------------------------------------
+  !
+  CALL H5Tclose_f(datatype, error)
+  CALL CHECK(" H5Tclose_f", error, total_error)
+  CALL H5Pclose_f(dc, error)
+  CALL CHECK(" H5Pclose_f", error, total_error)
+  CALL H5Sclose_f(space, error)
+  CALL CHECK(" H5Sclose_f", error, total_error)
+  CALL H5Dclose_f(dataset, error)
+  CALL CHECK(" H5Dclose_f", error, total_error)
+  CALL H5Fclose_f(file, error)
+  CALL CHECK(" H5Fclose_f", error, total_error)
+
+END SUBROUTINE test_nbit
+
 
diff --git a/fortran/testpar/Makefile.in b/fortran/testpar/Makefile.in
index 272fc45..1cbc87e 100644
--- a/fortran/testpar/Makefile.in
+++ b/fortran/testpar/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # HDF5 Fortran Parallel Library Test Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,6 +67,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 
@@ -61,10 +78,10 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 # parallel code.  But you're welcome to try...)
 @FORTRAN_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS)
+TESTS =
 subdir = fortran/testpar
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -78,37 +95,53 @@ parallel_test_OBJECTS = $(am_parallel_test_OBJECTS)
 parallel_test_LDADD = $(LDADD)
 parallel_test_DEPENDENCIES = $(LIBH5FTEST) $(LIBH5TEST) $(LIBH5F) \
 	$(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_FC = $(am__v_FC_ at AM_V@)
+am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
+am__v_FC_0 = @echo "  FC      " $@;
+am__v_FC_1 = 
 FCLD = $(FC)
 FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(parallel_test_SOURCES)
 DIST_SOURCES = $(parallel_test_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -130,12 +163,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -419,6 +449,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -448,6 +482,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -466,7 +501,7 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-parallel_test$(EXEEXT): $(parallel_test_OBJECTS) $(parallel_test_DEPENDENCIES) 
+parallel_test$(EXEEXT): $(parallel_test_OBJECTS) $(parallel_test_DEPENDENCIES) $(EXTRA_parallel_test_DEPENDENCIES) 
 	@rm -f parallel_test$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(parallel_test_OBJECTS) $(parallel_test_LDADD) $(LIBS)
 
@@ -477,16 +512,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .f90.o:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 .f90.obj:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
 
 .f90.lo:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -543,6 +575,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -592,10 +638,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -679,8 +730,8 @@ uninstall-am:
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -708,7 +759,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -734,7 +785,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -758,7 +809,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -768,7 +819,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -858,7 +909,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -888,7 +939,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/fortran/testpar/hyper.f90 b/fortran/testpar/hyper.f90
index 1d65ae1..1a580ca 100644
--- a/fortran/testpar/hyper.f90
+++ b/fortran/testpar/hyper.f90
@@ -50,6 +50,7 @@ SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
   INTEGER        :: icount                          ! number of elements in array
   CHARACTER(len=80) :: filename                     ! filename
   INTEGER        :: i
+  INTEGER        :: actual_io_mode                  ! The type of I/O performed by this process
 
   !//////////////////////////////////////////////////////////
   ! initialize the array data between the processes (3)
@@ -180,6 +181,24 @@ SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
   CALL check("h5dwrite_f", hdferror, nerrors)
 
 
+  ! Check h5pget_mpio_actual_io_mode_f function
+  CALL h5pget_mpio_actual_io_mode_f(dxpl_id, actual_io_mode, hdferror)
+  CALL check("h5pget_mpio_actual_io_mode_f", hdferror, nerrors)
+
+  IF(do_collective.AND.do_chunk)THEN
+     IF(actual_io_mode.NE.H5D_MPIO_CHUNK_COLLECTIVE_F)THEN
+        CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
+     ENDIF
+  ELSEIF(.NOT.do_collective)THEN
+     IF(actual_io_mode.NE.H5D_MPIO_NO_COLLECTIVE_F)THEN
+        CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
+     ENDIF
+  ELSEIF( do_collective.AND.(.NOT.do_chunk))THEN
+     IF(actual_io_mode.NE.H5D_MPIO_CONTIG_COLLECTIVE_F)THEN
+        CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
+     ENDIF
+  ENDIF
+
   !//////////////////////////////////////////////////////////
   ! close HDF5 I/O
   !//////////////////////////////////////////////////////////
diff --git a/hl/CMakeLists.txt b/hl/CMakeLists.txt
index d1db6ca..e66329e 100644
--- a/hl/CMakeLists.txt
+++ b/hl/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_HL C CXX)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Shared Libs
 #-----------------------------------------------------------------------------
 IF (BUILD_SHARED_LIBS)
diff --git a/hl/Makefile.in b/hl/Makefile.in
index 6f7b51c..dddd693 100644
--- a/hl/Makefile.in
+++ b/hl/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 #
 # HDF5 High-Level Makefile(.in)
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,24 +71,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = hl
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -82,6 +105,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -89,8 +117,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -117,7 +147,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -135,12 +165,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -414,6 +441,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -442,6 +473,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -459,12 +491,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -474,7 +506,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -488,37 +524,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -527,6 +532,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -590,6 +599,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -625,13 +648,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -667,10 +687,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -750,22 +775,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installcheck-local installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installcheck-local installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -803,7 +829,7 @@ build-check-clean:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -829,7 +855,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -853,7 +879,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -863,7 +889,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -953,7 +979,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -983,7 +1009,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/c++/Makefile.in b/hl/c++/Makefile.in
index a629463..4a33b33 100644
--- a/hl/c++/Makefile.in
+++ b/hl/c++/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # High-Level API C++ Makefile(.in)
 # 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,24 +67,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = hl/c++
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -78,6 +101,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -85,8 +113,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -113,7 +143,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -131,12 +161,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -408,6 +435,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -436,6 +467,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -453,12 +485,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -468,7 +500,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -482,37 +518,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -521,6 +526,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -584,6 +593,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -619,13 +642,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -661,10 +681,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -744,22 +769,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installcheck-local installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installcheck-local installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -793,7 +819,7 @@ check-clean ::
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -819,7 +845,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -843,7 +869,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -853,7 +879,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -943,7 +969,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -973,7 +999,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/c++/examples/Makefile.am b/hl/c++/examples/Makefile.am
index c690a12..5dd5a75 100644
--- a/hl/c++/examples/Makefile.am
+++ b/hl/c++/examples/Makefile.am
@@ -23,7 +23,7 @@ include $(top_srcdir)/config/commence.am
 
 # These are the programs that 'make all' or 'make prog' will build and
 # which 'make check' will run.  List them in the order they should be run.
-TEST_PROG=ptExampleFL ptExampleVL
+EXAMPLE_PROG=ptExampleFL ptExampleVL
 
 # These are the example files to be installed
 INSTALL_FILES=ptExampleFL.cpp ptExampleVL.cpp
diff --git a/hl/c++/examples/Makefile.in b/hl/c++/examples/Makefile.in
index 28f197f..bd0edf0 100644
--- a/hl/c++/examples/Makefile.in
+++ b/hl/c++/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # built using h5cc (or h5fc, etc.) instead of the standard compilers.
 # This creates some extra work for us.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,31 +71,45 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/run-hlc++-ex.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/run-hlc++-ex.sh.in $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/examples.am
 TESTS =
 subdir = hl/c++/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES = run-hlc++-ex.sh
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -97,12 +127,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -363,7 +390,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 
 # These are the programs that 'make all' or 'make prog' will build and
 # which 'make check' will run.  List them in the order they should be run.
-TEST_PROG = ptExampleFL ptExampleVL
+EXAMPLE_PROG = ptExampleFL ptExampleVL
 
 # These are the example files to be installed
 INSTALL_FILES = ptExampleFL.cpp ptExampleVL.cpp
@@ -378,12 +405,11 @@ EXAMPLEDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl/c++
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES = *.raw *.meta *.o
-CLEANFILES = $(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -396,6 +422,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -424,6 +454,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -447,6 +478,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -493,10 +526,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -631,8 +669,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
@@ -681,7 +719,7 @@ installcheck-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -707,7 +745,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -731,7 +769,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -741,7 +779,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -831,7 +869,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -861,7 +899,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt
index ad5454d..e0ca0e9 100644
--- a/hl/c++/src/CMakeLists.txt
+++ b/hl/c++/src/CMakeLists.txt
@@ -36,6 +36,9 @@ INSTALL (
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_HL_CPP_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} hlcpplibraries)
+  
   INSTALL (
       TARGETS
           ${HDF5_HL_CPP_LIB_TARGET}
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 985a903..d0fda0a 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -34,6 +33,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,7 +69,9 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/Makefile.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/lt_vers.am
 
@@ -62,7 +80,7 @@ DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
 TESTS =
 subdir = hl/c++/src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -90,18 +108,37 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libhdf5_hl_cpp_la_DEPENDENCIES = $(LIBH5_HL) $(LIBH5CPP)
 am_libhdf5_hl_cpp_la_OBJECTS = H5PacketTable.lo
 libhdf5_hl_cpp_la_OBJECTS = $(am_libhdf5_hl_cpp_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libhdf5_hl_cpp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libhdf5_hl_cpp_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -112,31 +149,34 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(libhdf5_hl_cpp_la_SOURCES)
 DIST_SOURCES = $(libhdf5_hl_cpp_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 HEADERS = $(include_HEADERS)
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -154,12 +194,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -421,7 +458,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 
 # Include src directory
@@ -454,6 +491,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -483,6 +524,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -494,7 +536,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -502,6 +543,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -517,13 +560,15 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libhdf5_hl_cpp.la: $(libhdf5_hl_cpp_la_OBJECTS) $(libhdf5_hl_cpp_la_DEPENDENCIES) 
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libhdf5_hl_cpp.la: $(libhdf5_hl_cpp_la_OBJECTS) $(libhdf5_hl_cpp_la_DEPENDENCIES) $(EXTRA_libhdf5_hl_cpp_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(libhdf5_hl_cpp_la_LINK) -rpath $(libdir) $(libhdf5_hl_cpp_la_OBJECTS) $(libhdf5_hl_cpp_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -537,26 +582,23 @@ distclean-compile:
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -565,8 +607,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -580,9 +625,7 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -633,6 +676,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -684,10 +741,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -773,8 +835,8 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-generic clean-libLTLIBRARIES clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-generic clean-libLTLIBRARIES clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -817,7 +879,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -843,7 +905,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -867,7 +929,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -877,7 +939,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -967,7 +1029,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -997,7 +1059,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/c++/test/Makefile.in b/hl/c++/test/Makefile.in
index 4c84e4c..0213f38 100644
--- a/hl/c++/test/Makefile.in
+++ b/hl/c++/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # HDF5-C++ Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,16 +67,17 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 
 # Shared C++ libraries aren't universally supported.
 @CXX_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_1)
 subdir = hl/c++/test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -73,9 +90,22 @@ ptableTest_OBJECTS = $(am_ptableTest_OBJECTS)
 ptableTest_LDADD = $(LDADD)
 ptableTest_DEPENDENCIES = $(LIBH5CPP_HL) $(LIBH5_HL) $(LIBH5CPP) \
 	$(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -86,30 +116,33 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(ptableTest_SOURCES)
 DIST_SOURCES = $(ptableTest_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -127,12 +160,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -416,6 +446,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -445,6 +479,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -463,7 +498,7 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-ptableTest$(EXEEXT): $(ptableTest_OBJECTS) $(ptableTest_DEPENDENCIES) 
+ptableTest$(EXEEXT): $(ptableTest_OBJECTS) $(ptableTest_DEPENDENCIES) $(EXTRA_ptableTest_DEPENDENCIES) 
 	@rm -f ptableTest$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(ptableTest_OBJECTS) $(ptableTest_LDADD) $(LIBS)
 
@@ -478,26 +513,23 @@ distclean-compile:
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -554,6 +586,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -603,10 +649,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -692,8 +743,8 @@ uninstall-am:
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -721,7 +772,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -747,7 +798,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -771,7 +822,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -781,7 +832,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -871,7 +922,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -901,7 +952,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/examples/Makefile.am b/hl/examples/Makefile.am
index ae65a3b..1c51f05 100644
--- a/hl/examples/Makefile.am
+++ b/hl/examples/Makefile.am
@@ -22,7 +22,7 @@
 include $(top_srcdir)/config/commence.am
 
 if BUILD_PARALLEL_CONDITIONAL
-  TEST_PROG_PARA =
+  EXAMPLE_PROG_PARA =
 endif
 
 # Example directory
@@ -34,7 +34,7 @@ EXAMPLETOPDIR=${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl
 # Don't tell automake about them, because if it knew they were programs,
 # it would try to compile them instead of using the h5cc script.
 # Use the boilerplate in config/examples.am instead.
-TEST_PROG = ex_lite1 ex_lite2 ex_lite3 ptExampleFL ptExampleVL \
+EXAMPLE_PROG = ex_lite1 ex_lite2 ex_lite3 ptExampleFL ptExampleVL \
             ex_image1 ex_image2 \
             ex_table_01 ex_table_02 ex_table_03 ex_table_04 \
             ex_table_05 ex_table_06 ex_table_07 ex_table_08 \
diff --git a/hl/examples/Makefile.in b/hl/examples/Makefile.in
index d10c687..1794e38 100644
--- a/hl/examples/Makefile.in
+++ b/hl/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # built using h5cc (or h5fc, etc.) instead of the standard compilers.
 # This creates some extra work for us.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,31 +71,45 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/run-hlc-ex.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/run-hlc-ex.sh.in $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/examples.am
 TESTS =
 subdir = hl/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES = run-hlc-ex.sh
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -97,12 +127,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -360,7 +387,7 @@ TRACE = perl $(top_srcdir)/bin/trace
 # .chklog files are output from those tests.
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
- at BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_PROG_PARA = 
+ at BUILD_PARALLEL_CONDITIONAL_TRUE@EXAMPLE_PROG_PARA = 
 
 # Example directory
 # Note: no '/' after DESTDIR.  Explanation in commence.am
@@ -371,7 +398,7 @@ EXAMPLETOPDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl
 # Don't tell automake about them, because if it knew they were programs,
 # it would try to compile them instead of using the h5cc script.
 # Use the boilerplate in config/examples.am instead.
-TEST_PROG = ex_lite1 ex_lite2 ex_lite3 ptExampleFL ptExampleVL \
+EXAMPLE_PROG = ex_lite1 ex_lite2 ex_lite3 ptExampleFL ptExampleVL \
             ex_image1 ex_image2 \
             ex_table_01 ex_table_02 ex_table_03 ex_table_04 \
             ex_table_05 ex_table_06 ex_table_07 ex_table_08 \
@@ -394,12 +421,11 @@ INSTALL_TOP_SCRIPT_FILES = run-hl-ex.sh
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES = *.raw *.meta *.o
-CLEANFILES = $(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -412,6 +438,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -440,6 +470,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -463,6 +494,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -509,10 +542,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -671,8 +709,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
@@ -721,7 +759,7 @@ installcheck-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -747,7 +785,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -771,7 +809,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -781,7 +819,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -871,7 +909,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -901,7 +939,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/fortran/Makefile.in b/hl/fortran/Makefile.in
index 19d6b62..6fe288c 100644
--- a/hl/fortran/Makefile.in
+++ b/hl/fortran/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 #
 # HDF5 High-Level Makefile(.in)
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,24 +71,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = hl/fortran
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -82,6 +105,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -89,8 +117,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -117,7 +147,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -135,12 +165,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -412,6 +439,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -440,6 +471,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -457,12 +489,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -472,7 +504,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -486,37 +522,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -525,6 +530,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -588,6 +597,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -623,13 +646,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -665,10 +685,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -748,22 +773,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installcheck-local installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installcheck-local installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -797,7 +823,7 @@ check-clean ::
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -823,7 +849,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -847,7 +873,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -857,7 +883,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -947,7 +973,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -977,7 +1003,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/fortran/examples/Makefile.am b/hl/fortran/examples/Makefile.am
index 4286fe3..f94f031 100644
--- a/hl/fortran/examples/Makefile.am
+++ b/hl/fortran/examples/Makefile.am
@@ -23,7 +23,7 @@ include $(top_srcdir)/config/commence.am
 
 # Compile parallel fortran examples only if parallel is enabled
 if BUILD_PARALLEL_CONDITIONAL
-   TEST_PROG_PARA=
+   EXAMPLE_PROG_PARA=
 endif
 
 # These are the programs that 'make all' or 'make tests' will build and
@@ -31,7 +31,7 @@ endif
 # be run.
 # We don't tell automake about these programs so that it doesn't try to
 # compile them with the regular fortran compiler.
-TEST_PROG=exlite ex_ds1
+EXAMPLE_PROG=exlite ex_ds1
 
 # List files to be installed here
 INSTALL_FILES= exlite.f90 ex_ds1.f90
diff --git a/hl/fortran/examples/Makefile.in b/hl/fortran/examples/Makefile.in
index d3e23d7..7dd855b 100644
--- a/hl/fortran/examples/Makefile.in
+++ b/hl/fortran/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 # built using h5cc (or h5fc, etc.) instead of the standard compilers.
 # This creates some extra work for us.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,31 +72,45 @@ build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/run-hlfortran-ex.sh.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/examples.am
 TESTS =
 subdir = hl/fortran/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES = run-hlfortran-ex.sh
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -98,12 +128,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -363,14 +390,14 @@ TRACE = perl $(top_srcdir)/bin/trace
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 
 # Compile parallel fortran examples only if parallel is enabled
- at BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_PROG_PARA = 
+ at BUILD_PARALLEL_CONDITIONAL_TRUE@EXAMPLE_PROG_PARA = 
 
 # These are the programs that 'make all' or 'make tests' will build and
 # that 'make check' will run.  List them in the order in which they should
 # be run.
 # We don't tell automake about these programs so that it doesn't try to
 # compile them with the regular fortran compiler.
-TEST_PROG = exlite ex_ds1
+EXAMPLE_PROG = exlite ex_ds1
 
 # List files to be installed here
 INSTALL_FILES = exlite.f90 ex_ds1.f90
@@ -386,12 +413,11 @@ EXAMPLEDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl/fortran
 
 # Assume that all tests in this directory are examples, and tell
 # conclude.am when to build them.
-EXAMPLE_PROG = $(TEST_PROG_PARA) $(TEST_PROG)
-EXTRA_PROG = $(EXAMPLE_PROG)
+EXTRA_PROG = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # We need to tell automake what to clean
 MOSTLYCLEANFILES = *.raw *.meta *.o
-CLEANFILES = $(TEST_PROG) $(TEST_PROG_PARA)
+CLEANFILES = $(EXAMPLE_PROG) $(EXAMPLE_PROG_PARA)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -404,6 +430,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -432,6 +462,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -455,6 +486,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -501,10 +534,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -634,8 +672,8 @@ uninstall-local:
 install-examples: $(EXAMPLEDIR) $(INSTALL_FILES) 
 	@for f in X $(INSTALL_FILES); do                                     \
 	  if test $$f != X; then                                             \
-	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
-            chmod a-x $(EXAMPLEDIR)/$$f;\
+	    (set -x; $(INSTALL) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);    \
+            chmod a-x $(EXAMPLEDIR)/$$f;                                     \
 	  fi;                                                                \
 	done
 	@for f in X $(INSTALL_SCRIPT_FILES); do                                   \
@@ -684,7 +722,7 @@ installcheck-local:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -710,7 +748,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -734,7 +772,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -744,7 +782,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -834,7 +872,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -864,7 +902,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt
index 916e9e1..ec54d8c 100644
--- a/hl/fortran/src/CMakeLists.txt
+++ b/hl/fortran/src/CMakeLists.txt
@@ -24,13 +24,13 @@ SET (HDF5_HL_F90_C_SRCS
 SET_SOURCE_FILES_PROPERTIES (${HDF5_HL_F90_C_SRCS} PROPERTIES LANGUAGE C)
 
 SET (HDF5_HL_F90_HEADERS ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5LTf90proto.h)
-SET_SOURCE_FILES_PROPERTIES (${HDF5_HL_F90_HEADERS} PROPERTIES LANGUAGE C)
 
 ADD_LIBRARY (${HDF5_HL_F90_C_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_F90_C_SRCS} ${HDF5_HL_F90_HEADERS})
 TARGET_LINK_LIBRARIES (${HDF5_HL_F90_C_LIB_TARGET} ${HDF5_F90_C_LIB_TARGET} ${HDF5_HL_LIB_TARGET})
 SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_F90_C_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (${HDF5_HL_F90_C_LIB_TARGET} ${HDF5_HL_F90_C_LIB_NAME} ${LIB_TYPE})
 SET_TARGET_PROPERTIES (${HDF5_HL_F90_C_LIB_TARGET} PROPERTIES FOLDER libraries/hl/fortran)
+SET_TARGET_PROPERTIES (${HDF5_HL_F90_C_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C)
 
 #-----------------------------------------------------------------------------
 # Fortran Modules
@@ -95,6 +95,10 @@ ENDIF (WIN32 AND NOT CYGWIN)
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_HL_F90_C_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} hlfortlibraries)
+  #INSTALL_TARGET_PDB (${HDF5_HL_F90_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} hlfortlibraries)
+  
   INSTALL (
       TARGETS
           ${HDF5_HL_F90_C_LIB_TARGET}
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index bf3ece2..8a806eb 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 # HDF5 High-Level Fortran Makefile(.in)
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,6 +68,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/lt_vers.am
@@ -63,7 +80,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 TESTS =
 subdir = hl/fortran/src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -91,19 +108,38 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libhdf5hl_fortran_la_DEPENDENCIES = $(LIBH5_HL) $(LIBH5F)
 am_libhdf5hl_fortran_la_OBJECTS = H5DSfc.lo H5LTfc.lo H5IMfc.lo \
 	H5IMcc.lo H5TBfc.lo H5DSff.lo H5LTff.lo H5IMff.lo H5TBff.lo
 libhdf5hl_fortran_la_OBJECTS = $(am_libhdf5hl_fortran_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libhdf5hl_fortran_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
 	$(AM_FCFLAGS) $(FCFLAGS) $(libhdf5hl_fortran_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -114,43 +150,48 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC    " $@;
+AM_V_FC = $(am__v_FC_ at AM_V@)
+am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
+am__v_FC_0 = @echo "  FC      " $@;
+am__v_FC_1 = 
 FCLD = $(FC)
 FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(libhdf5hl_fortran_la_SOURCES)
 DIST_SOURCES = $(libhdf5hl_fortran_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -169,12 +210,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -436,7 +474,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \
          -I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src
@@ -472,6 +510,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -501,6 +543,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -512,7 +555,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -520,6 +562,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -535,13 +579,15 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libhdf5hl_fortran.la: $(libhdf5hl_fortran_la_OBJECTS) $(libhdf5hl_fortran_la_DEPENDENCIES) 
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libhdf5hl_fortran.la: $(libhdf5hl_fortran_la_OBJECTS) $(libhdf5hl_fortran_la_DEPENDENCIES) $(EXTRA_libhdf5hl_fortran_la_DEPENDENCIES) 
 	$(AM_V_FCLD)$(libhdf5hl_fortran_la_LINK) -rpath $(libdir) $(libhdf5hl_fortran_la_OBJECTS) $(libhdf5hl_fortran_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -559,38 +605,32 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 .f90.o:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 .f90.obj:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
 
 .f90.lo:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -647,6 +687,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -698,10 +752,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -789,7 +848,7 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-generic clean-libLTLIBRARIES clean-libtool \
-	clean-local ctags distclean distclean-compile \
+	clean-local cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-local \
 	distclean-tags distdir dvi dvi-am html html-am info info-am \
 	install install-am install-data install-data-am \
@@ -864,7 +923,7 @@ H5TBff.lo:          $(srcdir)/H5TBff.f90
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -890,7 +949,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -914,7 +973,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -924,7 +983,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1014,7 +1073,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1044,7 +1103,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/fortran/test/Makefile.in b/hl/fortran/test/Makefile.in
index 707a32d..7e69b79 100644
--- a/hl/fortran/test/Makefile.in
+++ b/hl/fortran/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 #
 # HDF5 High-Level Fortran Makefile(.in)
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,6 +67,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 
@@ -59,10 +76,10 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 # of the HDF5 library.  We do this by passing the -static flag to the linker.
 @FORTRAN_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_1)
 subdir = hl/fortran/test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -75,9 +92,10 @@ am_tstds_OBJECTS = tstds.$(OBJEXT)
 tstds_OBJECTS = $(am_tstds_OBJECTS)
 tstds_LDADD = $(LDADD)
 tstds_DEPENDENCIES = $(LIBH5F_HL) $(LIBH5F) $(LIBH5_HL) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 am_tstimage_OBJECTS = tstimage.$(OBJEXT)
 tstimage_OBJECTS = $(am_tstimage_OBJECTS)
 tstimage_LDADD = $(LDADD)
@@ -90,36 +108,51 @@ am_tsttable_OBJECTS = tsttable.$(OBJEXT)
 tsttable_OBJECTS = $(am_tsttable_OBJECTS)
 tsttable_LDADD = $(LDADD)
 tsttable_DEPENDENCIES = $(LIBH5F_HL) $(LIBH5F) $(LIBH5_HL) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_FC = $(am__v_FC_ at AM_V@)
+am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
+am__v_FC_0 = @echo "  FC      " $@;
+am__v_FC_1 = 
 FCLD = $(FC)
 FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(tstds_SOURCES) $(tstimage_SOURCES) $(tstlite_SOURCES) \
 	$(tsttable_SOURCES)
 DIST_SOURCES = $(tstds_SOURCES) $(tstimage_SOURCES) $(tstlite_SOURCES) \
 	$(tsttable_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -141,12 +174,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -433,6 +463,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -462,6 +496,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -480,16 +515,16 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-tstds$(EXEEXT): $(tstds_OBJECTS) $(tstds_DEPENDENCIES) 
+tstds$(EXEEXT): $(tstds_OBJECTS) $(tstds_DEPENDENCIES) $(EXTRA_tstds_DEPENDENCIES) 
 	@rm -f tstds$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tstds_OBJECTS) $(tstds_LDADD) $(LIBS)
-tstimage$(EXEEXT): $(tstimage_OBJECTS) $(tstimage_DEPENDENCIES) 
+tstimage$(EXEEXT): $(tstimage_OBJECTS) $(tstimage_DEPENDENCIES) $(EXTRA_tstimage_DEPENDENCIES) 
 	@rm -f tstimage$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tstimage_OBJECTS) $(tstimage_LDADD) $(LIBS)
-tstlite$(EXEEXT): $(tstlite_OBJECTS) $(tstlite_DEPENDENCIES) 
+tstlite$(EXEEXT): $(tstlite_OBJECTS) $(tstlite_DEPENDENCIES) $(EXTRA_tstlite_DEPENDENCIES) 
 	@rm -f tstlite$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tstlite_OBJECTS) $(tstlite_LDADD) $(LIBS)
-tsttable$(EXEEXT): $(tsttable_OBJECTS) $(tsttable_DEPENDENCIES) 
+tsttable$(EXEEXT): $(tsttable_OBJECTS) $(tsttable_DEPENDENCIES) $(EXTRA_tsttable_DEPENDENCIES) 
 	@rm -f tsttable$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tsttable_OBJECTS) $(tsttable_LDADD) $(LIBS)
 
@@ -500,16 +535,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .f90.o:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 .f90.obj:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'`
 
 .f90.lo:
-	$(AM_V_FC) @AM_BACKSLASH@
-	$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
+	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -566,6 +598,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -615,10 +661,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -702,8 +753,8 @@ uninstall-am:
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -731,7 +782,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -757,7 +808,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -781,7 +832,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -791,7 +842,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -881,7 +932,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -911,7 +962,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt
index f144b94..2df2c23 100644
--- a/hl/src/CMakeLists.txt
+++ b/hl/src/CMakeLists.txt
@@ -55,6 +55,9 @@ INSTALL (
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_HL_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} hllibraries)
+  
   INSTALL (
       TARGETS
           ${HDF5_HL_LIB_TARGET}
diff --git a/hl/src/H5LTanalyze.c b/hl/src/H5LTanalyze.c
index 767dfd7..b88b577 100644
--- a/hl/src/H5LTanalyze.c
+++ b/hl/src/H5LTanalyze.c
@@ -38,7 +38,7 @@
 #define yywrap H5LTyywrap
 
 #line 20 "H5LTanalyze.c"
-/* A lexical scanner generated by flex */
+/* A lexical scanner generated by flex*/
 
 /* Scanner skeleton version:
  * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
@@ -175,6 +175,15 @@ extern FILE *yyin, *yyout;
 
 #define unput(c) yyunput( c, yytext_ptr )
 
+/* Some routines like yy_flex_realloc() are emitted as static but are
+   not called by all lexers. This generates warnings in some compilers,
+   notably GCC. Arrange to suppress these. */
+#ifdef __GNUC__
+#define YY_MAY_BE_UNUSED __attribute__((unused))
+#else
+#define YY_MAY_BE_UNUSED
+#endif
+
 /* The following is because we cannot portably get our hands on size_t
  * (without autoconf's help, which isn't available because we want
  * flex-generated scanners to compile on their own).
@@ -281,7 +290,7 @@ YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 
 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
 static void yy_flex_free YY_PROTO(( void * ));
 
 #define yy_new_buffer yy_create_buffer
@@ -849,10 +858,10 @@ hbool_t        first_quote = 1;
 /* For Lex and Yacc */
 /*int  input_len;
 char *myinput;*/
-
+    
 #define TAG_STRING 1
 
-#line 834 "H5LTanalyze.c"
+#line 843 "H5LTanalyze.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1006,7 +1015,7 @@ YY_DECL
 #line 76 "H5LTanalyze.l"
 
 
-#line 988 "H5LTanalyze.c"
+#line 997 "H5LTanalyze.c"
 
 	if ( yy_init )
 		{
@@ -1288,17 +1297,17 @@ YY_RULE_SETUP
 case 40:
 YY_RULE_SETUP
 #line 121 "H5LTanalyze.l"
-{return token(H5T_STR_NULLTERM_TOKEN);}
+{return token(H5T_STR_NULLTERM_TOKEN);} 
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 122 "H5LTanalyze.l"
-{return token(H5T_STR_NULLPAD_TOKEN);}
+{return token(H5T_STR_NULLPAD_TOKEN);} 
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 123 "H5LTanalyze.l"
-{return token(H5T_STR_SPACEPAD_TOKEN);}
+{return token(H5T_STR_SPACEPAD_TOKEN);} 
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
@@ -1363,12 +1372,12 @@ YY_RULE_SETUP
 case 55:
 YY_RULE_SETUP
 #line 139 "H5LTanalyze.l"
-{
-                        if( is_str_size || (is_enum && is_enum_memb) ||
+{    
+                        if( is_str_size || (is_enum && is_enum_memb) || 
                             is_opq_size || (asindex>-1 && arr_stack[asindex].is_dim) ||
                             (csindex>-1 && cmpd_stack[csindex].is_field) ) {
                             H5LTyylval.ival = atoi(yytext);
-                            return NUMBER;
+                            return NUMBER; 
                         } else
                             REJECT;
                  }
@@ -1378,7 +1387,7 @@ YY_RULE_SETUP
 #line 149 "H5LTanalyze.l"
 {
                     /*if it's first quote, and is a compound field name or an enum symbol*/
-                    if((is_opq_tag || is_enum || (csindex>-1 && cmpd_stack[csindex].is_field))
+                    if((is_opq_tag || is_enum || (csindex>-1 && cmpd_stack[csindex].is_field)) 
                         && first_quote) {
                         first_quote = 0;
                         BEGIN TAG_STRING;
@@ -1441,7 +1450,7 @@ YY_RULE_SETUP
 #line 174 "H5LTanalyze.l"
 ECHO;
 	YY_BREAK
-#line 1423 "H5LTanalyze.c"
+#line 1432 "H5LTanalyze.c"
 			case YY_STATE_EOF(INITIAL):
 			case YY_STATE_EOF(TAG_STRING):
 				yyterminate();
@@ -2323,8 +2332,8 @@ int main()
 int my_yyinput(char *buf, int max_size)
 {
    int ret;
-
-   memcpy(buf, myinput, input_len);
+    
+   memcpy(buf, myinput, input_len); 
    ret = input_len;
    return ret;
 }
@@ -2332,6 +2341,7 @@ int my_yyinput(char *buf, int max_size)
 int H5LTyyerror(char *msg)
 {
    printf("ERROR: %s before \"%s\".\n", msg, yytext);
+   return 0;
 }
 
 int yywrap()
diff --git a/hl/src/H5LTanalyze.l b/hl/src/H5LTanalyze.l
index dbba15a..3f63f50 100644
--- a/hl/src/H5LTanalyze.l
+++ b/hl/src/H5LTanalyze.l
@@ -184,6 +184,7 @@ int my_yyinput(char *buf, int max_size)
 int H5LTyyerror(char *msg)
 {
    printf("ERROR: %s before \"%s\".\n", msg, yytext);
+   return 0;
 }
 
 int yywrap()
diff --git a/hl/src/H5TB.c b/hl/src/H5TB.c
index 6edc244..7df8059 100644
--- a/hl/src/H5TB.c
+++ b/hl/src/H5TB.c
@@ -15,6 +15,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include "H5private.h"
 #include "H5LTprivate.h"
 #include "H5TBprivate.h"
 
@@ -663,7 +664,7 @@ herr_t H5TBwrite_fields_index( hid_t loc_id,
     hid_t    m_sid=-1;
     hid_t    file_space_id=-1;
     char     *member_name;
-    hsize_t  i, j;
+    hsize_t  i;
     hid_t    preserve_id;
     size_t   size_native;
 
@@ -688,14 +689,19 @@ herr_t H5TBwrite_fields_index( hid_t loc_id,
     /* iterate tru the members */
     for ( i = 0; i < nfields; i++)
     {
+        unsigned  j;
+
+        /* Range check value */
+        if(field_index[i] < 0)
+            goto out;
 
-        j = field_index[i];
+        j = (unsigned)field_index[i];
 
         /* get the member name */
-        member_name = H5Tget_member_name( tid, (unsigned) j );
+        member_name = H5Tget_member_name( tid, j );
 
         /* get the member type */
-        if (( member_type_id = H5Tget_member_type( tid, (unsigned) j )) < 0)
+        if (( member_type_id = H5Tget_member_type( tid, j )) < 0)
             goto out;
 
         /* convert to native type */
@@ -1149,7 +1155,7 @@ herr_t H5TBread_fields_index( hid_t loc_id,
     hid_t    m_sid=-1;
     hsize_t  mem_size[1];
     size_t   size_native;
-    hsize_t  i, j;
+    hsize_t  i;
 
     /* open the dataset. */
     if ((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
@@ -1166,13 +1172,19 @@ herr_t H5TBread_fields_index( hid_t loc_id,
     /* iterate tru the members */
     for ( i = 0; i < nfields; i++)
     {
-        j = field_index[i];
+        unsigned  j;
+
+        /* Range check */
+        if(field_index[i] < 0)
+            goto out;
+
+        j = (unsigned)field_index[i];
 
         /* get the member name */
-        member_name = H5Tget_member_name( tid, (unsigned) j );
+        member_name = H5Tget_member_name( tid, j );
 
         /* get the member type */
-        if (( member_type_id = H5Tget_member_type( tid, (unsigned) j )) < 0)
+        if (( member_type_id = H5Tget_member_type( tid, j )) < 0)
             goto out;
 
         /* get the member size */
@@ -1740,50 +1752,50 @@ out:
 *
 *-------------------------------------------------------------------------
 */
-herr_t H5TBcombine_tables( hid_t loc_id1,
+herr_t H5TBcombine_tables(hid_t loc_id1,
                           const char *dset_name1,
                           hid_t loc_id2,
                           const char *dset_name2,
-                          const char *dset_name3 )
+                          const char *dset_name3)
 {
-
     /* identifiers for the 1st dataset. */
-    hid_t    did_1=-1;
-    hid_t    tid_1=-1;
-    hid_t    sid_1=-1;
-    hid_t    pid_1=-1;
+    hid_t    did_1 = H5I_BADID;
+    hid_t    tid_1 = H5I_BADID;
+    hid_t    sid_1 = H5I_BADID;
+    hid_t    pid_1 = H5I_BADID;
     /* identifiers for the 2nd dataset. */
-    hid_t    did_2=-1;
-    hid_t    tid_2=-1;
-    hid_t    sid_2=-1;
-    hid_t    pid_2=-1;
+    hid_t    did_2 = H5I_BADID;
+    hid_t    tid_2 = H5I_BADID;
+    hid_t    sid_2 = H5I_BADID;
+    hid_t    pid_2 = H5I_BADID;
     /* identifiers for the 3rd dataset. */
-    hid_t    did_3=-1;
-    hid_t    tid_3=-1;
-    hid_t    sid_3=-1;
-    hid_t    pid_3=-1;
+    hid_t    did_3 = H5I_BADID;
+    hid_t    tid_3 = H5I_BADID;
+    hid_t    sid_3 = H5I_BADID;
+    hid_t    pid_3 = H5I_BADID;
+    hid_t    sid = H5I_BADID;
+    hid_t    m_sid = H5I_BADID;
+    hid_t    member_type_id = H5I_BADID;
+    hid_t    attr_id = H5I_BADID;
     hsize_t  count[1];
     hsize_t  offset[1];
-    hid_t    m_sid;
     hsize_t  mem_size[1];
     hsize_t  nfields;
     hsize_t  nrecords;
     hsize_t  dims[1];
-    hsize_t  maxdims[1] = { H5S_UNLIMITED };
+    hsize_t  maxdims[1] = {H5S_UNLIMITED};
+    hsize_t  i;
     size_t   type_size;
-    hid_t    sid;
-    hid_t    member_type_id;
     size_t   member_offset;
+    size_t   src_size;
+    size_t  *src_offset = NULL;
+    size_t  *src_sizes = NULL;
     char     attr_name[255];
-    hid_t    attr_id;
     char     aux[255];
-    unsigned char *tmp_buf;
-    unsigned char *tmp_fill_buf;
-    hsize_t  i;
-    size_t   src_size;
-    size_t   *src_offset;
-    size_t   *src_sizes;
-    int      has_fill=0;
+    unsigned char *tmp_buf = NULL;
+    unsigned char *tmp_fill_buf = NULL;
+    htri_t   has_fill;
+    int      ret_val = -1;
 
     /*-------------------------------------------------------------------------
     * first we get information about type size and offsets on disk
@@ -1791,18 +1803,17 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     */
 
     /* get the number of records and fields  */
-    if (H5TBget_table_info ( loc_id1, dset_name1, &nfields, &nrecords ) < 0)
-        return -1;
-
-    src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t));
-    src_sizes  = (size_t *)malloc((size_t)nfields * sizeof(size_t));
+    if(H5TBget_table_info(loc_id1, dset_name1, &nfields, &nrecords) < 0)
+        goto out;
 
-    if (src_offset == NULL )
-        return -1;
+    if(NULL == (src_offset = (size_t *)HDmalloc((size_t)nfields * sizeof(size_t))))
+        goto out;
+    if(NULL == (src_sizes  = (size_t *)HDmalloc((size_t)nfields * sizeof(size_t))))
+        goto out;
 
     /* get field info */
-    if (H5TBget_field_info( loc_id1, dset_name1, NULL, src_sizes, src_offset, &src_size ) < 0)
-        return -1;
+    if(H5TBget_field_info(loc_id1, dset_name1, NULL, src_sizes, src_offset, &src_size) < 0)
+        goto out;
 
     /*-------------------------------------------------------------------------
     * get information about the first table
@@ -1810,24 +1821,24 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     */
 
     /* open the 1st dataset. */
-    if ((did_1 = H5Dopen2(loc_id1, dset_name1, H5P_DEFAULT)) < 0)
+    if((did_1 = H5Dopen2(loc_id1, dset_name1, H5P_DEFAULT)) < 0)
         goto out;
 
     /* get the datatype */
-    if ((tid_1 = H5Dget_type( did_1 )) < 0)
+    if((tid_1 = H5Dget_type(did_1)) < 0)
         goto out;
 
     /* get the dataspace handle */
-    if ((sid_1 = H5Dget_space( did_1 )) < 0)
+    if((sid_1 = H5Dget_space(did_1)) < 0)
         goto out;
 
     /* get creation properties list */
-    if ((pid_1 = H5Dget_create_plist( did_1 )) < 0)
+    if((pid_1 = H5Dget_create_plist(did_1)) < 0)
         goto out;
 
     /* get the dimensions  */
-    if (H5TBget_table_info ( loc_id1, dset_name1, &nfields, &nrecords ) < 0)
-        return -1;
+    if(H5TBget_table_info(loc_id1, dset_name1, &nfields, &nrecords) < 0)
+        goto out;
 
     /*-------------------------------------------------------------------------
     * make the merged table with no data originally
@@ -1835,11 +1846,11 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     */
 
     /* clone the property list */
-    if ((pid_3 = H5Pcopy(pid_1)) < 0)
+    if((pid_3 = H5Pcopy(pid_1)) < 0)
         goto out;
 
     /* clone the type id */
-    if ((tid_3 = H5Tcopy(tid_1)) < 0)
+    if((tid_3 = H5Tcopy(tid_1)) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
@@ -1850,96 +1861,97 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     dims[0] = 0;
 
     /* create a simple data space with unlimited size */
-    if ((sid_3 = H5Screate_simple(1, dims, maxdims)) < 0)
-        return -1;
+    if((sid_3 = H5Screate_simple(1, dims, maxdims)) < 0)
+        goto out;
 
     /* create the dataset */
-    if ((did_3 = H5Dcreate2(loc_id1, dset_name3, tid_3, sid_3, H5P_DEFAULT, pid_3, H5P_DEFAULT)) < 0)
+    if((did_3 = H5Dcreate2(loc_id1, dset_name3, tid_3, sid_3, H5P_DEFAULT, pid_3, H5P_DEFAULT)) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
     * attach the conforming table attributes
     *-------------------------------------------------------------------------
     */
-    if (H5TB_attach_attributes("Merge table", loc_id1, dset_name3, nfields, tid_3) < 0)
+    if(H5TB_attach_attributes("Merge table", loc_id1, dset_name3, nfields, tid_3) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
     * get attributes
     *-------------------------------------------------------------------------
     */
-
     type_size = H5Tget_size(tid_3);
 
     /* alloc fill value attribute buffer */
-    tmp_fill_buf = (unsigned char *)malloc(type_size);
+    if(NULL == (tmp_fill_buf = (unsigned char *)HDmalloc(type_size)))
+        goto out;
 
     /* get the fill value attributes */
-    has_fill = H5TBAget_fill(loc_id1, dset_name1, did_1, tmp_fill_buf);
+    if((has_fill = H5TBAget_fill(loc_id1, dset_name1, did_1, tmp_fill_buf)) < 0)
+        goto out;
 
     /*-------------------------------------------------------------------------
     * attach the fill attributes from previous table
     *-------------------------------------------------------------------------
     */
-    if (has_fill == 1 )
-    {
+    if(has_fill) {
 
-        if (( sid = H5Screate(H5S_SCALAR)) < 0)
+        if((sid = H5Screate(H5S_SCALAR)) < 0)
             goto out;
 
-        for ( i = 0; i < nfields; i++)
-        {
-
+        for(i = 0; i < nfields; i++) {
             /* get the member type */
-            if (( member_type_id = H5Tget_member_type( tid_3, (unsigned) i )) < 0)
+            if((member_type_id = H5Tget_member_type(tid_3, (unsigned)i)) < 0)
                 goto out;
 
             /* get the member offset */
             member_offset = H5Tget_member_offset(tid_3, (unsigned)i);
 
-            strcpy(attr_name, "FIELD_");
-            sprintf(aux, "%d", (int)i);
-            strcat(attr_name, aux);
-            sprintf(aux, "%s", "_FILL");
-            strcat(attr_name, aux);
+            HDstrncpy(attr_name, "FIELD_", 6);
+            HDsnprintf(aux, 12, "%d", (int)i);
+            HDstrncat(attr_name, aux, 12);
+            HDsnprintf(aux, 6, "%s", "_FILL");
+            HDstrncat(attr_name, aux, 7);
 
-            if ((attr_id = H5Acreate2(did_3, attr_name, member_type_id, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+            if((attr_id = H5Acreate2(did_3, attr_name, member_type_id, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
                 goto out;
 
-            if (H5Awrite(attr_id, member_type_id, tmp_fill_buf+member_offset) < 0)
+            if(H5Awrite(attr_id, member_type_id, tmp_fill_buf + member_offset) < 0)
                 goto out;
 
-            if (H5Aclose(attr_id) < 0)
+            if(H5Aclose(attr_id) < 0)
                 goto out;
+            attr_id = H5I_BADID;
 
-            if (H5Tclose(member_type_id) < 0)
+            if(H5Tclose(member_type_id) < 0)
                 goto out;
+            member_type_id = H5I_BADID;
         }
 
         /* close data space. */
-        if (H5Sclose( sid ) < 0)
+        if(H5Sclose(sid) < 0)
             goto out;
+        sid = H5I_BADID;
     }
 
     /*-------------------------------------------------------------------------
     * read data from 1st table
     *-------------------------------------------------------------------------
     */
-
-    tmp_buf = (unsigned char *)calloc((size_t) nrecords, type_size );
+    if(NULL == (tmp_buf = (unsigned char *)HDcalloc((size_t)nrecords, type_size)))
+        goto out;
 
     /* define a hyperslab in the dataset of the size of the records */
     offset[0] = 0;
     count[0]  = nrecords;
-    if (H5Sselect_hyperslab( sid_1, H5S_SELECT_SET, offset, NULL, count, NULL) < 0)
+    if(H5Sselect_hyperslab(sid_1, H5S_SELECT_SET, offset, NULL, count, NULL) < 0)
         goto out;
 
     /* create a memory dataspace handle */
     mem_size[0] = count[0];
-    if ((m_sid = H5Screate_simple( 1, mem_size, NULL )) < 0)
+    if((m_sid = H5Screate_simple(1, mem_size, NULL)) < 0)
         goto out;
 
-    if (H5Dread( did_1, tid_1, m_sid, sid_1, H5P_DEFAULT, tmp_buf ) < 0)
+    if(H5Dread(did_1, tid_1, m_sid, sid_1, H5P_DEFAULT, tmp_buf) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
@@ -1948,27 +1960,32 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     */
 
     /* append the records to the new table */
-    if (H5TBappend_records( loc_id1, dset_name3, nrecords, src_size, src_offset, src_sizes, tmp_buf ) < 0)
+    if(H5TBappend_records(loc_id1, dset_name3, nrecords, src_size, src_offset, src_sizes, tmp_buf) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
     * release resources from 1st table
     *-------------------------------------------------------------------------
     */
-
-    if (H5Sclose( m_sid ) < 0)
+    if(H5Sclose(m_sid) < 0)
         goto out;
-    if(H5Sclose( sid_1 ) < 0)
+    m_sid = H5I_BADID;
+    if(H5Sclose(sid_1) < 0)
         goto out;
-    if(H5Tclose( tid_1 ) < 0)
+    sid_1 = H5I_BADID;
+    if(H5Tclose(tid_1) < 0)
         goto out;
-    if(H5Pclose( pid_1 ) < 0)
+    tid_1 = H5I_BADID;
+    if(H5Pclose(pid_1) < 0)
         goto out;
-    if(H5Dclose( did_1 ) < 0)
+    pid_1 = H5I_BADID;
+    if(H5Dclose(did_1) < 0)
         goto out;
+    did_1 = H5I_BADID;
 
     /* Release resources. */
-    free( tmp_buf );
+    free(tmp_buf);
+    tmp_buf = NULL;
 
     /*-------------------------------------------------------------------------
     * get information about the 2nd table
@@ -1976,44 +1993,45 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     */
 
     /* open the dataset. */
-    if ((did_2 = H5Dopen2(loc_id2, dset_name2, H5P_DEFAULT)) < 0)
+    if((did_2 = H5Dopen2(loc_id2, dset_name2, H5P_DEFAULT)) < 0)
         goto out;
 
     /* get the datatype */
-    if ((tid_2 = H5Dget_type( did_2 )) < 0)
+    if((tid_2 = H5Dget_type(did_2)) < 0)
         goto out;
 
     /* get the dataspace handle */
-    if ((sid_2 = H5Dget_space( did_2 )) < 0)
+    if((sid_2 = H5Dget_space(did_2)) < 0)
         goto out;
 
     /* get the property list handle */
-    if ((pid_2 = H5Dget_create_plist( did_2 )) < 0)
+    if((pid_2 = H5Dget_create_plist(did_2)) < 0)
         goto out;
 
     /* get the dimensions  */
-    if (H5TBget_table_info ( loc_id2, dset_name2, &nfields, &nrecords ) < 0)
-        return -1;
+    if(H5TBget_table_info(loc_id2, dset_name2, &nfields, &nrecords) < 0)
+        goto out;
 
     /*-------------------------------------------------------------------------
     * read data from 2nd table
     *-------------------------------------------------------------------------
     */
 
-    tmp_buf = (unsigned char *)calloc((size_t) nrecords, type_size );
+    if(NULL == (tmp_buf = (unsigned char *)HDcalloc((size_t)nrecords, type_size)))
+        goto out;
 
     /* define a hyperslab in the dataset of the size of the records */
     offset[0] = 0;
     count[0]  = nrecords;
-    if (H5Sselect_hyperslab( sid_2, H5S_SELECT_SET, offset, NULL, count, NULL) < 0)
+    if(H5Sselect_hyperslab(sid_2, H5S_SELECT_SET, offset, NULL, count, NULL) < 0)
         goto out;
 
     /* create a memory dataspace handle */
     mem_size[0] = count[0];
-    if ((m_sid = H5Screate_simple( 1, mem_size, NULL )) < 0)
+    if((m_sid = H5Screate_simple(1, mem_size, NULL)) < 0)
         goto out;
 
-    if (H5Dread( did_2, tid_2, m_sid, sid_2, H5P_DEFAULT, tmp_buf ) < 0)
+    if(H5Dread(did_2, tid_2, m_sid, sid_2, H5P_DEFAULT, tmp_buf) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
@@ -2022,7 +2040,7 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     */
 
     /* append the records to the new table */
-    if (H5TBappend_records( loc_id1, dset_name3, nrecords, src_size, src_offset, src_sizes, tmp_buf ) < 0)
+    if(H5TBappend_records(loc_id1, dset_name3, nrecords, src_size, src_offset, src_sizes, tmp_buf) < 0)
         goto out;
 
     /*-------------------------------------------------------------------------
@@ -2030,58 +2048,88 @@ herr_t H5TBcombine_tables( hid_t loc_id1,
     *-------------------------------------------------------------------------
     */
 
-    if (H5Sclose( m_sid ) < 0)
+    if(H5Sclose(m_sid) < 0)
         goto out;
-    if (H5Sclose( sid_2 ) < 0)
+    m_sid = H5I_BADID;
+    if(H5Sclose(sid_2) < 0)
         goto out;
-    if (H5Tclose( tid_2 ) < 0)
-        return -1;
-    if (H5Pclose( pid_2 ) < 0)
+    sid_2 = H5I_BADID;
+    if(H5Tclose(tid_2) < 0)
         goto out;
-    if (H5Dclose( did_2 ) < 0)
-        return -1;
+    tid_2 = H5I_BADID;
+    if(H5Pclose(pid_2) < 0)
+        goto out;
+    pid_2 = H5I_BADID;
+    if(H5Dclose(did_2) < 0)
+        goto out;
+    did_2 = H5I_BADID;
 
     /*-------------------------------------------------------------------------
     * release resources from 3rd table
     *-------------------------------------------------------------------------
     */
 
-    if (H5Sclose( sid_3 ) < 0)
-        return -1;
-    if (H5Tclose( tid_3 ) < 0)
-        return -1;
-    if (H5Pclose( pid_3 ) < 0)
-        return -1;
-    if (H5Dclose( did_3 ) < 0)
-        return -1;
-
-    /* Release resources. */
-    free( tmp_buf );
-    free( tmp_fill_buf );
-    free( src_offset );
-    free( src_sizes );
+    if(H5Sclose(sid_3) < 0)
+        goto out;
+    sid_3 = H5I_BADID;
+    if(H5Tclose(tid_3) < 0)
+        goto out;
+    tid_3 = H5I_BADID;
+    if(H5Pclose(pid_3) < 0)
+        goto out;
+    pid_3 = H5I_BADID;
+    if(H5Dclose(did_3) < 0)
+        goto out;
+    did_3 = H5I_BADID;
 
-    return 0;
+    ret_val = 0;
 
-    /* error zone */
 out:
-    H5E_BEGIN_TRY
-    {
-        H5Dclose(did_1);
-        H5Sclose(sid_1);
-        H5Tclose(tid_1);
-        H5Pclose(pid_1);
-        H5Dclose(did_2);
-        H5Sclose(sid_2);
-        H5Tclose(tid_2);
-        H5Pclose(pid_2);
-        H5Dclose(did_3);
-        H5Sclose(sid_3);
-        H5Tclose(tid_3);
-        H5Pclose(pid_3);
+    if(tmp_buf)
+        free(tmp_buf);
+    if(tmp_fill_buf)
+        free(tmp_fill_buf);
+    if(src_offset)
+        free(src_offset);
+    if(src_sizes)
+        free(src_sizes);
+
+    H5E_BEGIN_TRY {
+        if(member_type_id > 0)
+            H5Tclose(member_type_id);
+        if(attr_id > 0)
+            H5Aclose(attr_id);
+        if(sid > 0)
+            H5Sclose(sid);
+        if(m_sid > 0)
+            H5Sclose(m_sid);
+        if(pid_1 > 0)
+            H5Pclose(pid_1);
+        if(tid_1 > 0)
+            H5Tclose(tid_1);
+        if(sid_1 > 0)
+            H5Sclose(sid_1);
+        if(did_1 > 0)
+            H5Dclose(did_1);
+        if(pid_2 > 0)
+            H5Pclose(pid_2);
+        if(tid_2 > 0)
+            H5Tclose(tid_2);
+        if(sid_2 > 0)
+            H5Sclose(sid_2);
+        if(did_2 > 0)
+            H5Dclose(did_2);
+        if(pid_3 > 0)
+            H5Pclose(pid_3);
+        if(tid_3 > 0)
+            H5Tclose(tid_3);
+        if(sid_3 > 0)
+            H5Sclose(sid_3);
+        if(did_3 > 0)
+            H5Dclose(did_3);
     } H5E_END_TRY;
-    return -1;
 
+    return ret_val;
 }
 
 /*-------------------------------------------------------------------------
@@ -2573,7 +2621,7 @@ herr_t H5TBdelete_field( hid_t loc_id,
     size_t   member_offset;
     hid_t    attr_id;
     hsize_t  i;
-    int      has_fill=0;
+    htri_t   has_fill = 0;
 
     /* get the number of records and fields  */
     if (H5TBget_table_info ( loc_id, dset_name,  &nfields, &nrecords ) < 0)
@@ -3009,7 +3057,7 @@ herr_t H5TBAget_title( hid_t loc_id,
 *
 * Purpose: Read the table attribute fill values
 *
-* Return: Success: 0, Failure: -1
+* Return: Success: TRUE/FALSE, Failure: -1
 *
 * Programmer: Pedro Vicente, pvn at ncsa.uiuc.edu
 *
@@ -3021,12 +3069,10 @@ herr_t H5TBAget_title( hid_t loc_id,
 *
 *-------------------------------------------------------------------------
 */
-
-
-herr_t H5TBAget_fill( hid_t loc_id,
+htri_t H5TBAget_fill(hid_t loc_id,
                      const char *dset_name,
                      hid_t dset_id,
-                     unsigned char *dst_buf )
+                     unsigned char *dst_buf)
 {
 
     hsize_t nfields;
@@ -3141,9 +3187,7 @@ herr_t H5TBget_table_info ( hid_t loc_id,
     */
 
     if (nfields)
-    {
-        *nfields = num_members;
-    }
+        *nfields = (hsize_t)num_members;
 
 
     /*-------------------------------------------------------------------------
@@ -3323,19 +3367,19 @@ int H5TB_find_field( const char *field, const char *field_list )
     const char *start = field_list;
     const char *end;
 
-    while ( (end = strstr( start, "," )) != 0 )
+    while ( (end = HDstrstr( start, "," )) != 0 )
     {
-        size_t count = end - start;
-        if(strncmp(start, field, count) == 0 && count == strlen(field) )
+        ptrdiff_t count = end - start;
+
+        if(HDstrncmp(start, field, count) == 0 && count == HDstrlen(field) )
             return 1;
         start = end + 1;
     }
 
-    if(strcmp( start, field ) == 0 )
+    if(HDstrcmp( start, field ) == 0 )
         return 1;
 
     return -1;
-
 }
 
 
diff --git a/hl/src/H5TBpublic.h b/hl/src/H5TBpublic.h
index 4dd17bb..874ef20 100644
--- a/hl/src/H5TBpublic.h
+++ b/hl/src/H5TBpublic.h
@@ -219,10 +219,10 @@ H5_HLDLL herr_t  H5TBdelete_field( hid_t loc_id,
 H5_HLDLL herr_t  H5TBAget_title( hid_t loc_id,
                        char *table_title );
 
-H5_HLDLL herr_t  H5TBAget_fill( hid_t loc_id,
+H5_HLDLL htri_t  H5TBAget_fill(hid_t loc_id,
                       const char *dset_name,
                       hid_t dset_id,
-                      unsigned char *dst_buf );
+                      unsigned char *dst_buf);
 
 #ifdef __cplusplus
 }
diff --git a/hl/src/Makefile.am b/hl/src/Makefile.am
index d03be21..f3d09ab 100644
--- a/hl/src/Makefile.am
+++ b/hl/src/Makefile.am
@@ -27,7 +27,7 @@ AM_CPPFLAGS+=-I$(top_srcdir)/src
 # This library is our main target.
 lib_LTLIBRARIES=libhdf5_hl.la
 
-# Add libtool numbers to the HDF5 HL library (from config/lt_vers.am)
+# Add libtool numbers to the HDF5 hl library (from config/lt_vers.am)
 libhdf5_hl_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
 
 # List sources to include in the HDF5 HL Library.
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index a35c2b4..fa6b370 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -34,6 +33,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,13 +69,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/Makefile.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/lt_vers.am COPYING
 TESTS =
 subdir = hl/src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -87,18 +105,37 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libhdf5_hl_la_DEPENDENCIES = $(LIBHDF5)
 am_libhdf5_hl_la_OBJECTS = H5DS.lo H5IM.lo H5LT.lo H5LTanalyze.lo \
 	H5LTparse.lo H5PT.lo H5TB.lo
 libhdf5_hl_la_OBJECTS = $(am_libhdf5_hl_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libhdf5_hl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(libhdf5_hl_la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -109,31 +146,34 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libhdf5_hl_la_SOURCES)
 DIST_SOURCES = $(libhdf5_hl_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 HEADERS = $(include_HEADERS)
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -153,12 +193,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -420,13 +457,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 
 # This library is our main target.
 lib_LTLIBRARIES = libhdf5_hl.la
 
-# Add libtool numbers to the HDF5 HL library (from config/lt_vers.am)
+# Add libtool numbers to the HDF5 hl library (from config/lt_vers.am)
 libhdf5_hl_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
 
 # List sources to include in the HDF5 HL Library.
@@ -449,6 +486,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -478,6 +519,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -489,7 +531,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -497,6 +538,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -512,13 +555,15 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libhdf5_hl.la: $(libhdf5_hl_la_OBJECTS) $(libhdf5_hl_la_DEPENDENCIES) 
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libhdf5_hl.la: $(libhdf5_hl_la_OBJECTS) $(libhdf5_hl_la_DEPENDENCIES) $(EXTRA_libhdf5_hl_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(libhdf5_hl_la_LINK) -rpath $(libdir) $(libhdf5_hl_la_OBJECTS) $(libhdf5_hl_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -538,26 +583,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -566,8 +608,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -581,9 +626,7 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -634,6 +677,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -685,10 +742,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -774,8 +836,8 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-generic clean-libLTLIBRARIES clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-generic clean-libLTLIBRARIES clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -818,7 +880,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -844,7 +906,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -868,7 +930,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -878,7 +940,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -968,7 +1030,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -998,7 +1060,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/test/Makefile.am b/hl/test/Makefile.am
index 76c6f90..8893b93 100644
--- a/hl/test/Makefile.am
+++ b/hl/test/Makefile.am
@@ -44,8 +44,8 @@ if BUILD_ALL_CONDITIONAL
 endif
 
 # Temporary files.  These files are the ones created by running `make test'.
-CHECK_CLEANFILES+=combine_tables[1-2].h5 test_ds[1-9].h5 test_image[1-3].h5 \
-        file_img[1-2].h5 test_lite[1-2].h5 test_table.h5 test_packet_table.h5 \
-        test_packet_compress.h5 test_detach.h5
+CHECK_CLEANFILES+=combine_tables[1-2].h5 test_ds[1-9].h5 test_ds10.h5 \
+	test_image[1-3].h5 file_img[1-2].h5 test_lite[1-4].h5 test_table.h5 \
+	test_packet_table.h5 test_packet_compress.h5 test_detach.h5
 
 include $(top_srcdir)/config/conclude.am
diff --git a/hl/test/Makefile.in b/hl/test/Makefile.in
index b7548ec..f98b2bc 100644
--- a/hl/test/Makefile.in
+++ b/hl/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -35,6 +34,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -54,14 +70,16 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/H5srcdir_str.h.in $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/Makefile.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 check_PROGRAMS = $(am__EXEEXT_1)
 @BUILD_ALL_CONDITIONAL_TRUE at noinst_PROGRAMS = $(am__EXEEXT_2)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_1)
 subdir = hl/test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -77,9 +95,10 @@ gen_test_ds_SOURCES = gen_test_ds.c
 gen_test_ds_OBJECTS = gen_test_ds.$(OBJEXT)
 gen_test_ds_LDADD = $(LDADD)
 gen_test_ds_DEPENDENCIES = $(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 test_ds_SOURCES = test_ds.c
 test_ds_OBJECTS = test_ds.$(OBJEXT)
 test_ds_LDADD = $(LDADD)
@@ -104,6 +123,18 @@ test_table_SOURCES = test_table.c
 test_table_OBJECTS = test_table.$(OBJEXT)
 test_table_LDADD = $(LDADD)
 test_table_DEPENDENCIES = $(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -114,32 +145,35 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = gen_test_ds.c test_ds.c test_file_image.c test_image.c \
 	test_lite.c test_packet.c test_table.c
 DIST_SOURCES = gen_test_ds.c test_ds.c test_file_image.c test_image.c \
 	test_lite.c test_packet.c test_table.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -162,12 +196,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -427,9 +458,9 @@ TRACE = perl $(top_srcdir)/bin/trace
 
 # Temporary files.  These files are the ones created by running `make test'.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog combine_tables[1-2].h5 \
-	test_ds[1-9].h5 test_image[1-3].h5 file_img[1-2].h5 \
-	test_lite[1-2].h5 test_table.h5 test_packet_table.h5 \
-	test_packet_compress.h5 test_detach.h5
+	test_ds[1-9].h5 test_ds10.h5 test_image[1-3].h5 \
+	file_img[1-2].h5 test_lite[1-4].h5 test_table.h5 \
+	test_packet_table.h5 test_packet_compress.h5 test_detach.h5
 
 # The tests depend on the hdf5, hdf5 test,  and hdf5_hl libraries
 LDADD = $(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5)
@@ -456,6 +487,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -485,6 +520,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -514,25 +550,25 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-gen_test_ds$(EXEEXT): $(gen_test_ds_OBJECTS) $(gen_test_ds_DEPENDENCIES) 
+gen_test_ds$(EXEEXT): $(gen_test_ds_OBJECTS) $(gen_test_ds_DEPENDENCIES) $(EXTRA_gen_test_ds_DEPENDENCIES) 
 	@rm -f gen_test_ds$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_test_ds_OBJECTS) $(gen_test_ds_LDADD) $(LIBS)
-test_ds$(EXEEXT): $(test_ds_OBJECTS) $(test_ds_DEPENDENCIES) 
+test_ds$(EXEEXT): $(test_ds_OBJECTS) $(test_ds_DEPENDENCIES) $(EXTRA_test_ds_DEPENDENCIES) 
 	@rm -f test_ds$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_ds_OBJECTS) $(test_ds_LDADD) $(LIBS)
-test_file_image$(EXEEXT): $(test_file_image_OBJECTS) $(test_file_image_DEPENDENCIES) 
+test_file_image$(EXEEXT): $(test_file_image_OBJECTS) $(test_file_image_DEPENDENCIES) $(EXTRA_test_file_image_DEPENDENCIES) 
 	@rm -f test_file_image$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_file_image_OBJECTS) $(test_file_image_LDADD) $(LIBS)
-test_image$(EXEEXT): $(test_image_OBJECTS) $(test_image_DEPENDENCIES) 
+test_image$(EXEEXT): $(test_image_OBJECTS) $(test_image_DEPENDENCIES) $(EXTRA_test_image_DEPENDENCIES) 
 	@rm -f test_image$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_image_OBJECTS) $(test_image_LDADD) $(LIBS)
-test_lite$(EXEEXT): $(test_lite_OBJECTS) $(test_lite_DEPENDENCIES) 
+test_lite$(EXEEXT): $(test_lite_OBJECTS) $(test_lite_DEPENDENCIES) $(EXTRA_test_lite_DEPENDENCIES) 
 	@rm -f test_lite$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_lite_OBJECTS) $(test_lite_LDADD) $(LIBS)
-test_packet$(EXEEXT): $(test_packet_OBJECTS) $(test_packet_DEPENDENCIES) 
+test_packet$(EXEEXT): $(test_packet_OBJECTS) $(test_packet_DEPENDENCIES) $(EXTRA_test_packet_DEPENDENCIES) 
 	@rm -f test_packet$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_packet_OBJECTS) $(test_packet_LDADD) $(LIBS)
-test_table$(EXEEXT): $(test_table_OBJECTS) $(test_table_DEPENDENCIES) 
+test_table$(EXEEXT): $(test_table_OBJECTS) $(test_table_DEPENDENCIES) $(EXTRA_test_table_DEPENDENCIES) 
 	@rm -f test_table$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_table_OBJECTS) $(test_table_LDADD) $(LIBS)
 
@@ -553,26 +589,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -629,6 +662,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -678,10 +725,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -768,17 +820,18 @@ uninstall-am:
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am tags uninstall uninstall-am
+	clean-noinstPROGRAMS cscopelist ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -796,7 +849,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -822,7 +875,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -846,7 +899,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -856,7 +909,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -946,7 +999,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -976,7 +1029,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/test/test_image.c b/hl/test/test_image.c
index 2e1e465..7740a4d 100644
--- a/hl/test/test_image.c
+++ b/hl/test/test_image.c
@@ -514,6 +514,7 @@ static int test_generate(void)
     char     *srcdir = getenv("srcdir"); /* the source directory */
     char     data_file[512]="";          /* buffer to hold name of existing data file */
     int      i;
+    int      retval = FAIL;
 
     /* create a file using default properties */
     if ((fid=H5Fcreate(FILE3,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
@@ -686,15 +687,17 @@ static int test_generate(void)
     if (H5Fclose(fid)<0)
         goto out;
 
+    /* Indicate success */
     return 0;
 
     /* error zone, gracefully close */
 out:
+    HDfree(data);
     H5E_BEGIN_TRY {
         H5Fclose(fid);
     } H5E_END_TRY;
     H5_FAILED();
-    return FAIL;
+    return retval;
 }
 
 
diff --git a/hl/test/test_lite.c b/hl/test/test_lite.c
index 0a7b0b4..2c7594c 100644
--- a/hl/test/test_lite.c
+++ b/hl/test/test_lite.c
@@ -1824,7 +1824,6 @@ static int test_valid_path(void)
   herr_t status;
   FILE *fp = NULL;
   htri_t path_valid;
-  char path[10];
   const char *data_string_in = "test";
   
   TESTING("H5LTpath_valid");
@@ -2161,9 +2160,12 @@ int main( void )
     /* test attribute functions */
     nerrors += test_attr();
 
-    /* test text-dtype functions */
+    /* test valid path functions */
     nerrors += test_valid_path();
 
+    /* test text-dtype functions */
+    nerrors += test_text_dtype();
+
     /* check for errors */
     if (nerrors)
         goto error;
diff --git a/hl/tools/CMakeLists.txt b/hl/tools/CMakeLists.txt
index 4fc83b7..28943d6 100644
--- a/hl/tools/CMakeLists.txt
+++ b/hl/tools/CMakeLists.txt
@@ -54,7 +54,7 @@ INSTALL (
         gif2h5
         h52gif
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         hltoolsapplications
 )
diff --git a/hl/tools/Makefile.in b/hl/tools/Makefile.in
index dae4008..23baa17 100644
--- a/hl/tools/Makefile.in
+++ b/hl/tools/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # Tools HDF5 Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,24 +67,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = hl/tools
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -78,6 +101,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -85,8 +113,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
@@ -114,7 +144,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -132,12 +162,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -410,6 +437,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -438,6 +469,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -455,12 +487,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -470,7 +502,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -484,37 +520,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -523,6 +528,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -586,6 +595,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -621,13 +644,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -663,10 +683,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -746,21 +771,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+	tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -778,7 +805,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -804,7 +831,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -828,7 +855,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -838,7 +865,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -928,7 +955,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -958,7 +985,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/tools/gif2h5/Makefile.am b/hl/tools/gif2h5/Makefile.am
index 895c75f..d1d416a 100644
--- a/hl/tools/gif2h5/Makefile.am
+++ b/hl/tools/gif2h5/Makefile.am
@@ -25,7 +25,7 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib -I$(top_srcdir)/hl/src
 
 # These are our main targets, the tools
 
-TEST_SCRIPT=$(srcdir)/h52giftest.sh
+TEST_SCRIPT=h52giftest.sh
 check_SCRIPTS=$(TEST_SCRIPT)
 
 bin_PROGRAMS=gif2h5 h52gif
diff --git a/hl/tools/gif2h5/Makefile.in b/hl/tools/gif2h5/Makefile.in
index c857fed..8b98276 100644
--- a/hl/tools/gif2h5/Makefile.in
+++ b/hl/tools/gif2h5/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,19 +68,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/h52giftest.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 bin_PROGRAMS = gif2h5$(EXEEXT) h52gif$(EXEEXT)
 noinst_PROGRAMS = h52gifgentst$(EXEEXT)
-TESTS = $(check_SCRIPTS)
+TESTS = $(TEST_SCRIPT)
 subdir = hl/tools/gif2h5
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = h52giftest.sh
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)"
 PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
@@ -73,9 +91,10 @@ am_gif2h5_OBJECTS = gif2hdf.$(OBJEXT) gif2mem.$(OBJEXT) \
 gif2h5_OBJECTS = $(am_gif2h5_OBJECTS)
 gif2h5_LDADD = $(LDADD)
 gif2h5_DEPENDENCIES = $(LIBH5_HL) $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 gif2h5_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(gif2h5_LDFLAGS) $(LDFLAGS) -o $@
@@ -90,6 +109,18 @@ am_h52gifgentst_OBJECTS = h52gifgentst.$(OBJEXT)
 h52gifgentst_OBJECTS = $(am_h52gifgentst_OBJECTS)
 h52gifgentst_LDADD = $(LDADD)
 h52gifgentst_DEPENDENCIES = $(LIBH5_HL) $(LIBH5TOOLS) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -100,31 +131,34 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(gif2h5_SOURCES) $(h52gif_SOURCES) $(h52gifgentst_SOURCES)
 DIST_SOURCES = $(gif2h5_SOURCES) $(h52gif_SOURCES) \
 	$(h52gifgentst_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -142,12 +176,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -410,7 +441,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 *.gif
 INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib -I$(top_srcdir)/hl/src
 
 # These are our main targets, the tools
-TEST_SCRIPT = $(srcdir)/h52giftest.sh
+TEST_SCRIPT = h52giftest.sh
 check_SCRIPTS = $(TEST_SCRIPT)
 
 # Add h52gif and gif2h5 specific linker flags here
@@ -435,6 +466,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -464,6 +499,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -473,10 +509,15 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+h52giftest.sh: $(top_builddir)/config.status $(srcdir)/h52giftest.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -525,13 +566,13 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-gif2h5$(EXEEXT): $(gif2h5_OBJECTS) $(gif2h5_DEPENDENCIES) 
+gif2h5$(EXEEXT): $(gif2h5_OBJECTS) $(gif2h5_DEPENDENCIES) $(EXTRA_gif2h5_DEPENDENCIES) 
 	@rm -f gif2h5$(EXEEXT)
 	$(AM_V_CCLD)$(gif2h5_LINK) $(gif2h5_OBJECTS) $(gif2h5_LDADD) $(LIBS)
-h52gif$(EXEEXT): $(h52gif_OBJECTS) $(h52gif_DEPENDENCIES) 
+h52gif$(EXEEXT): $(h52gif_OBJECTS) $(h52gif_DEPENDENCIES) $(EXTRA_h52gif_DEPENDENCIES) 
 	@rm -f h52gif$(EXEEXT)
 	$(AM_V_CCLD)$(h52gif_LINK) $(h52gif_OBJECTS) $(h52gif_LDADD) $(LIBS)
-h52gifgentst$(EXEEXT): $(h52gifgentst_OBJECTS) $(h52gifgentst_DEPENDENCIES) 
+h52gifgentst$(EXEEXT): $(h52gifgentst_OBJECTS) $(h52gifgentst_DEPENDENCIES) $(EXTRA_h52gifgentst_DEPENDENCIES) 
 	@rm -f h52gifgentst$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h52gifgentst_OBJECTS) $(h52gifgentst_LDADD) $(LIBS)
 
@@ -553,26 +594,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -629,6 +667,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -681,10 +733,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -771,18 +828,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-generic clean-libtool \
-	clean-noinstPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-binPROGRAMS
+	clean-noinstPROGRAMS cscopelist ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -800,7 +858,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -826,7 +884,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -850,7 +908,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -860,7 +918,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -950,7 +1008,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -980,7 +1038,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/hl/tools/gif2h5/h52giftest.sh b/hl/tools/gif2h5/h52giftest.sh.in
similarity index 100%
rename from hl/tools/gif2h5/h52giftest.sh
rename to hl/tools/gif2h5/h52giftest.sh.in
diff --git a/perform/CMakeLists.txt b/perform/CMakeLists.txt
index 1bcf628..0a34677 100644
--- a/perform/CMakeLists.txt
+++ b/perform/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_PERFORM )
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Setup include Directories
 #-----------------------------------------------------------------------------
 INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
@@ -110,25 +115,16 @@ IF (H5_HAVE_PARALLEL)
     SET_TARGET_PROPERTIES (h5perf_alone PROPERTIES FOLDER perform)
   ENDIF (HDF5_BUILD_PERFORM_STANDALONE)
 
-  #-- Adding test for benchpar
-  SET (benchpar_SRCS
-      ${HDF5_PERFORM_SOURCE_DIR}/benchpar.c
-  )
-  ADD_EXECUTABLE (benchpar ${benchpar_SRCS})
-  TARGET_NAMING (benchpar ${LIB_TYPE})
-  TARGET_LINK_LIBRARIES (benchpar ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-  SET_TARGET_PROPERTIES (benchpar PROPERTIES FOLDER perform)
-
-  #-- Adding test for mpi-perf
-  IF (NOT WIN32)
-    SET (mpi-perf_SRCS
-        ${HDF5_PERFORM_SOURCE_DIR}/mpi-perf.c
+  IF (HDF5_BUILD_PARALLEL_ALL)
+    #-- Adding test for benchpar
+    SET (benchpar_SRCS
+        ${HDF5_PERFORM_SOURCE_DIR}/benchpar.c
     )
-    ADD_EXECUTABLE (mpi-perf ${mpi-perf_SRCS})
-    TARGET_NAMING (mpi-perf ${LIB_TYPE})
-    TARGET_LINK_LIBRARIES (mpi-perf ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-    SET_TARGET_PROPERTIES (mpi-perf PROPERTIES FOLDER perform)
-  ENDIF (NOT WIN32)
+    ADD_EXECUTABLE (benchpar ${benchpar_SRCS})
+    TARGET_NAMING (benchpar ${LIB_TYPE})
+    TARGET_LINK_LIBRARIES (benchpar ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+    SET_TARGET_PROPERTIES (benchpar PROPERTIES FOLDER perform)
+  ENDIF (HDF5_BUILD_PARALLEL_ALL)
 ENDIF (H5_HAVE_PARALLEL)
 
 
@@ -188,9 +184,7 @@ IF (H5_HAVE_PARALLEL)
     ADD_TEST (NAME PERFORM_h5perf_alone COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:h5perf_alone>)
   ENDIF (HDF5_BUILD_PERFORM_STANDALONE)
 
-#  ADD_TEST (NAME PERFORM_benchpar COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:benchpar>)
-
-  IF (NOT WIN32)
-    ADD_TEST (NAME PERFORM_mpi-perf COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:mpi-perf>)
-  ENDIF (NOT WIN32)
+  IF (HDF5_BUILD_PARALLEL_ALL)
+    ADD_TEST (NAME PERFORM_benchpar COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:benchpar>)
+  ENDIF (HDF5_BUILD_PARALLEL_ALL)
 ENDIF (H5_HAVE_PARALLEL)
diff --git a/perform/Makefile.am b/perform/Makefile.am
index 4b44b43..988ec63 100644
--- a/perform/Makefile.am
+++ b/perform/Makefile.am
@@ -37,8 +37,9 @@ h5perf_serial_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
 # Some programs are not built or run by default, but can be built by hand or by
 # specifying --enable-build-all at configure time.
 # Also, some of these programs should only be built in parallel.
+# Currently there is no such program.
 if BUILD_PARALLEL_CONDITIONAL
-    PARA_BUILD_ALL=benchpar mpi-perf
+    PARA_BUILD_ALL=
 endif
 if BUILD_ALL_CONDITIONAL
     BUILD_ALL_PROGS=$(PARA_BUILD_ALL)
diff --git a/perform/Makefile.in b/perform/Makefile.in
index 39739a4..230469c 100644
--- a/perform/Makefile.in
+++ b/perform/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,6 +68,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 @BUILD_PARALLEL_CONDITIONAL_FALSE at bin_PROGRAMS =  \
@@ -62,10 +79,10 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 check_PROGRAMS = iopipe$(EXEEXT) chunk$(EXEEXT) overhead$(EXEEXT) \
 	zip_perf$(EXEEXT) perf_meta$(EXEEXT) $(am__EXEEXT_2) \
 	perf$(EXEEXT)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_3)
 subdir = perform
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -73,21 +90,17 @@ CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)"
- at BUILD_PARALLEL_CONDITIONAL_TRUE@am__EXEEXT_1 = benchpar$(EXEEXT) \
- at BUILD_PARALLEL_CONDITIONAL_TRUE@	mpi-perf$(EXEEXT)
+am__EXEEXT_1 =
 @BUILD_ALL_CONDITIONAL_TRUE at am__EXEEXT_2 = $(am__EXEEXT_1)
 PROGRAMS = $(bin_PROGRAMS)
-benchpar_SOURCES = benchpar.c
-benchpar_OBJECTS = benchpar.$(OBJEXT)
-benchpar_LDADD = $(LDADD)
-benchpar_DEPENDENCIES = $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
 chunk_SOURCES = chunk.c
 chunk_OBJECTS = chunk.$(OBJEXT)
 chunk_LDADD = $(LDADD)
 chunk_DEPENDENCIES = $(LIBHDF5)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
 am_h5perf_OBJECTS = pio_perf.$(OBJEXT) pio_engine.$(OBJEXT) \
 	pio_timer.$(OBJEXT)
 h5perf_OBJECTS = $(am_h5perf_OBJECTS)
@@ -105,10 +118,6 @@ h5perf_serial_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 iopipe_SOURCES = iopipe.c
 iopipe_OBJECTS = iopipe.$(OBJEXT)
 iopipe_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
-mpi_perf_SOURCES = mpi-perf.c
-mpi_perf_OBJECTS = mpi-perf.$(OBJEXT)
-mpi_perf_LDADD = $(LDADD)
-mpi_perf_DEPENDENCIES = $(LIBHDF5)
 overhead_SOURCES = overhead.c
 overhead_OBJECTS = overhead.$(OBJEXT)
 overhead_LDADD = $(LDADD)
@@ -122,6 +131,18 @@ perf_meta_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
 zip_perf_SOURCES = zip_perf.c
 zip_perf_OBJECTS = zip_perf.$(OBJEXT)
 zip_perf_DEPENDENCIES = $(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -132,34 +153,38 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = benchpar.c chunk.c $(h5perf_SOURCES) \
-	$(h5perf_serial_SOURCES) iopipe.c mpi-perf.c overhead.c perf.c \
-	perf_meta.c zip_perf.c
-DIST_SOURCES = benchpar.c chunk.c $(h5perf_SOURCES) \
-	$(h5perf_serial_SOURCES) iopipe.c mpi-perf.c overhead.c perf.c \
-	perf_meta.c zip_perf.c
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = chunk.c $(h5perf_SOURCES) $(h5perf_serial_SOURCES) iopipe.c \
+	overhead.c perf.c perf_meta.c zip_perf.c
+DIST_SOURCES = chunk.c $(h5perf_SOURCES) $(h5perf_serial_SOURCES) \
+	iopipe.c overhead.c perf.c perf_meta.c zip_perf.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
+am__EXEEXT_3 = iopipe$(EXEEXT) chunk$(EXEEXT) overhead$(EXEEXT) \
+	zip_perf$(EXEEXT) perf_meta$(EXEEXT) h5perf_serial$(EXEEXT) \
+	$(am__EXEEXT_2)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -177,12 +202,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -449,7 +471,8 @@ h5perf_serial_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
 # Some programs are not built or run by default, but can be built by hand or by
 # specifying --enable-build-all at configure time.
 # Also, some of these programs should only be built in parallel.
- at BUILD_PARALLEL_CONDITIONAL_TRUE@PARA_BUILD_ALL = benchpar mpi-perf
+# Currently there is no such program.
+ at BUILD_PARALLEL_CONDITIONAL_TRUE@PARA_BUILD_ALL = 
 @BUILD_ALL_CONDITIONAL_TRUE at BUILD_ALL_PROGS = $(PARA_BUILD_ALL)
 
 # Define programs that will be run in 'make check'
@@ -486,6 +509,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -515,6 +542,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -526,8 +554,11 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -576,34 +607,28 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-benchpar$(EXEEXT): $(benchpar_OBJECTS) $(benchpar_DEPENDENCIES) 
-	@rm -f benchpar$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(benchpar_OBJECTS) $(benchpar_LDADD) $(LIBS)
-chunk$(EXEEXT): $(chunk_OBJECTS) $(chunk_DEPENDENCIES) 
+chunk$(EXEEXT): $(chunk_OBJECTS) $(chunk_DEPENDENCIES) $(EXTRA_chunk_DEPENDENCIES) 
 	@rm -f chunk$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(chunk_OBJECTS) $(chunk_LDADD) $(LIBS)
-h5perf$(EXEEXT): $(h5perf_OBJECTS) $(h5perf_DEPENDENCIES) 
+h5perf$(EXEEXT): $(h5perf_OBJECTS) $(h5perf_DEPENDENCIES) $(EXTRA_h5perf_DEPENDENCIES) 
 	@rm -f h5perf$(EXEEXT)
 	$(AM_V_CCLD)$(h5perf_LINK) $(h5perf_OBJECTS) $(h5perf_LDADD) $(LIBS)
-h5perf_serial$(EXEEXT): $(h5perf_serial_OBJECTS) $(h5perf_serial_DEPENDENCIES) 
+h5perf_serial$(EXEEXT): $(h5perf_serial_OBJECTS) $(h5perf_serial_DEPENDENCIES) $(EXTRA_h5perf_serial_DEPENDENCIES) 
 	@rm -f h5perf_serial$(EXEEXT)
 	$(AM_V_CCLD)$(h5perf_serial_LINK) $(h5perf_serial_OBJECTS) $(h5perf_serial_LDADD) $(LIBS)
-iopipe$(EXEEXT): $(iopipe_OBJECTS) $(iopipe_DEPENDENCIES) 
+iopipe$(EXEEXT): $(iopipe_OBJECTS) $(iopipe_DEPENDENCIES) $(EXTRA_iopipe_DEPENDENCIES) 
 	@rm -f iopipe$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(iopipe_OBJECTS) $(iopipe_LDADD) $(LIBS)
-mpi-perf$(EXEEXT): $(mpi_perf_OBJECTS) $(mpi_perf_DEPENDENCIES) 
-	@rm -f mpi-perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(mpi_perf_OBJECTS) $(mpi_perf_LDADD) $(LIBS)
-overhead$(EXEEXT): $(overhead_OBJECTS) $(overhead_DEPENDENCIES) 
+overhead$(EXEEXT): $(overhead_OBJECTS) $(overhead_DEPENDENCIES) $(EXTRA_overhead_DEPENDENCIES) 
 	@rm -f overhead$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(overhead_OBJECTS) $(overhead_LDADD) $(LIBS)
-perf$(EXEEXT): $(perf_OBJECTS) $(perf_DEPENDENCIES) 
+perf$(EXEEXT): $(perf_OBJECTS) $(perf_DEPENDENCIES) $(EXTRA_perf_DEPENDENCIES) 
 	@rm -f perf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(perf_OBJECTS) $(perf_LDADD) $(LIBS)
-perf_meta$(EXEEXT): $(perf_meta_OBJECTS) $(perf_meta_DEPENDENCIES) 
+perf_meta$(EXEEXT): $(perf_meta_OBJECTS) $(perf_meta_DEPENDENCIES) $(EXTRA_perf_meta_DEPENDENCIES) 
 	@rm -f perf_meta$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(perf_meta_OBJECTS) $(perf_meta_LDADD) $(LIBS)
-zip_perf$(EXEEXT): $(zip_perf_OBJECTS) $(zip_perf_DEPENDENCIES) 
+zip_perf$(EXEEXT): $(zip_perf_OBJECTS) $(zip_perf_DEPENDENCIES) $(EXTRA_zip_perf_DEPENDENCIES) 
 	@rm -f zip_perf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(zip_perf_OBJECTS) $(zip_perf_LDADD) $(LIBS)
 
@@ -613,10 +638,8 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/benchpar.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/chunk.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iopipe.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mpi-perf.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/overhead.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/perf.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/perf_meta.Po at am__quote@
@@ -631,26 +654,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -707,6 +727,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -759,10 +793,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -850,7 +889,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -879,7 +918,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -905,7 +944,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -929,7 +968,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -939,7 +978,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1029,7 +1068,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1059,7 +1098,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/perform/mpi-perf.c b/perform/mpi-perf.c
deleted file mode 100644
index a09d672..0000000
--- a/perform/mpi-perf.c
+++ /dev/null
@@ -1,373 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group.                                               *
- * Copyright by the Board of Trustees of the University of Illinois.         *
- * All rights reserved.                                                      *
- *                                                                           *
- * This file is part of HDF5.  The full HDF5 copyright notice, including     *
- * terms governing use, modification, and redistribution, is contained in    *
- * the files COPYING and Copyright.html.  COPYING can be found at the root   *
- * of the source code distribution tree; Copyright.html can be found at the  *
- * root level of an installed copy of the electronic HDF5 document set and   *
- * is linked from the top-level documents page.  It can also be found at     *
- * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
- * access to either file, you may request a copy from help at hdfgroup.org.     *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/*
- * (C) 1995-2001 Clemson University and Argonne National Laboratory.
- *
- * See COPYING in top-level directory.
- *
- * This is contributed by Robert Ross to the HDF5 software.
- * and was called mpi-io-test.c
- */
-
-#include "hdf5.h"
-#include "H5private.h"
-#ifdef H5_HAVE_PARALLEL
-/* mpi-perf.c
- *
- * This is derived from code given to me by Rajeev Thakur.  Dunno where
- * it originated.
- *
- * It's purpose is to produce aggregate bandwidth numbers for varying
- * block sizes, number of processors, an number of iterations.
- *
- * This is strictly an mpi program - it is used to test the MPI I/O
- * functionality implemented by Romio.
- *
- * Compiling is usually easiest with something like:
- * mpicc -Wall -Wstrict-prototypes mpi-io-test.c -o mpi-io-test
- *
- * NOTE: This code assumes that all command line arguments make it out to all
- * the processes that make up the parallel job, which isn't always the case.
- * So if it doesn't work on some platform, that might be why.
- */
-/* Modifications:
- *    Albert Cheng, Apr 30, 20001
- *    Changed MPI_File_open to use MPI_COMM_WORLD (was MPI_COMM_SELF).
- *    Albert Cheng, May 5, 20001
- *    Changed MPI_File_seek then MPI_File_write or MPI_File_read to just
- *    MPI_File_write_at and MPI_File_read_at.  Some compiler, e.g., IBM
- *    mpcc_r does not support MPI_File_seek and MPI_File_read or MPI_File_write.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#ifdef H5_HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <errno.h>
-#include <string.h>
-#if defined(H5_TIME_WITH_SYS_TIME)
-#   include <sys/time.h>
-#   include <time.h>
-#elif defined(H5_HAVE_SYS_TIME_H)
-#   include <sys/time.h>
-#else
-#   include <time.h>
-#endif
-#include <mpi.h>
-#ifndef MPI_FILE_NULL           /*MPIO may be defined in mpi.h already       */
-#   include <mpio.h>
-#endif
-
-
-
-/* DEFAULT VALUES FOR OPTIONS */
-int64_t opt_block     = 1048576*16;
-int     opt_iter      = 1;
-int     opt_stripe    = -1;
-int     opt_correct   = 0;
-int     amode         = O_RDWR | O_CREAT;
-char    opt_file[256] = "/tmp/test.out\0";
-char    opt_pvfstab[256] = "notset\0";
-int     opt_pvfstab_set = 0;
-
-/* function prototypes */
-static int parse_args(int argc, char **argv);
-
-extern int errno;
-
-/* globals needed for getopt */
-extern char *optarg;
-
-int main(int argc, char **argv)
-{
-    char *buf, *tmp, *buf2, *tmp2, *check;
-    int i, j, mynod=0, nprocs=1, err, my_correct = 1, correct, myerrno;
-    double stim, etim;
-    double write_tim = 0;
-    double read_tim = 0;
-    double read_bw, write_bw;
-    double max_read_tim, max_write_tim;
-    double min_read_tim, min_write_tim;
-    double ave_read_tim, ave_write_tim;
-    int64_t iter_jump = 0;
-    int64_t seek_position = 0;
-    MPI_File fh;
-    MPI_Status status;
-    int nchars;
-
-    /* startup MPI and determine the rank of this process */
-    MPI_Init(&argc,&argv);
-    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
-    MPI_Comm_rank(MPI_COMM_WORLD, &mynod);
-
-    /* parse the command line arguments */
-    parse_args(argc, argv);
-
-    if (mynod == 0) printf("# Using mpi-io calls.\n");
-
-
-    /* kindof a weird hack- if the location of the pvfstab file was
-     * specified on the command line, then spit out this location into
-     * the appropriate environment variable: */
-
-#if H5_HAVE_SETENV
-/* no setenv or unsetenv */
-    if (opt_pvfstab_set) {
-            if((setenv("PVFSTAB_FILE", opt_pvfstab, 1)) < 0){
-                    perror("setenv");
-                    goto die_jar_jar_die;
-            }
-    }
-#endif
-
-    /* this is how much of the file data is covered on each iteration of
-     * the test.  used to help determine the seek offset on each
-     * iteration */
-    iter_jump = nprocs * opt_block;
-
-    /* setup a buffer of data to write */
-    if (!(tmp = (char *) malloc(opt_block + 256))) {
-            perror("malloc");
-            goto die_jar_jar_die;
-    }
-    buf = tmp + 128 - (((long)tmp) % 128);  /* align buffer */
-
-    if (opt_correct) {
-            /* do the same buffer setup for verifiable data */
-            if (!(tmp2 = (char *) malloc(opt_block + 256))) {
-                    perror("malloc2");
-                    goto die_jar_jar_die;
-             }
-            buf2 = tmp + 128 - (((long)tmp) % 128);
-    }
-
-    /* open the file for writing */
-    err = MPI_File_open(MPI_COMM_WORLD, opt_file,
-    MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh);
-    if (err < 0) {
-            fprintf(stderr, "node %d, open error: %s\n", mynod, strerror(errno));
-            goto die_jar_jar_die;
-    }
-
-    /* now repeat the write operations the number of times
-     * specified on the command line */
-    for (j=0; j < opt_iter; j++) {
-
-            /* calculate the appropriate position depending on the iteration
-             * and rank of the current process */
-            seek_position = (j*iter_jump)+(mynod*opt_block);
-
-            if (opt_correct) /* fill in buffer for iteration */ {
-                    for (i=mynod+j, check=buf; i<opt_block; i++,check++) *check=(char)i;
-            }
-
-            /* discover the starting time of the operation */
-       MPI_Barrier(MPI_COMM_WORLD);
-       stim = MPI_Wtime();
-
-            /* write out the data */
-            nchars = opt_block/sizeof(char);
-            err = MPI_File_write_at(fh, seek_position, buf, nchars, MPI_CHAR, &status);
-            if(err){
-                    fprintf(stderr, "node %d, write error: %s\n", mynod,
-                    strerror(errno));
-            }
-
-            /* discover the ending time of the operation */
-       etim = MPI_Wtime();
-
-       write_tim += (etim - stim);
-
-            /* we are done with this "write" iteration */
-    }
-
-    err = MPI_File_close(&fh);
-    if(err){
-            fprintf(stderr, "node %d, close error after write\n", mynod);
-    }
-
-    /* wait for everyone to synchronize at this point */
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    /* reopen the file to read the data back out */
-    err = MPI_File_open(MPI_COMM_WORLD, opt_file,
-    MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh);
-    if (err < 0) {
-            fprintf(stderr, "node %d, open error: %s\n", mynod, strerror(errno));
-            goto die_jar_jar_die;
-    }
-
-
-    /* we are going to repeat the read operation the number of iterations
-     * specified */
-    for (j=0; j < opt_iter; j++) {
-            /* calculate the appropriate spot give the current iteration and
-             * rank within the MPI processes */
-            seek_position = (j*iter_jump)+(mynod*opt_block);
-
-            /* discover the start time */
-       MPI_Barrier(MPI_COMM_WORLD);
-       stim = MPI_Wtime();
-
-            /* read in the file data */
-            if (!opt_correct){
-                    err = MPI_File_read_at(fh, seek_position, buf, nchars, MPI_CHAR, &status);
-            }
-            else{
-                    err = MPI_File_read_at(fh, seek_position, buf2, nchars, MPI_CHAR, &status);
-            }
-            myerrno = errno;
-
-            /* discover the end time */
-       etim = MPI_Wtime();
-       read_tim += (etim - stim);
-
-       if (err < 0) fprintf(stderr, "node %d, read error, loc = %Ld: %s\n",
-                    mynod, mynod*opt_block, strerror(myerrno));
-
-            /* if the user wanted to check correctness, compare the write
-             * buffer to the read buffer */
-            if (opt_correct && memcmp(buf, buf2, opt_block)) {
-                    fprintf(stderr, "node %d, correctness test failed\n", mynod);
-                    my_correct = 0;
-                    MPI_Allreduce(&my_correct, &correct, 1, MPI_INT, MPI_MIN,
-                            MPI_COMM_WORLD);
-            }
-
-            /* we are done with this read iteration */
-    }
-
-    /* close the file */
-    err = MPI_File_close(&fh);
-    if(err){
-            fprintf(stderr, "node %d, close error after write\n", mynod);
-    }
-
-    /* compute the read and write times */
-    MPI_Allreduce(&read_tim, &max_read_tim, 1, MPI_DOUBLE, MPI_MAX,
-            MPI_COMM_WORLD);
-    MPI_Allreduce(&read_tim, &min_read_tim, 1, MPI_DOUBLE, MPI_MIN,
-            MPI_COMM_WORLD);
-    MPI_Allreduce(&read_tim, &ave_read_tim, 1, MPI_DOUBLE, MPI_SUM,
-            MPI_COMM_WORLD);
-
-    /* calculate the average from the sum */
-    ave_read_tim = ave_read_tim / nprocs;
-
-    MPI_Allreduce(&write_tim, &max_write_tim, 1, MPI_DOUBLE, MPI_MAX,
-            MPI_COMM_WORLD);
-    MPI_Allreduce(&write_tim, &min_write_tim, 1, MPI_DOUBLE, MPI_MIN,
-            MPI_COMM_WORLD);
-    MPI_Allreduce(&write_tim, &ave_write_tim, 1, MPI_DOUBLE, MPI_SUM,
-            MPI_COMM_WORLD);
-
-    /* calculate the average from the sum */
-    ave_write_tim = ave_write_tim / nprocs;
-
-    /* print out the results on one node */
-    if (mynod == 0) {
-       read_bw = ((int64_t)(opt_block*nprocs*opt_iter))/(max_read_tim*1000000.0);
-       write_bw = ((int64_t)(opt_block*nprocs*opt_iter))/(max_write_tim*1000000.0);
-
-                    printf("nr_procs = %d, nr_iter = %d, blk_sz = %ld\n", nprocs,
-            opt_iter, (long)opt_block);
-
-                    printf("# total_size = %ld\n", (long)(opt_block*nprocs*opt_iter));
-
-                    printf("# Write:  min_time = %f, max_time = %f, mean_time = %f\n",
-                            min_write_tim, max_write_tim, ave_write_tim);
-                    printf("# Read:  min_time = %f, max_time = %f, mean_time = %f\n",
-                            min_read_tim, max_read_tim, ave_read_tim);
-
-       printf("Write bandwidth = %f Mbytes/sec\n", write_bw);
-       printf("Read bandwidth = %f Mbytes/sec\n", read_bw);
-
-            if (opt_correct) {
-                    printf("Correctness test %s.\n", correct ? "passed" : "failed");
-            }
-    }
-
-
-die_jar_jar_die:
-
-#if H5_HAVE_SETENV
-/* no setenv or unsetenv */
-    /* clear the environment variable if it was set earlier */
-    if  (opt_pvfstab_set){
-            unsetenv("PVFSTAB_FILE");
-    }
-#endif
-
-    free(tmp);
-    if (opt_correct) free(tmp2);
-    MPI_Finalize();
-    return(0);
-}
-
-static int
-parse_args(int argc, char **argv)
-{
-    int c;
-
-    while ((c = getopt(argc, argv, "s:b:i:f:p:c")) != EOF) {
-        switch (c) {
-            case 's': /* stripe */
-                opt_stripe = atoi(optarg);
-                break;
-            case 'b': /* block size */
-                opt_block = atoi(optarg);
-                break;
-            case 'i': /* iterations */
-                opt_iter = atoi(optarg);
-                break;
-            case 'f': /* filename */
-                strncpy(opt_file, optarg, 255);
-                break;
-            case 'p': /* pvfstab file */
-                strncpy(opt_pvfstab, optarg, 255);
-                opt_pvfstab_set = 1;
-                break;
-            case 'c': /* correctness */
-                opt_correct = 1;
-                break;
-            case '?': /* unknown */
-            default:
-                break;
-        }
-    }
-    return(0);
-}
-
-/*
- * Local variables:
- *  c-indent-level: 3
- *  c-basic-offset: 3
- *  tab-width: 3
- * End:
- */
-
-#else /* H5_HAVE_PARALLEL */
-/* dummy program since H5_HAVE_PARALLEL is not configured in */
-int
-main(int UNUSED argc, char UNUSED **argv)
-{
-    printf("No parallel performance because parallel is not configured in\n");
-    return(0);
-}
-#endif /* H5_HAVE_PARALLEL */
-
diff --git a/perform/sio_timer.h b/perform/sio_timer.h
index 04432af..46702c3 100644
--- a/perform/sio_timer.h
+++ b/perform/sio_timer.h
@@ -26,9 +26,9 @@
 #   include <time.h>
 #endif
 
-#ifdef H5_HAVE_WINSOCK_H
+#ifdef H5_HAVE_WINSOCK2_H
 #  include <winsock2.h>
-#endif /* H5_HAVE_WINSOCK_H */
+#endif /* H5_HAVE_WINSOCK2_H */
 
 /* The different types of timers we can have */
 typedef enum timer_type_ {
diff --git a/release_docs/CMake.txt b/release_docs/CMake.txt
index 6da3620..1d36e21 100644
--- a/release_docs/CMake.txt
+++ b/release_docs/CMake.txt
@@ -297,7 +297,7 @@ IF (HDF5_TEST_VFD)
     HDF5_TEST_FHEAP_VFD "Execute tests with different VFDs" ON
 IF (WIN32 AND NOT CYGWIN) 
     HDF_LEGACY_NAMING "Use Legacy Names for Libraries and Programs" OFF
-    HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF
+HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF
 
 ---------------- External Library Options ---------------------
 HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building" "NO"
diff --git a/release_docs/HISTORY-1_8.txt b/release_docs/HISTORY-1_8.txt
index a5b632c..0c99ce3 100644
--- a/release_docs/HISTORY-1_8.txt
+++ b/release_docs/HISTORY-1_8.txt
@@ -3,18 +3,744 @@ HDF5 History
 
 This file contains development history of HDF5 1.8 branch
 
-9.      Release Information for hdf5-1.8.8
-8.      Release Information for hdf5-1.8.7
-7.      Release Information for hdf5-1.8.6
-6.      Release Information for hdf5-1.8.5
-5.      Release Information for hdf5-1.8.4
-4.      Release Information for hdf5-1.8.3
-3.      Release Information for hdf5-1.8.2
-2.      Release Information for hdf5-1.8.1
-1.      Release Information for hdf5-1.8.0
+10.      Release Information for hdf5-1.8.9
+09.      Release Information for hdf5-1.8.8
+08.      Release Information for hdf5-1.8.7
+07.      Release Information for hdf5-1.8.6
+06.      Release Information for hdf5-1.8.5
+05.      Release Information for hdf5-1.8.4
+04.      Release Information for hdf5-1.8.3
+03.      Release Information for hdf5-1.8.2
+02.      Release Information for hdf5-1.8.1
+01.      Release Information for hdf5-1.8.0
 
 [Search on the string '%%%%' for per-release section breaks.]
 
+%%%%1.8.9%%%%   
+
+
+HDF5 version 1.8.9 released on 2012-05-09
+================================================================================
+
+INTRODUCTION
+============
+
+This document describes the differences between HDF5-1.8.8 and 
+HDF5 1.8.9. It also contains information on the platforms tested and 
+known problems in HDF5-1.8.9. 
+
+For more details, see the files HISTORY-1_0-1_8_0_rc3.txt 
+and HISTORY-1_8.txt in the release_docs/ directory of the HDF5 source.
+
+Links to the HDF5 1.8.9 source code, documentation, and additional materials
+can be found on the HDF5 web page at:
+
+     http://www.hdfgroup.org/products/hdf5/
+
+The HDF5 1.8.9 release can be obtained from:
+
+     http://www.hdfgroup.org/HDF5/release/obtain5.html
+
+User documentation for 1.8.9 can be accessed directly at this location: 
+
+     http://www.hdfgroup.org/HDF5/doc/
+
+New features in the HDF5-1.8.x release series, including brief general 
+descriptions of some new and modified APIs, are described in the "What's New 
+in 1.8.0?" document:
+
+     http://www.hdfgroup.org/HDF5/doc/ADGuide/WhatsNew180.html
+
+All new and modified APIs are listed in detail in the "HDF5 Software Changes 
+from Release to Release" document, in the section "Release 1.8.9 (current 
+release) versus Release 1.8.8":
+
+     http://www.hdfgroup.org/HDF5/doc/ADGuide/Changes.html
+
+If you have any questions or comments, please send them to the HDF Help Desk:
+
+     help at hdfgroup.org
+
+
+CONTENTS
+========
+
+- New Features
+- Support for New Platforms, Languages, and Compilers
+- Bug Fixes since HDF5-1.8.8
+- Platforms Tested
+- Supported Configuration Features Summary
+- Known Problems
+
+
+New Features
+============
+
+    Configuration
+    -------------
+    - None
+    
+    Library
+    -------
+    - Added new feature to merge committed datatypes when copying objects,
+      using new H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG, modified by new API
+      routines: H5Padd_merge_committed_dtype_path(),
+      H5Pfree_merge_committed_dtype_paths(), H5Pset_mcdt_search_cb() and
+      H5Pget_mcdt_search_cb().  (QAK - 2012/03/30)
+    - Added new feature which allows working with files in memory in the 
+      same ways files are worked with on disk. New API routines include 
+      H5Pset_file_image, H5Pget_file_image, H5Pset_file_image_callbacks, 
+      H5Pget_file_image_callbacks, H5Fget_file_image, and 
+      H5LTopen_file_image. (QAK - 2012/04/17)
+ 
+    Parallel Library
+    ----------------
+    - Corrected memory allocation error in MPI datatype construction code.
+      (QAK - 2012/04/23)
+    - Add two new routines to set/get the atomicity parameter in the
+      MPI library to perform atomic operations. Some file systems (for
+      example PVFS2) do not support atomic updates, so those routines
+      would not be supported. (MSC - 2012/03/27 - HDFFV-7961)
+ 
+    Tools
+    -----
+    - h5repack: Added ability to set the metadata block size of the output
+      file, with the '-M'/'--metadata_block_size' command line parameter.
+      (QAK - 2012/03/30)
+    - h5stat: Added ability to display a summary of the file space usage for a
+      file, with the '-S'/'--summary' command line parameter.  (QAK - 2012/03/28)
+    - h5dump: Added capability for "-a" option to show attributes containing "/" 
+      by using an escape character. For example, for a dataset "/dset" 
+      containing attribute "speed(m/h)", use "h5dump -a "/dset/speed(\/h)" 
+      to show the content of the attribute. (PC - 2012/03/12 - HDFFV-7523)
+    - h5dump: Added ability to apply command options across multiple files using a
+      wildcard in the filename. Unix example; "h5dump -H -d Dataset1 tarr*.h5".
+      Cross platform example; "h5dump -H -d Dataset1 tarray1.h5 tarray2.h5 tarray3.h5".
+      (ADB - 2012/03/12 - HDFFV-7876).
+    - h5dump: Added new option --no-compact-subset. This option will not
+      interpret the '[' character as starting the compact form of 
+      subsetting. This is useful when the "h5dump error: unable to 
+      open dataset "datset_name"" message is output because a dataset
+      name contains a '[' character. (ADB - 2012/03/05 - HDFFV-7689).
+    - h5repack: Improved performance for big chunked datasets (size > 128MB)
+      when used with the layout (-l) or compression (-f) options. 
+      Before this change, repacking datasets with chunks with a large first 
+      dimension would take extremely long. For example, repacking a dataset 
+      with chunk dimensions of 1024x5x1 might take many hours to process 
+      while changing a dataset with chunk dimensions set to 1x5x1024 
+      might take under an hour. After this change, processing the dataset 
+      with chunk dimensions of 1024x5x1 takes about 15 minutes, and processing 
+      a dataset with chunk dimensions of 1x5x1024 takes about 14 minutes.
+      (JKM - 2012/03/01 - HDFFV-7862) 
+
+    High-Level APIs
+    ---------------
+    - New API: H5LTpath_valid (Fortran: h5ltpath_valid_f) checks
+      if a path is correct, determines if a link resolves to a valid
+      object, and checks that the link does not dangle. (MSB - 2012/03/15)
+
+    Fortran API
+    -----------
+
+    - Added for the C API the Fortran wrapper:
+       h5ocopy_f (MSB - 2012/03/22)
+
+    C++ API
+    -------
+    - None
+
+
+Support for New Platforms, Languages, and Compilers
+===================================================
+    - None
+
+Bug Fixes since HDF5-1.8.8
+==========================
+
+    Configuration
+    -------------
+    - Fixed Makefile issue in which "-Wl," was not properly specified
+      prior to -rpath when building parallel Fortran libraries with
+      an Intel compiler. (MAM - 2012/03/26) 
+    - Makefiles generated by other packages using h5cc as the compiler
+      no longer error when 'make' is invoked more than once in order
+      to 'rebuild' after changes to source. (MAM - 2012/03/26)
+    - Added code to display the version information of XL Fortran and C++
+      in the summary of configure. (AKC - 2012/02/28 - HDFFV-7793)
+    - Updated all CMakeLists.txt files to indicate the minimum CMake version is
+      the current standard of 2.8.6 (ADB - 2011/12/05 - HDFFV-7854)
+
+    Library
+    -------
+    - Windows and STDIO correctness changes have been propagated from the SEC2
+      and old Windows drivers to the STDIO VFD.  (DER - 2012/03/30 - HDFFV-7917)
+    - Fixed an error that would occur when copying an object with attribute
+      creation order tracked and indexed. (NAF - 2012/03/28 - HDFFV-7762)
+    - Fixed a bug in H5Ocopy(): When copying an opened object, call the
+      object's flush class action to ensure that cached data is flushed so
+      that H5Ocopy will get the correct data.  (VC - 2012/03/27 - HDFFV-7853)
+    - The istore test will now skip the sparse 50x50x50 test when the VFD does
+      not support sparse files on that platform.  The most important platforms
+      on which this will be skipped are Windows (NTFS sparse files are not
+      supported) and Mac OS-X (HFS sparse files are not supported).  This
+      fixes CTest timeout issues on Windows.  (DER - 2012/03/27 - HDFFV-7769)
+    - Windows and POSIX correctness changes have been propagated from the SEC2
+      VFD to the Core VFD.  This mainly affects file operations on the
+      driver's backing store and fixes a problem on Windows where large files
+      could not be read. (DER - 2012/03/27 - HDFFV-7916 - HDFFV-7603)
+    - When an application tries to write or read many small data chunks and
+      runs out of memory, the library had a segmentation fault.  The fix is to
+      return the error stack with proper information.
+      (SLU - 2012/03/23 - HDFFV-7785)
+    - H5Pset_data_transform had a segmentation fault in some cases like x*-100.  
+      It works correctly now and handles other cases like 100-x or 2/x.
+      (SLU - 2012/03/15 - HDFFV-7922)
+    - Fixed rare corruption bugs that could occur when using the new object
+      header format. (NAF - 2012/03/15 - HDFFV-7879)
+    - Fixed an error that occurred when creating a contiguous dataset with a 
+      zero-sized dataspace and space allocation time set to 'early'. 
+      (QAK - 2012/03/12)
+    - Changed Windows thread creation to use _beginthread() instead of
+      CreateThread().  Threads created by the latter can be killed in
+      low-memory situations. (DER - 2012/02/10 - HDFFV-7780)
+    - Creating a dataset in a read-only file caused a segmentation fault when 
+      the file is closed.  It's fixed. The attempt to create a dataset will 
+      fail with an error indicating the file is read-only.
+      (SLU - 2012/01/25 - HDFFV-7756) 
+    - Fixed a segmentation fault that could occur when shrinking a dataset 
+      with chunks larger than 1 MB. (NAF - 2011/11/30 - HDFFV-7833)
+    - Fixed a bug that could cause H5Oget_info to return the wrong address
+      after copying a committed (named) datatype. (NAF - 2011/11/14)
+    - The library allowed the conversion of strings between ASCII and UTF8
+      We have corrected it to report an error under this situation.
+      (SLU - 2011/11/8 - HDFFV-7582)
+    - Fixed a segmentation fault when the library tried to shrink the size 
+      of a compound datatype through H5Tset_size immediately after the 
+      datatype was created. (SLU - 2011/11/4 - HDFFV-7618)
+
+    Parallel Library
+    ----------------
+    - None
+
+    Tools
+    -----
+    - h5unjam: Fixed a segmentation fault that occurred when h5unjam was used 
+      with the -V (show version) option. (JKM - 2012/04/19 - HDFFV-8001)
+    - h5repack: Fixed a failure that occurred when repacking the chunk size 
+      of a specified chunked dataset with unlimited max dims. 
+      (JKM - 2012/04/11 - HDFFV-7993) 
+    - h5diff: Fixed a failure when comparing groups. Before the fix, if an 
+      object in a group was compared with an object in another group where 
+      both had the same name but the object type was different, then h5diff
+      would fail. After the fix, h5diff detects such cases as non-comparable
+      and displays appropriate error messages. 
+      (JKM - 2012/03/28 - HDFFV-7644)
+    - h5diff: If unique objects exist only in one file and if h5diff is set to 
+      exclude the unique objects with the --exclude-path option, then h5diff 
+      might miss excluding some objects. This was fixed to correctly exclude 
+      objects. (JKM - 2012/03/20 - HDFFV-7837)
+    - h5diff: When two symbolic dangling links are compared with the 
+      --follow-symlinks option, the result should be the same. This worked when 
+      comparing two files, but didn't work when comparing two objects.
+      h5diff now works when comparing two objects.
+      (JKM - 2012/03/09 - HDFFV-7835)
+    - h5dump: Added the tools library error stack to properly catch error
+      information generated within the library. (ADB - 2012/03/12 - HDFFV-7958)
+    - h5dump: Changed the process where an open link used to fail. Now dangling 
+      links no longer throw error messages. (ADB - 2012/03/12 - HDFFV-7839)
+    - h5dump: Refactored code to remove duplicated functions. Split XML 
+      functions from DDL functions. Corrected indentation and formatting
+      errors. Also fixed subsetting counting overflow (HDFFV-5874). Verified
+      all tools call tools_init() in main. The USER_BLOCK data now correctly
+      displays within the SUPER_BLOCK info. NOTE: WHITESPACE IN THE OUTPUT
+      HAS CHANGED. (ADB - 2012/02/17 - HDFFV-7560)
+    - h5diff: Fixed to prevent from displaying error stack message when 
+      comparing two dangling symbolic links with the follow-symlinks option.
+      (JKM - 2012/01/13 - HDFFV-7836)
+    - h5repack: Fixed a memory leak that occurred with the handling of 
+      variable length strings in attributes.
+      (JKM - 2012/01/10 - HDFFV-7840)
+    - h5ls: Fixed a segmentation fault that occurred when accessing region 
+      reference data in an attribute. (JKM - 2012/01/06 - HDFFV-7838)
+
+    F90 API
+    -------
+    - None
+
+    C++ API
+    ------
+    - None
+
+    High-Level APIs:
+    ------
+    - None
+
+    Fortran High-Level APIs:
+    ------
+    - h5ltget_attribute_string_f: The h5ltget_attribute_string_f used to return 
+      the C NULL character in the returned character buffer. The returned 
+      charactor buffer now does not return the C NULL character; the buffer 
+      is blank-padded if needed. (MSB - 2012/03/23)
+
+
+Platforms Tested
+================
+The following platforms and compilers have been tested for this release.
+
+    AIX 5.3                       xlc 10.1.0.5
+    (NASA G-ADA)                  xlC 10.1.0.5
+                                  xlf90 12.1.0.6
+
+    FreeBSD 8.2-STABLE i386       gcc 4.2.1 [FreeBSD] 20070719
+    (loyalty)                     g++ 4.2.1 [FreeBSD] 20070719
+                                  gcc 4.6.1 20110422
+                                  g++ 4.6.1 20110422
+                                  gfortran 4.6.1 20110422
+
+    FreeBSD 8.2-STABLE amd64      gcc 4.2.1 [FreeBSD] 20070719
+    (freedom)                     g++ 4.2.1 [FreeBSD] 20070719
+                                  gcc 4.6.1 20110422
+                                  g++ 4.6.1 20110422
+                                  gfortran 4.6.1 20110422
+
+    Linux 2.6.18-194.3.1.el5PAE   GNU C (gcc), Fortran (gfortran), C++ (g++)
+    #1 SMP i686 i686 i386         compilers for 32-bit applications;
+    (jam)                             Version 4.1.2 20080704 (Red Hat 4.1.2-52)
+                                      Version 4.5.2
+                                  PGI C, Fortran, C++ Compilers for 32-bit
+                                  applications;
+                                      Version 11.8-0
+                                      Version 11.9-0
+                                  Intel(R) C, C++, Fortran Compiler for 32-bit
+                                  applications;
+                                      Version 12.0
+                                      Version 12.1
+                                  MPICH mpich2-1.3.1 compiled with
+                                      gcc 4.1.2 and gfortran 4.1.2
+
+    Linux 2.6.18-308.1.1.el5      GNU C (gcc), Fortran (gfortran), C++ (g++)
+    #1 SMP x86_64 GNU/Linux       compilers for 32-bit applications;
+    (koala)                           Version 4.1.2 20080704 (Red Hat 4.1.2-52)
+                                      Version 4.5.2
+                                  PGI C, Fortran, C++ for 64-bit target on 
+                                  x86-64;
+                                      Version 11.9-0 (64-bit)
+                                      Version 11.8-0 (32-bit)
+                                  Intel(R) C, C++, Fortran Compilers for 
+                                  applications running on Intel(R) 64; 
+                                      Version 12.0
+                                      Version 12.1
+                                  MPICH mpich2-1.3.1 compiled with
+                                      gcc 4.1.2 and gfortran 4.1.2
+
+    Linux 2.6.32-220.7.1.el6.ppc64 gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) 
+    #1 SMP ppc64 GNU/Linux        g++ (GCC) 4.4.6 20110731 
+    (ostrich)                     GNU Fortran (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
+
+    Linux 2.6.18-108chaos         Intel C, C++, Fortran Compilers Version 11.1
+    #1 SMP x86_64 GNU/Linux
+    (LLNL Aztec)
+
+    IBM Blue Gene/P               XL C for Blue Gene/P, bgxlc V9.0
+    (LLNL uDawn)                  XL C++ for Blue Gene/P, bgxlC V9.0
+                                  XL Fortran for Blue Gene/P, bgxlf0 V11.1
+
+    SunOS 5.10 32- and 64-bit     Sun C 5.9 Sun OS_sparc Patch 124867-16
+    (linew)                       Sun Fortran 95 8.3 Sun OS_sparc Patch 127000-13
+                                  Sun C++ 5.9 Sun OS_sparc Patch 124863-26
+                                  Sun C 5.11 SunOS_sparc
+                                  Sun Fortran 95 8.5 SunOS_sparc
+                                  Sun C++ 5.11 SunOS_sparc
+
+    SGI Altix UV                  Intel(R) C, Fortran Compilers
+    SGI ProPack 7 Linux               Version 11.1 20100806
+    2.6.32.24-0.2.1.2230.2.PTF-   SGI MPT 2.02
+    default #1 SMP                
+    (NCSA ember)
+
+    Dell NVIDIA Cluster           Intel(R) C, Fortran Compilers
+    Red Hat Enterprise Linux 6        Version 12.0.4 20110427
+    2.6.32-131.4.1.el6.x86_64     mvapich2 1.7rc1-intel-12.0.4
+    (NCSA forge)
+
+    Windows XP                    Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
+                                  Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
+
+    Windows XP x64                Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
+                                  Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
+
+    Windows 7                     Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
+                                  Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
+
+    Windows 7 x64                 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
+                                  Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
+
+    Mac OS X Snow Leopard 10.6.8  i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
+    Darwin Kernel Version 10.8.0  i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
+    Intel 64-bit                      (Apple Inc. build 5666) (dot 3)
+    (fred)                        GNU Fortan (GCC) 4.6.1 (gfortran)
+                                  Intel C (icc), Fortran (ifort), C++ (icpc)
+                                      12.1.0.038 Build 20110811
+
+    Mac OS X Snow Leopard 10.6.8  i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
+    Darwin Kernel Version 10.8.0  i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
+    Intel 32-bit                      (Apple Inc. build 5666) (dot 3)
+    (tejeda)                      GNU Fortran (GCC) 4.6.1 (gfortran)
+                                  Intel C (icc), Fortran (ifort), C++ (icpc)
+                                      12.1.0.038 Build 20110811
+
+    Mac OS X Lion 10.7.3          GCC 4.2.1 gcc
+    32- and 64-bit                GNU Fortran (GCC) 4.6.1 gfortran
+    (duck)                        GCC 4.2.1. g++
+
+    Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
+                                  gcc (Debian 4.4.5-8) 4.4.5
+                                  GNU Fortran (Debian 4.4.5-8) 4.4.5
+
+    Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
+                                  gcc (Debian 4.4.5-8) 4.4.5
+                                  GNU Fortran (Debian 4.4.5-8) 4.4.5
+
+    Fedora16 3.2.9-2.fc16.i6866 #1 SMP i686 i686 i386 GNU/Linux
+                                  gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
+                                  GNU Fortran (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
+
+    Fedora16 3.2.9-2.fc16.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
+                                  GNU Fortran (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
+
+    SUSE 12.1 3.1.9-1.4-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
+                                  gcc (SUSE Linux) 4.6.2
+                                  GNU Fortran (SUSE Linux) 4.6.2
+
+    SUSE 12.1 3.1.9-1.4-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (SUSE Linux) 4.6.2
+                                  GNU Fortran (SUSE Linux) 4.6.2 
+
+    Ubuntu 11.10 3.0.0-16-generic #29-Ubuntu SMP i686 GNU/Linux
+                                  gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
+                                  GNU Fortran (Ubuntu/Linaro 4.6.4-9ubuntu3) 4.6.1
+
+    Ubuntu 11.10 3.0.0-16-generic #29-Ubuntu SMP x86_64 GNU/Linux
+                                  gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
+                                  GNU Fortran (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
+
+    Cray Linux Environment (CLE)  PrgEnv-pgi 2.2.74
+    hopper.nersc.gov              pgcc 11.9-0 64-bit target on x86-64 Linux -tp k8e
+                                  pgf90 11.9-0 64-bit target on x86-64 Linux -tp k8e
+                                  pgCC 11.9-0 64-bit target on x86-64 Linux -tp k8e
+    
+
+Tested Configuration Features Summary
+=====================================
+
+    In the tables below
+          y   = tested 
+          n   = not tested in this release
+          C   = Cluster
+          W   = Workstation
+          x   = not working in this release
+          dna = does not apply
+          ( ) = footnote appears below second table
+          <blank> = testing incomplete on this feature or platform 
+
+Platform                                 C        F90    F90      C++   zlib  SZIP
+                                         parallel        parallel
+Solaris2.10 32-bit                         n        y      n        y     y     y
+Solaris2.10 64-bit                         n        y      n        y     y     y
+Windows XP                                 n        y(4)   n        y     y     y
+Windows XP x64                             n        y(4)   n        y     y     y
+Windows Vista                              n        y(4)   n        y     y     y
+Windows Vista x64                          n        y(4)   n        y     y     y
+Mac OS X Snow Leopard 10.6.8 32-bit        n        y      n        y     y     n 
+Mac OS X Snow Leopard 10.6.8 64-bit        n        y      n        y     y     y
+Mac OS X Lion 10.7.3 32-bit                n        y      n        y     y     n
+Mac OS X Lion 10.7.3 64-bit                n        y      n        y     y     y
+AIX 5.3 32- and 64-bit                     y        y      y        y     y     y
+FreeBSD 8.2-STABLE 32&64 bit               n        x      n        x     y     y
+CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W  y        y(2)   y        y     y     y
+CentOS 5.5 Linux 2.6.18-194 i686 Intel  W  n        y      n        y     y     y
+CentOS 5.5 Linux 2.6.18-194 i686 PGI    W  n        y      n        y     y     y
+CentOS 5.5 Linux 2.6.18 x86_64 GNU (1)  W  y        y(3)   y        y     y     y
+CentOS 5.5 Linux 2.6.18 x86_64 Intel    W  n        y      n        y     y     y
+CentOS 5.5 Linux 2.6.18 x86_64 PGI      W  n        y      n        y     y     y
+Linux 2.6.32-220.7.1.el6.ppc64             n        y      n        y     y     y
+SGI ProPack 7 Linux 2.6.32.24              y        y      y        y     y     y
+Red Hat Enterprise Linux 6                 y        y      y        y     y     y
+CLE hopper.nersc.gov                       y        y(3)   y        y     y     n
+
+
+Platform                                 Shared  Shared    Shared    Thread-  
+                                         C libs  F90 libs  C++ libs  safe     
+Solaris2.10 32-bit                         y       y         y         y        
+Solaris2.10 64-bit                         n       n         n         n        
+Windows XP                                 y       y(4)      y         n        
+Windows XP x64                             y       y(4)      y         n        
+Windows Vista                              y       y(4)      y         y
+Windows Vista x64                          y       y(4)      y         y
+Mac OS X Snow Leopard 10.6.8 32-bit        y       n         y         n        
+Mac OS X Snow Leopard 10.6.8 64-bit        y       n         y         n        
+Mac OS X Lion 10.7.3 32-bit                y       n         y         y        
+Mac OS X Lion 10.7.3 64-bit                y       n         y         y        
+AIX 5.3 32- and 64-bit                     n       n         n         y        
+FreeBSD 8.2-STABLE 32&64 bit               y       x         x         y        
+CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W  y       y(2)      y         y        
+CentOS 5.5 Linux 2.6.18-194 i686 Intel  W  y       y         y         n        
+CentOS 5.5 Linux 2.6.18-194 i686 PGI    W  y       y         y         n        
+CentOS 5.5 Linux 2.6.18 x86_64 GNU (1)  W  y       y         y         y        
+CentOS 5.5 Linux 2.6.18 x86_64 Intel    W  y       y         y         n        
+CentOS 5.5 Linux 2.6.18 x86_64 PGI      W  y       y         y         n        
+Linux 2.6.32-220.7.1.el6.ppc64             y       y         y         n 
+SGI ProPack 7 Linux 2.6.32.24              y       y         y         n 
+Red Hat Enterprise Linux 6                 y       y         y         n
+CLE hopper.nersc.gov                       n       n         n         n
+
+           (1) Fortran compiled with gfortran.
+           (2) With PGI and Absoft compilers.
+           (3) With PGI compiler for Fortran.
+           (4) Using Visual Studio 2008 w/ Intel Fortran 10.1 (Cygwin shared libraries are not supported)
+           (5) C and C++ shared libraries will not be built when Fortran is enabled.
+    Compiler versions for each platform are listed in the preceding
+    "Platforms Tested" table.
+
+
+Known Problems
+==============
+* The h5repacktst test fails on AIX 32-bit because the test uses more
+  memory than the default amount. The failure message typically looks like:
+
+    "time: 0551-010 The process was stopped abnormally. Try again."
+
+  This is an issue with the test only and does not represent a problem with
+  the library. To allow the test to pass, request more memory when testing
+  via appropriate command such as:
+
+    $ env LDR_CNRTL=MAXDATA=0x20000000 at DSA make check
+
+  (AKC - 2012/05/09 - HDFFV-8016)
+
+* The file_image test will fail in the "initial file image and callbacks in
+  the core VFD" sub-test if the source directory is read-only as the test
+  fails to create its test files in the build directory. This will be
+  resolved in a future release.
+  (AKC - 2012/05/05 - HDFFV-8009)
+  
+* The dt_arith test reports several errors involving "long double" on
+  Mac OS X 10.7 Lion when any level of optimization is enabled. The test does
+  not fail in debug mode. This will be addressed in a future release.
+  (SLU - 2012/05/08)
+
+* The following h5dump test case fails in BG/P machines (and potentially other
+  machines that use a command script to launch executables):
+
+   h5dump --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0"
+     tno-subset.h5
+  
+  This is due to the embedded spaces in the dataset name being interpreted
+  by the command script launcher as meta-characters, thus passing three
+  arguments to h5dump's -d flag. The command passes if run by hand, just
+  not via the test script.
+  (AKC - 2012/05/03)
+
+* The ph5diff (parallel h5diff) tool can intermittently hang in parallel mode
+  when comparing two HDF5 files that contain objects with the same names but
+  with different object types.
+  (JKM - 2012/04/27)
+
+* On hopper, the build failed when RUNSERIAL and RUNPARALLEL are set
+  to aprun -np X, because the H5lib_settings.c file was not generated
+  properly. Not setting those environment variables works, because
+  configure was able to automatically detect that it's a Cray system
+  and used the proper launch commands when necessary. 
+  (MSC - 2012/04/18)
+
+* The data conversion test dt_arith.c fails in "long double" to integer
+  conversion on Ubuntu 11.10 (3.0.0.13 kernal) with GCC 4.6.1 if the library
+  is built with optimization -O3 or -O2.  The older GCC (4.5) or newer kernal
+  (3.2.2 on Fedora) doesn't have the problem.  Users should lower the 
+  optimization level (-O1 or -O0) by defining CFLAGS in the command line of 
+  "configure" like:
+
+      CFLAGS=-O1 ./configure
+
+  This will overwrite the library's default optimization level.
+  (SLU - 2012/02/07 - HDFFV-7829)
+
+* The STDIO VFD does not work on some architectures, possibly due to 32/64
+  bit or large file issues.  The basic STDIO VFD test is known to fail on
+  64-bit SunOS 5.10 on SPARC when built with -m64 and 32-bit OS X/Darwin
+  10.7.0.  The STDIO VFD test has been disabled while we investigate and
+  a fix should appear in a future release.
+  (DER - 2011/10/14)
+
+* h5diff can report inconsistent results when comparing datasets of enum type
+  that contain invalid values.  This is due to how enum types are handled in
+  the library and will be addressed in a future release.
+  (DER - 2011/10/14 - HDFFV-7527)
+
+* The links test can fail under the stdio VFD due to some issues with external
+  links.  This will be investigated and fixed in a future release.
+  (DER - 2011/10/14 - HDFFV-7768)
+
+* After the shared library support was fixed for some bugs, it was discovered
+  that "make prefix=XXX install" no longer works for shared libraries. It
+  still works correctly for static libraries. Therefore, if you want to
+  install the HDF5 shared libraries in a location such as /usr/local/hdf5,
+  you need to specify the location via the --prefix option during configure 
+  time. E.g, ./configure --prefix=/usr/local/hdf5 ...
+  (AKC - 2011/05/07 - HDFFV-7583)
+
+* The parallel test, t_shapesame, in testpar/, may run for a long time and may
+  be terminated by the alarm signal.  If that happens, one can increase the
+  alarm seconds (default is 1200 seconds = 20 minutes) by setting the
+  environment variable, $HDF5_ALARM_SECONDS, to a larger value such as 3600
+  (60 minutes).  Note that the t_shapesame test may fail in some systems 
+  (see the "While working on the 1.8.6 release..." problem below).  If 
+  it does, it will waste more time if $HDF5_ALARM_SECONDS is set
+  to a larger value.
+  (AKC - 2011/05/07)
+
+* The C++ and FORTRAN bindings are not currently working on FreeBSD.
+  (QAK - 2011/04/26)
+
+* Shared Fortran libraries are not quite working on AIX. While they are
+  generated when --enable-shared is specified, the fortran and hl/fortran
+  tests fail. We are looking into the issue. HL and C++ shared libraries
+  should now be working as intended, however.
+  (MAM - 2011/04/20)
+
+* The --with-mpe configure option does not work with Mpich2.
+  (AKC - 2011/03/10)
+
+* While working on the 1.8.6 release of HDF5, a bug was discovered that can
+  occur when reading from a dataset in parallel shortly after it has been
+  written to collectively. The issue was exposed by a new test in the parallel
+  HDF5 test suite, but had existed before that. We believe the problem lies with
+  certain MPI implementations and/or file systems.
+
+  We have provided a pure MPI test program, as well as a standalone HDF5
+  program, that can be used to determine if this is an issue on your system.
+  They should be run across multiple nodes with a varying number of processes.
+  These programs can be found at:
+  http://www.hdfgroup.org/ftp/HDF5/examples/known_problems/
+  (NAF - 2011/01/19)
+
+* The library's test dt_arith.c showed a compiler's rounding problem on
+  Cygwin when converting from unsigned long long to long double.  The 
+  library's own conversion works fine.  We defined a macro for Cygwin to
+  skip this test until we can solve the problem.
+  (SLU - 2010/05/05 - HDFFV-1264)
+
+* All the VFL drivers aren't backward compatible.  In H5FDpublic.h, the
+  structure H5FD_class_t changed in 1.8.  There is new parameter added to
+  get_eoa and set_eoa callback functions.  A new callback function
+  get_type_map was added in.  The public function H5FDrealloc was taken
+  out in 1.8.  The problem only happens when users define their own driver
+  for 1.6 and try to plug in 1.8 library.  Because there's only one user 
+  complaining about it, we (Elena, Quincey, and I) decided to leave it as 
+  it is (see bug report #1279).  Quincey will make a plan for 1.10.
+  (SLU - 2010/02/02)
+
+* MinGW has a missing libstdc++.dll.a library file and will not successfully link
+  C++ applications/tests. Do not use the enable-cxx configure option. Read all of
+  the INSTALL_MINGW.txt file for all restrictions.
+  (ADB - 2009/11/11)
+
+* The --enable-static-exec configure flag will only statically link libraries
+  if the static version of that library is present. If only the shared version
+  of a library exists (i.e., most system libraries on Solaris, AIX, and Mac,
+  for example, only have shared versions), the flag should still result in a 
+  successful compilation, but note that the installed executables will not be 
+  fully static. Thus, the only guarantee on these systems is that the 
+  executable is statically linked with just the HDF5 library.
+  (MAM - 2009/11/04)
+  
+* The PathScale MPI implementation, accessing a Panasas file system, would
+  cause H5Fcreate() with H5F_ACC_EXCL to fail even when the file does not
+  exist. This is due to the MPI_File_open() call failing if the mode has
+  the MPI_MODE_EXCL bit set.
+  (AKC - 2009/08/11 - HDFFV-988)
+ 
+* Parallel tests failed with 16 processes with data inconsistency at testphdf5
+  / dataset_readAll. Parallel tests also failed with 32 and 64 processes with
+  collective abort of all ranks at t_posix_compliant / allwrite_allread_blocks
+  with MPI IO.
+  (CMC - 2009/04/28)
+
+* For Red Storm, a Cray XT3 system, the tools/h5ls/testh5ls.sh and
+  tools/h5copy/testh5copy.sh will fail some of its sub-tests. These sub-tests
+  are expected to fail and should exit with a non-zero code but the yod
+  command does not propagate the exit code of the executables. Yod always
+  returns 0 if it can launch the executable.  The test suite shell expects
+  a non-zero for this particular test, therefore it concludes the test has
+  failed when it receives 0 from yod.  Skip all the "failing" test for now
+  by changing them as following.
+
+  ======== Original tools/h5ls/testh5ls.sh =========
+  TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
+  ======== Change to ===============================
+  echo SKIP TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
+  ==================================================
+
+  ======== Original tools/h5copy/testh5copy.sh =========
+  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_rename
+  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d /grp_rename/grp_dsets
+  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
+  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
+  H5LSTEST $FILEOUT
+  ======== Change to ===============================
+  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_rename
+  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d /grp_rename/grp_dsets
+  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
+  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
+  echo SKIP H5LSTEST $FILEOUT
+  ==================================================
+  (AKC - 2008/11/10)
+  
+* For Red Storm, a Cray XT3 system, the yod command sometimes gives the
+  message,  "yod allocation delayed for node recovery".  This interferes with
+  test suites that do not expect to see this message.  See the section of "Red
+  Storm" in file INSTALL_parallel for a way to deal with this problem.
+  (AKC - 2008/05/28)
+
+* On an Intel 64 Linux cluster (RH 4, Linux 2.6.9) with Intel 10.0 compilers, 
+  use -mp -O1 compilation flags to build the libraries. A higher level of 
+  optimization causes failures in several HDF5 library tests. 
+
+* On mpich 1.2.5 and 1.2.6, if more than two processes contribute no IO and 
+  the application asks to do collective IO, we have found that when using 4 
+  processors, a simple collective write will sometimes be hung. This can be 
+  verified with t_mpi test under testpar.
+
+* A dataset created or rewritten with a v1.6.3 library or after cannot be read 
+  with the v1.6.2 library or before when the Fletcher32 EDC filter is enabled.
+  There was a bug in the calculation of the Fletcher32 checksum in the 
+  library before v1.6.3; the checksum value was not consistent between big-
+  endian and little-endian systems.  This bug was fixed in Release 1.6.3.  
+  However, after fixing the bug, the checksum value was no longer the same as 
+  before on little-endian system.  Library releases after 1.6.4 can still read 
+  datasets created or rewritten with an HDF5 library of v1.6.2 or before.  
+  (SLU - 2005/06/30)
+
+* On IBM AIX systems, parallel HDF5 mode will fail some tests with error
+  messages like "INFO: 0031-XXX ...".  This is from the command `poe'.
+  Set the environment variable MP_INFOLEVEL to 0 to minimize the messages
+  and run the tests again.
+
+  The tests may fail with messages like "The socket name is already in use",  
+  but HDF5 does not use sockets.  This failure is due to problems with the 
+  poe command trying to set up the debug socket.  To resolve this problem, 
+  check to see whether there are many old /tmp/s.pedb.* files staying around.  
+  These are sockets used by the poe command and left behind due to failed 
+  commands.  First, ask your system administrator to clean them out.  
+  Lastly, request IBM to provide a means to run poe without the debug socket.
+  (AKC - 2004/12/08)
+
+
 %%%%1.8.8%%%%   
 
 
diff --git a/release_docs/INSTALL_Cygwin.txt b/release_docs/INSTALL_Cygwin.txt
index 5406820..d78cd85 100644
--- a/release_docs/INSTALL_Cygwin.txt
+++ b/release_docs/INSTALL_Cygwin.txt
@@ -5,7 +5,7 @@
 Preconditions:
 --------------
 
-1. Installed Cygwin 1.7.5 or higher
+1. Installed Cygwin 1.7.15 or higher
 
    To install the Cygwin net release, go to http://www.cygwin.com and 
    click on "Install or update now!" icon. This will download a GUI 
@@ -19,13 +19,13 @@ Preconditions:
    Cygwin packages.
 
    To build HDF5 on Cygwin, Devel package (including gcc,gcc-g++,
-   gcc-g77, and gcc-java compiles, and gdb tool) should be installed.
+   gcc-gfortran, and gcc-java compiles, and gdb tool) should be installed.
 
 2. Compilers Installed
 
    2.1 C/C++ Compilers HDF5-1.8 Supported
 
-       gcc (4.3.4), which includes:
+       gcc (4.5.3), which includes:
             gcc4-core    : C compiler
             gcc4-g++     : C++ compiler
             gcc4-fortran : fortran compiler
@@ -51,7 +51,7 @@ Preconditions:
 
    3.1 Zlib
 
-       zlib-1.2.2 or later is supported and tested on Cygwin.
+       zlib-1.2.5 or later is supported and tested on Cygwin.
 
    3.2 Szip
        The HDF5 library has a predefined compression filter that uses
@@ -61,8 +61,8 @@ Preconditions:
        http://hdfgroup.org/HDF5/doc_resource/SZIP/index.html.
       
        The latest supported public release of SZIP is available from
-       ftp://ftp.hdfgroup.org/lib-external/szip/2.0. Binary distribution can be 
-       found under ftp://ftp.hdfgroup.org/lib-external/szip/2.0/bin/cygwin
+       ftp://ftp.hdfgroup.org/lib-external/szip/2.1. Binary distribution can be 
+       found under ftp://ftp.hdfgroup.org/lib-external/szip/2.1/bin/cygwin
 
 
 Install HDF5 on Cygwin
@@ -76,19 +76,19 @@ Install HDF5 on Cygwin
 
    The HDF5 source code is distributed in a variety of formats which
    can be unpacked with the following commands, each of which creates 
-   an `hdf5-1.8.5' directory.
+   an `hdf5-1.8.x' directory.
 
    2.1 Non-compressed tar archive (*.tar)
 
-            $ tar xf hdf5-1.8.5.tar
+            $ tar xf hdf5-1.8.x.tar
 
    2.2 Gzip'd tar archive (*.tar.gz)
 
-            $ gunzip < hdf5-1.8.5.tar.gz | tar xf -
+            $ gunzip < hdf5-1.8.x.tar.gz | tar xf -
 
    2.3 Bzip'd tar archive (*.tar.bz2)
 
-            $ bunzip2 < hdf5-1.8.5.tar.bz2 | tar xf - 
+            $ bunzip2 < hdf5-1.8.x.tar.bz2 | tar xf - 
 
 2. Setup Environment
 
@@ -233,7 +233,8 @@ Install HDF5 on Cygwin
 
 8. Known Problems 
    
-   Shared libraries can not be built on Cygwin In release 1.8.
+   dt_arith tests may fail due to the use of fork. This is a known issue
+   with cygwin on windows.
 
 -----------------------------------------------------------------------
 
diff --git a/release_docs/INSTALL_MinGW.txt b/release_docs/INSTALL_MinGW.txt
index 245e3ff..b63be97 100644
--- a/release_docs/INSTALL_MinGW.txt
+++ b/release_docs/INSTALL_MinGW.txt
@@ -4,7 +4,7 @@
 
 NOTE:
 We are no longer actively supporting MinGW as of 1.8.5.
------- 1.8.9 notes ------
+------ 1.8.10 notes ------
 Autotools configure failed to correctly generate the *config.h files.
 CMake 2.8.6 can configure and build the library, however fortran programs did 
   not execute correctly. Some tests may fail. Used the "MSYS Makefiles"
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index d96161e..694812f 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,26 +1,25 @@
-HDF5 version 1.8.9 released on 2012-05-09
+HDF5 version 1.8.10 released on 2012-10-26
 ================================================================================
 
 INTRODUCTION
 ============
 
-This document describes the differences between HDF5-1.8.8 and 
-HDF5 1.8.9. It also contains information on the platforms tested and 
-known problems in HDF5-1.8.9. 
-
+This document describes the differences between HDF5-1.8.9 and 
+HDF5 1.8.10, and contains information on the platforms tested and 
+known problems in HDF5-1.8.10. 
 For more details, see the files HISTORY-1_0-1_8_0_rc3.txt 
 and HISTORY-1_8.txt in the release_docs/ directory of the HDF5 source.
 
-Links to the HDF5 1.8.9 source code, documentation, and additional materials
+Links to the HDF5 1.8.10 source code, documentation, and additional materials
 can be found on the HDF5 web page at:
 
      http://www.hdfgroup.org/products/hdf5/
 
-The HDF5 1.8.9 release can be obtained from:
+The HDF5 1.8.10 release can be obtained from:
 
      http://www.hdfgroup.org/HDF5/release/obtain5.html
 
-User documentation for 1.8.9 can be accessed directly at this location: 
+User documentation for 1.8.10 can be accessed directly at this location: 
 
      http://www.hdfgroup.org/HDF5/doc/
 
@@ -31,8 +30,8 @@ in 1.8.0?" document:
      http://www.hdfgroup.org/HDF5/doc/ADGuide/WhatsNew180.html
 
 All new and modified APIs are listed in detail in the "HDF5 Software Changes 
-from Release to Release" document, in the section "Release 1.8.9 (current 
-release) versus Release 1.8.8":
+from Release to Release" document, in the section "Release 1.8.10 (current 
+release) versus Release 1.8.9":
 
      http://www.hdfgroup.org/HDF5/doc/ADGuide/Changes.html
 
@@ -46,9 +45,10 @@ CONTENTS
 
 - New Features
 - Support for New Platforms, Languages, and Compilers
-- Bug Fixes since HDF5-1.8.8
-- Platforms Tested
+- Bug Fixes since HDF5-1.8.9
+- Supported Platforms
 - Supported Configuration Features Summary
+- More Tested Platforms
 - Known Problems
 
 
@@ -61,68 +61,46 @@ New Features
     
     Library
     -------
-    - Added new feature to merge committed datatypes when copying objects,
-      using new H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG, modified by new API
-      routines: H5Padd_merge_committed_dtype_path(),
-      H5Pfree_merge_committed_dtype_paths(), H5Pset_mcdt_search_cb() and
-      H5Pget_mcdt_search_cb().  (QAK - 2012/03/30)
-    - Added new feature which allows working with files in memory in the 
-      same ways files are worked with on disk. New API routines include 
-      H5Pset_file_image, H5Pget_file_image, H5Pset_file_image_callbacks, 
-      H5Pget_file_image_callbacks, H5Fget_file_image, and 
-      H5LTopen_file_image. (QAK - 2012/04/17)
+    - Updated to latest autotools and changed all hard *.sh scripts to
+      configure managed *.sh.in files. Removed overloading of autotools
+      TESTS variable by examples and tests. Renamed configure.in to
+      configure.ac. (ADB - 2012/08/23 - HDFFV-8129)
+    - The data sieve buffer size was set for all the datasets in the file.  It
+      could waste memory if any dataset size is smaller than the sieve buffer
+      size.  Now the library picks the smaller one between the dataset size
+      and the sieve buffer size from the file access property. See Issue 7934.
+      (SLU - 2012/4/11)
  
     Parallel Library
     ----------------
-    - Corrected memory allocation error in MPI datatype construction code.
-      (QAK - 2012/04/23)
-    - Add two new routines to set/get the atomicity parameter in the
-      MPI library to perform atomic operations. Some file systems (for
-      example PVFS2) do not support atomic updates, so those routines
-      would not be supported. (MSC - 2012/03/27 - HDFFV-7961)
+    - Added the H5Pget_mpio_no_collective_cause() function that retrieves 
+      reasons why the collective I/O was broken during read/write IO access. 
+      (JKM - 2012/08/30 HDFFV-8143)
+
+    - Added H5Pget_mpio_actual_io_mode_f (MSB - 2012/09/27)
  
     Tools
     -----
-    - h5repack: Added ability to set the metadata block size of the output
-      file, with the '-M'/'--metadata_block_size' command line parameter.
-      (QAK - 2012/03/30)
-    - h5stat: Added ability to display a summary of the file space usage for a
-      file, with the '-S'/'--summary' command line parameter.  (QAK - 2012/03/28)
-    - h5dump: Added capability for "-a" option to show attributes containing "/" 
-      by using an escape character. For example, for a dataset "/dset" 
-      containing attribute "speed(m/h)", use "h5dump -a "/dset/speed(\/h)" 
-      to show the content of the attribute. (PC - 2012/03/12 - HDFFV-7523)
-    - h5dump: Added ability to apply command options across multiple files using a
-      wildcard in the filename. Unix example; "h5dump -H -d Dataset1 tarr*.h5".
-      Cross platform example; "h5dump -H -d Dataset1 tarray1.h5 tarray2.h5 tarray3.h5".
-      (ADB - 2012/03/12 - HDFFV-7876).
-    - h5dump: Added new option --no-compact-subset. This option will not
-      interpret the '[' character as starting the compact form of 
-      subsetting. This is useful when the "h5dump error: unable to 
-      open dataset "datset_name"" message is output because a dataset
-      name contains a '[' character. (ADB - 2012/03/05 - HDFFV-7689).
-    - h5repack: Improved performance for big chunked datasets (size > 128MB)
-      when used with the layout (-l) or compression (-f) options. 
-      Before this change, repacking datasets with chunks with a large first 
-      dimension would take extremely long. For example, repacking a dataset 
-      with chunk dimensions of 1024x5x1 might take many hours to process 
-      while changing a dataset with chunk dimensions set to 1x5x1024 
-      might take under an hour. After this change, processing the dataset 
-      with chunk dimensions of 1024x5x1 takes about 15 minutes, and processing 
-      a dataset with chunk dimensions of 1x5x1024 takes about 14 minutes.
-      (JKM - 2012/03/01 - HDFFV-7862) 
+    - h5import: Changed to allow the use of h5dump output as input files to 
+      h5import. h5dump must include the "-p" option to print the properties; 
+      configuration file is captured output of h5dump. The restrictions are 
+      that only one dataset with a simple datatype (integer, floating-point, 
+      or string) can be processed. Integers and floating-point imports from 
+      h5dump must use the "binary" option for the data file. The string version 
+      uses the h5dump "-y --width=1" options to disable the indexing printouts, 
+      print single columns, and obviously NOT use the "binary" option. 
+      (ADB - 2012/07/19 HDFFV-721)
 
     High-Level APIs
     ---------------
-    - New API: H5LTpath_valid (Fortran: h5ltpath_valid_f) checks
-      if a path is correct, determines if a link resolves to a valid
-      object, and checks that the link does not dangle. (MSB - 2012/03/15)
+    - None
 
     Fortran API
     -----------
-
-    - Added for the C API the Fortran wrapper:
-       h5ocopy_f (MSB - 2012/03/22)
+    - Fixed a typo in return value of the nh5dread_f_c function (was 1 
+      instead of 0 on success); fixed the return value to make it consistent
+      with other Fortran functions; cleaned debug statements from the code.
+      (EIP - 2012/06/23)
 
     C++ API
     -------
@@ -133,118 +111,105 @@ Support for New Platforms, Languages, and Compilers
 ===================================================
     - None
 
-Bug Fixes since HDF5-1.8.8
+Bug Fixes since HDF5-1.8.9
 ==========================
 
     Configuration
     -------------
-    - Fixed Makefile issue in which "-Wl," was not properly specified
-      prior to -rpath when building parallel Fortran libraries with
-      an Intel compiler. (MAM - 2012/03/26) 
-    - Makefiles generated by other packages using h5cc as the compiler
-      no longer error when 'make' is invoked more than once in order
-      to 'rebuild' after changes to source. (MAM - 2012/03/26)
-    - Added code to display the version information of XL Fortran and C++
-      in the summary of configure. (AKC - 2012/02/28 - HDFFV-7793)
-    - Updated all CMakeLists.txt files to indicate the minimum CMake version is
-      the current standard of 2.8.6 (ADB - 2011/12/05 - HDFFV-7854)
+    - Fixed configure --enable-production to not use -O optimization for Lion
+      and Mountain Lion systems when gcc (i686-apple-darwin11-llvm-gcc-4.2
+      (GCC) 4.2.1) is used.  Somehow the -O optimization will cause some of
+      the hard conversion code in test/dt_arith.c to fail. HDFFV-8017.
+      (AKC - 2012/10/10)
+    - Fixed AIX Fortran compiler flags to use appropriate settings for
+      debugging, profiling, and optimization situations. HDFFV-8069. 
+      (AKC 2012/09/27)
 
     Library
     -------
-    - Windows and STDIO correctness changes have been propagated from the SEC2
-      and old Windows drivers to the STDIO VFD.  (DER - 2012/03/30 - HDFFV-7917)
-    - Fixed an error that would occur when copying an object with attribute
-      creation order tracked and indexed. (NAF - 2012/03/28 - HDFFV-7762)
-    - Fixed a bug in H5Ocopy(): When copying an opened object, call the
-      object's flush class action to ensure that cached data is flushed so
-      that H5Ocopy will get the correct data.  (VC - 2012/03/27 - HDFFV-7853)
-    - The istore test will now skip the sparse 50x50x50 test when the VFD does
-      not support sparse files on that platform.  The most important platforms
-      on which this will be skipped are Windows (NTFS sparse files are not
-      supported) and Mac OS-X (HFS sparse files are not supported).  This
-      fixes CTest timeout issues on Windows.  (DER - 2012/03/27 - HDFFV-7769)
-    - Windows and POSIX correctness changes have been propagated from the SEC2
-      VFD to the Core VFD.  This mainly affects file operations on the
-      driver's backing store and fixes a problem on Windows where large files
-      could not be read. (DER - 2012/03/27 - HDFFV-7916 - HDFFV-7603)
-    - When an application tries to write or read many small data chunks and
-      runs out of memory, the library had a segmentation fault.  The fix is to
-      return the error stack with proper information.
-      (SLU - 2012/03/23 - HDFFV-7785)
-    - H5Pset_data_transform had a segmentation fault in some cases like x*-100.  
-      It works correctly now and handles other cases like 100-x or 2/x.
-      (SLU - 2012/03/15 - HDFFV-7922)
-    - Fixed rare corruption bugs that could occur when using the new object
-      header format. (NAF - 2012/03/15 - HDFFV-7879)
-    - Fixed an error that occurred when creating a contiguous dataset with a 
-      zero-sized dataspace and space allocation time set to 'early'. 
-      (QAK - 2012/03/12)
-    - Changed Windows thread creation to use _beginthread() instead of
-      CreateThread().  Threads created by the latter can be killed in
-      low-memory situations. (DER - 2012/02/10 - HDFFV-7780)
-    - Creating a dataset in a read-only file caused a segmentation fault when 
-      the file is closed.  It's fixed. The attempt to create a dataset will 
-      fail with an error indicating the file is read-only.
-      (SLU - 2012/01/25 - HDFFV-7756) 
-    - Fixed a segmentation fault that could occur when shrinking a dataset 
-      with chunks larger than 1 MB. (NAF - 2011/11/30 - HDFFV-7833)
-    - Fixed a bug that could cause H5Oget_info to return the wrong address
-      after copying a committed (named) datatype. (NAF - 2011/11/14)
-    - The library allowed the conversion of strings between ASCII and UTF8
-      We have corrected it to report an error under this situation.
-      (SLU - 2011/11/8 - HDFFV-7582)
-    - Fixed a segmentation fault when the library tried to shrink the size 
-      of a compound datatype through H5Tset_size immediately after the 
-      datatype was created. (SLU - 2011/11/4 - HDFFV-7618)
+    - Fixed a memory leak exposed when inserting/removing a property
+      from a property list several times. HDFFV-8022. (MSC 2012/05/18)
+    - The file_image test will fail in the "initial file image and callbacks in
+      the core VFD" sub-test if the source directory is read-only as the test
+      fails to create its test files in the build directory. This has been
+      fixed. HDFFV-8009 (AKC - 2012/07/06)
+  
 
     Parallel Library
     ----------------
-    - None
+    - The MPI-POSIX VFD was updated to include the POSIX and Windows
+      correctness features added that had already been added to the other VFDs.
+      HDFFV-8058/7845.  (DER 2012/09/17)
+
+    Performance
+    -------------
+    - Removed program perform/benchpar from the enable-build-all list.  The
+      program will be retired or moved to another location.  HDFFV-8156
+      (AKC 2012/10/01)
+    - Retired program perform/mpi-perf. Its purpose has been incorporated
+      into h5perf. (AKC 2012/09/21)
 
     Tools
     -----
-    - h5unjam: Fixed a segmentation fault that occurred when h5unjam was used 
-      with the -V (show version) option. (JKM - 2012/04/19 - HDFFV-8001)
-    - h5repack: Fixed a failure that occurred when repacking the chunk size 
-      of a specified chunked dataset with unlimited max dims. 
-      (JKM - 2012/04/11 - HDFFV-7993) 
-    - h5diff: Fixed a failure when comparing groups. Before the fix, if an 
-      object in a group was compared with an object in another group where 
-      both had the same name but the object type was different, then h5diff
-      would fail. After the fix, h5diff detects such cases as non-comparable
-      and displays appropriate error messages. 
-      (JKM - 2012/03/28 - HDFFV-7644)
-    - h5diff: If unique objects exist only in one file and if h5diff is set to 
-      exclude the unique objects with the --exclude-path option, then h5diff 
-      might miss excluding some objects. This was fixed to correctly exclude 
-      objects. (JKM - 2012/03/20 - HDFFV-7837)
-    - h5diff: When two symbolic dangling links are compared with the 
-      --follow-symlinks option, the result should be the same. This worked when 
-      comparing two files, but didn't work when comparing two objects.
-      h5diff now works when comparing two objects.
-      (JKM - 2012/03/09 - HDFFV-7835)
-    - h5dump: Added the tools library error stack to properly catch error
-      information generated within the library. (ADB - 2012/03/12 - HDFFV-7958)
-    - h5dump: Changed the process where an open link used to fail. Now dangling 
-      links no longer throw error messages. (ADB - 2012/03/12 - HDFFV-7839)
-    - h5dump: Refactored code to remove duplicated functions. Split XML 
-      functions from DDL functions. Corrected indentation and formatting
-      errors. Also fixed subsetting counting overflow (HDFFV-5874). Verified
-      all tools call tools_init() in main. The USER_BLOCK data now correctly
-      displays within the SUPER_BLOCK info. NOTE: WHITESPACE IN THE OUTPUT
-      HAS CHANGED. (ADB - 2012/02/17 - HDFFV-7560)
-    - h5diff: Fixed to prevent from displaying error stack message when 
-      comparing two dangling symbolic links with the follow-symlinks option.
-      (JKM - 2012/01/13 - HDFFV-7836)
-    - h5repack: Fixed a memory leak that occurred with the handling of 
-      variable length strings in attributes.
-      (JKM - 2012/01/10 - HDFFV-7840)
-    - h5ls: Fixed a segmentation fault that occurred when accessing region 
-      reference data in an attribute. (JKM - 2012/01/06 - HDFFV-7838)
+    - h5repack: "h5repack -f NONE file1.h5 out.h5" command failed if
+      source file contains chunked dataset and a chunk dim is bigger than 
+      the dataset dim. Another issue is that the command changed max dims
+      if chunk dim is smaller than the dataset dim. These issue occurred 
+      when dataset size is smaller than 64k (compact size limit)  Fixed both.
+      HDFFV-8012 (JKM 2012/09/24)
+    - h5diff: Fixed the counter in verbose mode (-v, -r) so that it will no 
+      longer add together the differences between datasets and the differences 
+      between attributes of those datasets. This change makes the output of 
+      verbose mode consistent for datasets, groups, and committed datatypes. 
+      HDFFV-5919 (JKM 2012/09/10)
+    - h5diff: Fixed the incorrect result when comparing attribute data 
+      values and the data type has the same class but different sizes.
+      HDFFV-7942  (JKM 2012/08/15)
+    - h5dump: Replaced single element fwrite with block writes.
+      HDFFV-1208 (ADB 2012/08/13)
+    - h5diff: Fixed test failure for "make check" due to failure of 
+      copying test files when performed in HDF5 source tree. Also applied
+      to other tools.  HDFFV-8107 (JKM 2012/08/01)
+    - ph5diff: Fixed intermittent hang issue on a certain operation in 
+      parallel mode. It was detected by daily test for comparing 
+      non-comparable objects, but it could have occurred in other 
+      operations depending on machine condition.  HDFFV-8003 (JKM 2012/08/01)
+    - h5diff: Fixed the function COPY_TESTFILES_TO_TESTDIR() of testh5diff.sh
+      to better report when there is an error in the file copying.
+      HDFFV-8105 (AKC 2012/07/22)
+    - h5dump: Fixed the sort by name display to maintain correct parent/child
+      relationships between ascending/descending order.
+      HDFFV-8095 (ADB 2012/07/12)
+    - h5dump: Fixed the display by creation order when using option -n 
+      (print contents).
+      HDFFV-5942 (ADB 2012/07/09)
+    - h5dump: Changed to allow H5T_CSET_UTF8 to be displayed in h5dump output. 
+      Used technique similar to what was done in h5ls (matches library 
+      options).
+      HDFFV-7999 (ADB 2012/05/23)
+    - h5diff: Fixed the tool so that it will not check and display the status 
+      of dangling links without setting the --follow-symlinks option. This 
+      also improved performance when comparing lots of external links without 
+      the --follow-symlinks option.  
+      HDFFV-7998 (JKM 2012/04/26)
 
     F90 API
     -------
-    - None
+    
+    - Fixed a typo in return value of the nh5dread_f_c function (was 1
+      instead of 0 on success); fixed the return value to make it consistent
+      with other Fortran functions; cleaned debug statements from the code.
+      (EIP - 2012/06/23)
+
+    - Fixed a problem writing/reading control characters to a dataset; writing
+      a string containing alerts, backspace, carriage_return, form_feed,
+      horizontal_tab, vertical_tab, or new_line is now tested and working.
+      (MSB - 2012/09/01)
+
+    - Corrected the integer type of H5S_UNLIMITED_F to HSIZE_T (MSB - 2012/09/01)
+
+    - Corrected the number of continuation lines in the src files
+      to be less than 32 lines for F95 compliance. (MSB - 2012/10/01)
 
     C++ API
     ------
@@ -252,77 +217,67 @@ Bug Fixes since HDF5-1.8.8
 
     High-Level APIs:
     ------
-    - None
 
-    Fortran High-Level APIs:
-    ------
-    - h5ltget_attribute_string_f: The h5ltget_attribute_string_f used to return 
-      the C NULL character in the returned character buffer. The returned 
-      charactor buffer now does not return the C NULL character; the buffer 
-      is blank-padded if needed. (MSB - 2012/03/23)
+    - Fixed problem with H5TBdelete_record destroying all data following the 
+      deletion of a row. (MSB- 2012/7/26)
 
+    - Fixed H5LTget_attribute_string not closing an object identifier when an 
+      error occurs. (MSB- 2012/7/21)
 
-Platforms Tested
-================
-The following platforms and compilers have been tested for this release.
+    - Corrected the return type of H5TBAget_fill from herr_t to htri_t to 
+      reflect that a return value of 1 indicates that a fill value is 
+      present, 0 indicates a fill value is not present, and <0 indicates an 
+      error.
 
+    Fortran High-Level APIs:
+    ------
+    - None
+
+Supported Platforms
+===================
     AIX 5.3                       xlc 10.1.0.5
     (NASA G-ADA)                  xlC 10.1.0.5
                                   xlf90 12.1.0.6
 
-    FreeBSD 8.2-STABLE i386       gcc 4.2.1 [FreeBSD] 20070719
-    (loyalty)                     g++ 4.2.1 [FreeBSD] 20070719
-                                  gcc 4.6.1 20110422
-                                  g++ 4.6.1 20110422
-                                  gfortran 4.6.1 20110422
-
-    FreeBSD 8.2-STABLE amd64      gcc 4.2.1 [FreeBSD] 20070719
-    (freedom)                     g++ 4.2.1 [FreeBSD] 20070719
-                                  gcc 4.6.1 20110422
-                                  g++ 4.6.1 20110422
-                                  gfortran 4.6.1 20110422
-
-    Linux 2.6.18-194.3.1.el5PAE   GNU C (gcc), Fortran (gfortran), C++ (g++)
+    Linux 2.6.18-308.13.1.el5PAE  GNU C (gcc), Fortran (gfortran), C++ (g++)
     #1 SMP i686 i686 i386         compilers for 32-bit applications;
     (jam)                             Version 4.1.2 20080704 (Red Hat 4.1.2-52)
-                                      Version 4.5.2
+                                      Version 4.6.3
                                   PGI C, Fortran, C++ Compilers for 32-bit
                                   applications;
-                                      Version 11.8-0
                                       Version 11.9-0
                                   Intel(R) C, C++, Fortran Compiler for 32-bit
                                   applications;
-                                      Version 12.0
                                       Version 12.1
-                                  MPICH mpich2-1.3.1 compiled with
+                                  MPICH mpich2-1.4.1p1 compiled with
                                       gcc 4.1.2 and gfortran 4.1.2
 
-    Linux 2.6.18-308.1.1.el5      GNU C (gcc), Fortran (gfortran), C++ (g++)
+    Linux 2.6.18-308.16.1.el5     GNU C (gcc), Fortran (gfortran), C++ (g++)
     #1 SMP x86_64 GNU/Linux       compilers for 32-bit applications;
     (koala)                           Version 4.1.2 20080704 (Red Hat 4.1.2-52)
-                                      Version 4.5.2
+                                      Version 4.6.3
                                   PGI C, Fortran, C++ for 64-bit target on 
                                   x86-64;
-                                      Version 11.9-0 (64-bit)
-                                      Version 11.8-0 (32-bit)
+                                      Version 11.9-0 
+                                      Version 12.5-0
                                   Intel(R) C, C++, Fortran Compilers for 
                                   applications running on Intel(R) 64; 
-                                      Version 12.0
-                                      Version 12.1
-                                  MPICH mpich2-1.3.1 compiled with
+                                      Version 12.1 (Build 20110811)
+                                      Version 12.1 (Build 20120212)
+                                  MPICH mpich2-1.4.1p1 compiled with
                                       gcc 4.1.2 and gfortran 4.1.2
 
     Linux 2.6.32-220.7.1.el6.ppc64 gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) 
     #1 SMP ppc64 GNU/Linux        g++ (GCC) 4.4.6 20110731 
     (ostrich)                     GNU Fortran (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
 
-    Linux 2.6.18-108chaos         Intel C, C++, Fortran Compilers Version 11.1
-    #1 SMP x86_64 GNU/Linux
+    Linux 2.6.32-220.23.1.1chaos  Intel C, C++, Fortran Compilers
+    ch5.x86_64 GNU/Linux              Version 12.1.5.339
     (LLNL Aztec)
 
     IBM Blue Gene/P               XL C for Blue Gene/P, bgxlc V9.0
     (LLNL uDawn)                  XL C++ for Blue Gene/P, bgxlC V9.0
-                                  XL Fortran for Blue Gene/P, bgxlf0 V11.1
+                                  XL Fortran for Blue Gene/P, bgxlf90 V11.1
 
     SunOS 5.10 32- and 64-bit     Sun C 5.9 Sun OS_sparc Patch 124867-16
     (linew)                       Sun Fortran 95 8.3 Sun OS_sparc Patch 127000-13
@@ -331,88 +286,42 @@ The following platforms and compilers have been tested for this release.
                                   Sun Fortran 95 8.5 SunOS_sparc
                                   Sun C++ 5.11 SunOS_sparc
 
-    SGI Altix UV                  Intel(R) C, Fortran Compilers
-    SGI ProPack 7 Linux               Version 11.1 20100806
-    2.6.32.24-0.2.1.2230.2.PTF-   SGI MPT 2.02
-    default #1 SMP                
-    (NCSA ember)
-
-    Dell NVIDIA Cluster           Intel(R) C, Fortran Compilers
-    Red Hat Enterprise Linux 6        Version 12.0.4 20110427
-    2.6.32-131.4.1.el6.x86_64     mvapich2 1.7rc1-intel-12.0.4
-    (NCSA forge)
-
     Windows XP                    Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
-                                  Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
-                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
 
     Windows XP x64                Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
-                                  Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
-                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
 
     Windows 7                     Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
                                   Visual Studio 2010 w/ Intel Fortran 12 (cmake)
-                                  Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
+                                  Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
+                                  (cmake and autotools)
 
     Windows 7 x64                 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
                                   Visual Studio 2010 w/ Intel Fortran 12 (cmake)
-                                  Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
+                                  Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
+                                  (cmake and autotools)
 
-    Mac OS X Snow Leopard 10.6.8  i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
-    Darwin Kernel Version 10.8.0  i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
-    Intel 64-bit                      (Apple Inc. build 5666) (dot 3)
-    (fred)                        GNU Fortan (GCC) 4.6.1 (gfortran)
+    Mac OS X Snow Leopard 10.6.8  gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+    Darwin Kernel Version 10.8.0  g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+    (fred)                        gfortran GNU Fortran (GCC) 4.6.2
                                   Intel C (icc), Fortran (ifort), C++ (icpc)
                                       12.1.0.038 Build 20110811
 
-    Mac OS X Snow Leopard 10.6.8  i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
-    Darwin Kernel Version 10.8.0  i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
-    Intel 32-bit                      (Apple Inc. build 5666) (dot 3)
-    (tejeda)                      GNU Fortran (GCC) 4.6.1 (gfortran)
-                                  Intel C (icc), Fortran (ifort), C++ (icpc)
+    Mac OS X Snow Leopard 10.6.8  gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+    Darwin Kernel Version 10.8.0  g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+    Intel 32-bit                  gfortran GNU Fortran (GCC) 4.6.1
+    (tejeda)                      Intel C (icc), Fortran (ifort), C++ (icpc)
                                       12.1.0.038 Build 20110811
 
-    Mac OS X Lion 10.7.3          GCC 4.2.1 gcc
-    32- and 64-bit                GNU Fortran (GCC) 4.6.1 gfortran
-    (duck)                        GCC 4.2.1. g++
-
-    Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
-                                  gcc (Debian 4.4.5-8) 4.4.5
-                                  GNU Fortran (Debian 4.4.5-8) 4.4.5
-
-    Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
-                                  gcc (Debian 4.4.5-8) 4.4.5
-                                  GNU Fortran (Debian 4.4.5-8) 4.4.5
-
-    Fedora16 3.2.9-2.fc16.i6866 #1 SMP i686 i686 i386 GNU/Linux
-                                  gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
-                                  GNU Fortran (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
-
-    Fedora16 3.2.9-2.fc16.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
-                                  gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
-                                  GNU Fortran (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
-
-    SUSE 12.1 3.1.9-1.4-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
-                                  gcc (SUSE Linux) 4.6.2
-                                  GNU Fortran (SUSE Linux) 4.6.2
+    Mac OS X Lion 10.7.3          gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 4.2.1
+    32- and 64-bit                g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 4.2.1
+    (duck)                        gfortran GNU Fortran (GCC) 4.6.2
 
-    SUSE 12.1 3.1.9-1.4-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
-                                  gcc (SUSE Linux) 4.6.2
-                                  GNU Fortran (SUSE Linux) 4.6.2 
+    Mac OS X Mountain Lion 10.8.1 cc Apple clang version 4.0 from Xcode 4.5.1
+    (owl)                         c++ Apple clang version 4.0 from Xcode 4.5.1
+				  gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 4.5.1
+				  g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 4.5.1
+    			          gfortran GNU Fortran (GCC) 4.6.2
 
-    Ubuntu 11.10 3.0.0-16-generic #29-Ubuntu SMP i686 GNU/Linux
-                                  gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
-                                  GNU Fortran (Ubuntu/Linaro 4.6.4-9ubuntu3) 4.6.1
-
-    Ubuntu 11.10 3.0.0-16-generic #29-Ubuntu SMP x86_64 GNU/Linux
-                                  gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
-                                  GNU Fortran (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
-
-    Cray Linux Environment (CLE)  PrgEnv-pgi 2.2.74
-    hopper.nersc.gov              pgcc 11.9-0 64-bit target on x86-64 Linux -tp k8e
-                                  pgf90 11.9-0 64-bit target on x86-64 Linux -tp k8e
-                                  pgCC 11.9-0 64-bit target on x86-64 Linux -tp k8e
-    
 
 Tested Configuration Features Summary
 =====================================
@@ -427,91 +336,127 @@ Tested Configuration Features Summary
           ( ) = footnote appears below second table
           <blank> = testing incomplete on this feature or platform 
 
-Platform                                 C        F90    F90      C++   zlib  SZIP
-                                         parallel        parallel
-Solaris2.10 32-bit                         n        y      n        y     y     y
-Solaris2.10 64-bit                         n        y      n        y     y     y
-Windows XP                                 n        y(4)   n        y     y     y
-Windows XP x64                             n        y(4)   n        y     y     y
-Windows Vista                              n        y(4)   n        y     y     y
-Windows Vista x64                          n        y(4)   n        y     y     y
-Mac OS X Snow Leopard 10.6.8 32-bit        n        y      n        y     y     n 
-Mac OS X Snow Leopard 10.6.8 64-bit        n        y      n        y     y     y
-Mac OS X Lion 10.7.3 32-bit                n        y      n        y     y     n
-Mac OS X Lion 10.7.3 64-bit                n        y      n        y     y     y
-AIX 5.3 32- and 64-bit                     y        y      y        y     y     y
-FreeBSD 8.2-STABLE 32&64 bit               n        x      n        x     y     y
-CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W  y        y(2)   y        y     y     y
-CentOS 5.5 Linux 2.6.18-194 i686 Intel  W  n        y      n        y     y     y
-CentOS 5.5 Linux 2.6.18-194 i686 PGI    W  n        y      n        y     y     y
-CentOS 5.5 Linux 2.6.18 x86_64 GNU (1)  W  y        y(3)   y        y     y     y
-CentOS 5.5 Linux 2.6.18 x86_64 Intel    W  n        y      n        y     y     y
-CentOS 5.5 Linux 2.6.18 x86_64 PGI      W  n        y      n        y     y     y
-Linux 2.6.32-220.7.1.el6.ppc64             n        y      n        y     y     y
-SGI ProPack 7 Linux 2.6.32.24              y        y      y        y     y     y
-Red Hat Enterprise Linux 6                 y        y      y        y     y     y
-CLE hopper.nersc.gov                       y        y(3)   y        y     y     n
+Platform                              C         F90/   F90      C++  zlib  SZIP
+                                      parallel  F2003  parallel
+Solaris2.10 32-bit                      n        y/y    n        y    y     y
+Solaris2.10 64-bit                      n        y/n    n        y    y     y
+Windows 7                               y        y/n    n        y    y     y
+Windows 7     x64                       y        y/n    n        y    y     y
+Mac OS X Snow Leopard 10.6.8 32-bit     n        y/y    n        y    y     n 
+Mac OS X Snow Leopard 10.6.8 64-bit     n        y/y    n        y    y     y
+Mac OS X Lion 10.7.3 32-bit             n        y/y    n        y    y     n
+Mac OS X Lion 10.7.3 64-bit             n        y/y    n        y    y     y
+Mac OS X Mountain Lion 10.8.1 64-bit    n        y/n    n        y    y     n
+AIX 5.3 32- and 64-bit                  y        y/n    y        y    y     y
+CentOS 5.5 Linux 2.6.18-308 i686 GNU    y        y/y    y        y    y     y
+CentOS 5.5 Linux 2.6.18-308 i686 Intel  n        y/y    n        y    y     y
+CentOS 5.5 Linux 2.6.18-308 i686 PGI    n        y/y    n        y    y     y
+CentOS 5.5 Linux 2.6.18 x86_64 GNU      y        y/y    y        y    y     y
+CentOS 5.5 Linux 2.6.18 x86_64 Intel    n        y/y    n        y    y     y
+CentOS 5.5 Linux 2.6.18 x86_64 PGI      n        y/y    n        y    y     y
+Linux 2.6.32-220.7.1.el6.ppc64          n        y/n    n        y    y     y
 
 
 Platform                                 Shared  Shared    Shared    Thread-  
                                          C libs  F90 libs  C++ libs  safe     
 Solaris2.10 32-bit                         y       y         y         y        
 Solaris2.10 64-bit                         n       n         n         n        
-Windows XP                                 y       y(4)      y         n        
-Windows XP x64                             y       y(4)      y         n        
-Windows Vista                              y       y(4)      y         y
-Windows Vista x64                          y       y(4)      y         y
+Windows 7                                  y       y         y         y
+Windows 7 x64                              y       y         y         y
 Mac OS X Snow Leopard 10.6.8 32-bit        y       n         y         n        
 Mac OS X Snow Leopard 10.6.8 64-bit        y       n         y         n        
 Mac OS X Lion 10.7.3 32-bit                y       n         y         y        
 Mac OS X Lion 10.7.3 64-bit                y       n         y         y        
+Mac OS X Mountain Lion 10.8.1 64-bit       y       n         y         y        
 AIX 5.3 32- and 64-bit                     n       n         n         y        
-FreeBSD 8.2-STABLE 32&64 bit               y       x         x         y        
-CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W  y       y(2)      y         y        
-CentOS 5.5 Linux 2.6.18-194 i686 Intel  W  y       y         y         n        
-CentOS 5.5 Linux 2.6.18-194 i686 PGI    W  y       y         y         n        
-CentOS 5.5 Linux 2.6.18 x86_64 GNU (1)  W  y       y         y         y        
-CentOS 5.5 Linux 2.6.18 x86_64 Intel    W  y       y         y         n        
-CentOS 5.5 Linux 2.6.18 x86_64 PGI      W  y       y         y         n        
+CentOS 5.5 Linux 2.6.18-308 i686 GNU       y       y         y         y        
+CentOS 5.5 Linux 2.6.18-308 i686 Intel     y       y         y         n        
+CentOS 5.5 Linux 2.6.18-308 i686 PGI       y       y         y         n        
+CentOS 5.5 Linux 2.6.18 x86_64 GNU         y       y         y         y        
+CentOS 5.5 Linux 2.6.18 x86_64 Intel       y       y         y         n        
+CentOS 5.5 Linux 2.6.18 x86_64 PGI         y       y         y         n        
 Linux 2.6.32-220.7.1.el6.ppc64             y       y         y         n 
-SGI ProPack 7 Linux 2.6.32.24              y       y         y         n 
-Red Hat Enterprise Linux 6                 y       y         y         n
-CLE hopper.nersc.gov                       n       n         n         n
 
-           (1) Fortran compiled with gfortran.
-           (2) With PGI and Absoft compilers.
-           (3) With PGI compiler for Fortran.
-           (4) Using Visual Studio 2008 w/ Intel Fortran 10.1 (Cygwin shared libraries are not supported)
-           (5) C and C++ shared libraries will not be built when Fortran is enabled.
-    Compiler versions for each platform are listed in the preceding
-    "Platforms Tested" table.
+Compiler versions for each platform are listed in the preceding
+"Supported Platforms" table.
 
 
-Known Problems
-==============
-* The h5repacktst test fails on AIX 32-bit because the test uses more
-  memory than the default amount. The failure message typically looks like:
+More Tested Platforms
+=====================
+The following platforms are not supported but have been tested for this release.
 
-    "time: 0551-010 The process was stopped abnormally. Try again."
+    FreeBSD 8.2-STABLE i386       gcc 4.2.1 [FreeBSD] 20070719
+    (loyalty)                     gcc 4.6.1 20110422
+                                  g++ 4.6.1 20110422
+                                  gfortran 4.6.1 20110422
 
-  This is an issue with the test only and does not represent a problem with
-  the library. To allow the test to pass, request more memory when testing
-  via appropriate command such as:
+    FreeBSD 8.2-STABLE amd64      gcc 4.2.1 [FreeBSD] 20070719
+    (freedom)                     gcc 4.6.1 20110422
+                                  g++ 4.6.1 20110422
+                                  gfortran 4.6.1 20110422
 
-    $ env LDR_CNRTL=MAXDATA=0x20000000 at DSA make check
+    Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
+                                  gcc (Debian 4.4.5-8) 4.4.5
+                                  GNU Fortran (Debian 4.4.5-8) 4.4.5
+                                  (cmake and autotools)
 
-  (AKC - 2012/05/09 - HDFFV-8016)
+    Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
+                                  gcc (Debian 4.4.5-8) 4.4.5
+                                  GNU Fortran (Debian 4.4.5-8) 4.4.5
+                                  (cmake and autotools)
+
+    Fedora17 3.5.2-1.fc17.i6866 #1 SMP i686 i686 i386 GNU/Linux
+                                  gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+                                  GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+                                  (cmake and autotools)
+
+    Fedora17 3.5.2-1.fc17.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+                                  GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+                                  (cmake and autotools)
+
+    SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
+                                  gcc (SUSE Linux) 4.7.1
+                                  GNU Fortran (SUSE Linux) 4.7.1
+                                  (cmake and autotools)
+
+    SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (SUSE Linux) 4.7.1
+                                  GNU Fortran (SUSE Linux) 4.7.1 
+                                  (cmake and autotools)
+
+    Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP i686 GNU/Linux
+                                  gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+                                  GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+                                  (cmake and autotools)
+
+    Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP x86_64 GNU/Linux
+                                  gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+                                  GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+                                  (cmake and autotools)
+                                  (Use optimization level -O1)
+    
+    Cray Linux Environment (CLE)  PrgEnv-pgi/4.0.46
+    hopper.nersc.gov              pgcc 12.5-0 64-bit target on x86-64 Linux -tp shanghai
+                                  pgf90 12.5-0 64-bit target on x86-64 Linux -tp shanghai
+                                  pgCC 12.5-0 64-bit target on x86-64 Linux -tp shanghai
+    
 
-* The file_image test will fail in the "initial file image and callbacks in
-  the core VFD" sub-test if the source directory is read-only as the test
-  fails to create its test files in the build directory. This will be
-  resolved in a future release.
-  (AKC - 2012/05/05 - HDFFV-8009)
+Known Problems
+==============
+* The following h5stat test case fails in BG/P machines (and potentially other
+  machines that display extra output if an MPI task returns with a non-zero
+  code.)
+    Testing h5stat notexist.h5
   
-* The dt_arith test reports several errors involving "long double" on
-  Mac OS X 10.7 Lion when any level of optimization is enabled. The test does
-  not fail in debug mode. This will be addressed in a future release.
-  (SLU - 2012/05/08)
+  The test actually runs and passes as expected. It is the extra output from
+  the MPI process that causes the test script to fail. This will be fixed
+  in the next release.  (AKC - 2012/10/25 - HDFFV-8233)
+
+* The C++ and FORTRAN bindings are not currently working on FreeBSD with the
+  native release 8.2 compilers (4.2.1), but are working with gcc 4.6 from the
+  ports (and probably gcc releases after that).
+  (QAK - 2012/10/19)
 
 * The following h5dump test case fails in BG/P machines (and potentially other
   machines that use a command script to launch executables):
@@ -525,11 +470,6 @@ Known Problems
   not via the test script.
   (AKC - 2012/05/03)
 
-* The ph5diff (parallel h5diff) tool can intermittently hang in parallel mode
-  when comparing two HDF5 files that contain objects with the same names but
-  with different object types.
-  (JKM - 2012/04/27)
-
 * On hopper, the build failed when RUNSERIAL and RUNPARALLEL are set
   to aprun -np X, because the H5lib_settings.c file was not generated
   properly. Not setting those environment variables works, because
@@ -554,7 +494,7 @@ Known Problems
   64-bit SunOS 5.10 on SPARC when built with -m64 and 32-bit OS X/Darwin
   10.7.0.  The STDIO VFD test has been disabled while we investigate and
   a fix should appear in a future release.
-  (DER - 2011/10/14)
+  (DER - 2011/10/14 - HDFFV-8235)
 
 * h5diff can report inconsistent results when comparing datasets of enum type
   that contain invalid values.  This is due to how enum types are handled in
@@ -624,11 +564,6 @@ Known Problems
   it is (see bug report #1279).  Quincey will make a plan for 1.10.
   (SLU - 2010/02/02)
 
-* MinGW has a missing libstdc++.dll.a library file and will not successfully link
-  C++ applications/tests. Do not use the enable-cxx configure option. Read all of
-  the INSTALL_MINGW.txt file for all restrictions.
-  (ADB - 2009/11/11)
-
 * The --enable-static-exec configure flag will only statically link libraries
   if the static version of that library is present. If only the shared version
   of a library exists (i.e., most system libraries on Solaris, AIX, and Mac,
@@ -638,63 +573,16 @@ Known Problems
   executable is statically linked with just the HDF5 library.
   (MAM - 2009/11/04)
   
-* The PathScale MPI implementation, accessing a Panasas file system, would
-  cause H5Fcreate() with H5F_ACC_EXCL to fail even when the file does not
-  exist. This is due to the MPI_File_open() call failing if the mode has
-  the MPI_MODE_EXCL bit set.
-  (AKC - 2009/08/11 - HDFFV-988)
- 
 * Parallel tests failed with 16 processes with data inconsistency at testphdf5
   / dataset_readAll. Parallel tests also failed with 32 and 64 processes with
   collective abort of all ranks at t_posix_compliant / allwrite_allread_blocks
   with MPI IO.
   (CMC - 2009/04/28)
 
-* For Red Storm, a Cray XT3 system, the tools/h5ls/testh5ls.sh and
-  tools/h5copy/testh5copy.sh will fail some of its sub-tests. These sub-tests
-  are expected to fail and should exit with a non-zero code but the yod
-  command does not propagate the exit code of the executables. Yod always
-  returns 0 if it can launch the executable.  The test suite shell expects
-  a non-zero for this particular test, therefore it concludes the test has
-  failed when it receives 0 from yod.  Skip all the "failing" test for now
-  by changing them as following.
-
-  ======== Original tools/h5ls/testh5ls.sh =========
-  TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
-  ======== Change to ===============================
-  echo SKIP TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
-  ==================================================
-
-  ======== Original tools/h5copy/testh5copy.sh =========
-  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_rename
-  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d /grp_rename/grp_dsets
-  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
-  TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
-  H5LSTEST $FILEOUT
-  ======== Change to ===============================
-  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_rename
-  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d /grp_rename/grp_dsets
-  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
-  echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
-  echo SKIP H5LSTEST $FILEOUT
-  ==================================================
-  (AKC - 2008/11/10)
-  
-* For Red Storm, a Cray XT3 system, the yod command sometimes gives the
-  message,  "yod allocation delayed for node recovery".  This interferes with
-  test suites that do not expect to see this message.  See the section of "Red
-  Storm" in file INSTALL_parallel for a way to deal with this problem.
-  (AKC - 2008/05/28)
-
 * On an Intel 64 Linux cluster (RH 4, Linux 2.6.9) with Intel 10.0 compilers, 
   use -mp -O1 compilation flags to build the libraries. A higher level of 
   optimization causes failures in several HDF5 library tests. 
 
-* On mpich 1.2.5 and 1.2.6, if more than two processes contribute no IO and 
-  the application asks to do collective IO, we have found that when using 4 
-  processors, a simple collective write will sometimes be hung. This can be 
-  verified with t_mpi test under testpar.
-
 * A dataset created or rewritten with a v1.6.3 library or after cannot be read 
   with the v1.6.2 library or before when the Fletcher32 EDC filter is enabled.
   There was a bug in the calculation of the Fletcher32 checksum in the 
@@ -704,17 +592,3 @@ Known Problems
   before on little-endian system.  Library releases after 1.6.4 can still read 
   datasets created or rewritten with an HDF5 library of v1.6.2 or before.  
   (SLU - 2005/06/30)
-
-* On IBM AIX systems, parallel HDF5 mode will fail some tests with error
-  messages like "INFO: 0031-XXX ...".  This is from the command `poe'.
-  Set the environment variable MP_INFOLEVEL to 0 to minimize the messages
-  and run the tests again.
-
-  The tests may fail with messages like "The socket name is already in use",  
-  but HDF5 does not use sockets.  This failure is due to problems with the 
-  poe command trying to set up the debug socket.  To resolve this problem, 
-  check to see whether there are many old /tmp/s.pedb.* files staying around.  
-  These are sockets used by the poe command and left behind due to failed 
-  commands.  First, ask your system administrator to clean them out.  
-  Lastly, request IBM to provide a means to run poe without the debug socket.
-  (AKC - 2004/12/08)
diff --git a/release_docs/obsolete_windows_docs/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt b/release_docs/obsolete_windows_docs/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt
deleted file mode 100644
index f96ce7f..0000000
--- a/release_docs/obsolete_windows_docs/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-**************************************************************************
-  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-**************************************************************************
-
-Building HDF5 from the Visual Studio solutions and projects included in
-the windows\ folder is no longer the preferred way to build HDF5!
-
-**************************************************************************
-  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-**************************************************************************
-
-CMake is now the preferred way to construct appropriate Windows projects
-and solutions for each version of Visual Studio. 
-
-CMake can be downloaded from http://www.cmake.org/
-
-Instructions for building and testing HDF5 using CMake can be found in
-the CMake.txt file in the release_docs\ folder.
-
-The files in the windows\ folder are for the small number of users who
-require them and will be removed HDF5 1.10.
diff --git a/release_docs/obsolete_windows_docs/INSTALL_Windows.txt b/release_docs/obsolete_windows_docs/INSTALL_Windows.txt
deleted file mode 100644
index 48a30d6..0000000
--- a/release_docs/obsolete_windows_docs/INSTALL_Windows.txt
+++ /dev/null
@@ -1,1776 +0,0 @@
-
-***********************************************************************
-*        HDF5 Build and Install Instructions for Windows XP/VISTA     *
-*                         (Full Version)                              *
-***********************************************************************
-
-The following instructions assume that the HDF5 source code package from
-HDF website (http://hdfgroup.org) is used.
-
-Warnings:
-Please read CAREFULLY about the following preconditions and notes first.
-
-Contents:
-
-   Section       :  Preconditions and Notes
-   Section I     :  What do we build and install
-   Section II    :  How to build and test HDF5 libraries and tools
-   Section III   :  How to build examples (optional)
-   Section IV    :  How to build an application using the HDF5 library or DLL
-   Section V     :  How to disable Gzip(Zlib)/Szip compression
-   Section VI    :  How to build HDF5 with Fortran Support
-   Section VII   :  How to build Multi-threaded version of HDF5 library
-   Section VIII  :  How to build HDF5 with Thread-Safe Feature
-   Section IX    :  How to build HDF5 for 64-bit Windows
-   Section X     :  How to build HDF5 on Windows Vista
-   Section XI    :  How to build HDF5 using Visual Studio 2008
-   Section XII   :  Backwards Compatibility with HDF5 1.6
-   Section XIII  :  Misc.
-
-
-========================================================================
-                          Preconditions and Notes
-========================================================================
-
-Preconditions:
-
-   1. Installed Microsoft Visual Studio.  This document is written for Visual
-      Studio 2008. We no longer support building HDF5 using Microsoft Visual 
-      Studio .NET 2003 or 2005. Express Editions may work with the project files
-      but not from the command line. We do not support the Express Editions.
-   
-   2. (Optional) Installed Intel Compiler 10.1 or 11.1 if you want to build HDF5 
-      Fortran libraries. We no longer support Intel Fortran Compiler 9.1.
-      
-   3. Install Winzip or 7-zip for extracting source tarball.
-
-      Note: 1. 7zip is an open-source alternative to WinZip.  Some of the
-            advanced functionality is disabled in WinZip unless you buy the
-            software.  With 7zip, most of this functionality is included for
-            free.
-      
-            2. By default, WinZip will convert the Unix end of line format when 
-            extracting .tar file.  This conversion will cause "false" failure 
-            in some HDF5 tools testings.
-
-            Please uncheck the "TAR file smart CR/LF conversion" option in your 
-            WinZip to prevent the conversion when extracting .tar file.  To 
-            uncheck the "TAR file smart CR/LF conversion" option:
-
-                Invoke WinZip, go to "Options", select "Configuration..."
-
-                Click the "Miscellaneous" tab and uncheck "TAR file smart CR/LF 
-                conversion" option, then click OK.
-
-   4. CMake is available for this release. CMake 2.8.4 can be downloaded from
-      the KitWare website at http://www.kitware.com. See CMake.txt file for
-      more information.
-      
-      Note: We have attempted to mirror our Autoconf configuration files for
-            maintainence reasons. We will maintain the current VS2008 project
-            files for the 1.8 product.
-            Also, if you are using a VS Express version or do not want to enable
-            the packaging components, set HDF5_NO_PACKAGES to ON (on the command
-            line add -DHDF5_NO_PACKAGES:BOOL=ON)
-      Warning: The instructions in this file are not compatible with CMake.
-            Follow the instructions in CMake.txt, dot not use any files from
-            the WINDOWS subfolder.
-            
-   5. Set up a directory structure to unpack the library.  For example:
-
-            c:\                              (any drive)
-            MyHDFstuff\                      (any folder name)
-
-   6. Download the hdf5-1.8.x source code package and use 7zip or WinZip to
-      extract the HDF5 package into c:\MyHDFstuff.  This creates a directory 
-      called 'hdf5-1.8.x' under MyHDFstuff which contains several files and 
-      directories.  Rename "hdf5-1.8.x" to "hdf5".
-
-   7. HDF5 provide options to do in-memory compression  within HDF5 library.  
-      Currently, two external compression libraries Zlib and Szip can be used 
-      with HDF5.
-
-      7.1 HDF5 uses Zlib version 1.2.5 for compression and Zlib is NOT
-          distributed with HDF5 library in 1.8.x release. To use Zlib library, 
-          you have to install your own Zlib DLL library or go to 
-          http://www.zlib.net/ to download the Zlib library.
-
-      7.2 HDF5 uses Szip version 2.1 for compression and Szip compression 
-          software is provided with HDF5 products in 1.8.x release.  To use 
-          Szip 2.1 library, you can download Szip source codes and binaries from
-          ftp://ftp.hdfgroup.org/lib-external/szip/2.1/bin/windows
-
-          Please note that Szip is not a totally open-source free software.  
-          For licensing issue of Szip, please check "Licensing terms" at
-          http://hdfgroup.org/doc_resource/SZIP/index.html.
-
-      Szip compression feature inside HDF5 is optional.
-
-   8. Define the following environment variables:
-
-        HDF5_EXT_ZLIB
-        HDF5_EXT_SZIP
-
-      In this section, Zlib and Szip compression packages are assumed to be 
-      used.  Please read Section V as well as this section if you do not want 
-      to use compression feature inside HDF5.
-
-      To define these environment variables:
-
-      Click "Start", click "Control Panel", and then double-click "System".  
-      On the "Advanced" tab, click "Environment Variables".
-
-      If you are logged on as administrator to the local computer AND want to 
-      let all other users use these two environment variables, click "New" 
-      under "System Variables" box; otherwise, click "New" under "User 
-      Variables" box.
-
-      In the New Variable window, set "Variable name" as HDF5_EXT_ZLIB and 
-      "Variable value" as zlib1.lib, then click OK.
-
-      Similarly, you can set:
-
-      HDF5_EXT_SZIP environment variable as szip.lib
-
-      Notes:
-
-         a. You will have to close and reopen running programs for the new 
-            environment variable settings to take effect.
-
-         b. c:\zlib\zlib1.dll and c:\szip\dll\szip.dll should be copied 
-            into a location that the application can find.
-
-   9. Set up path for external libraries and headers
-
-      Skip this part if you don't want to use ANY compression features provided 
-      by HDF5.  Please do read Section V.
-
-      You have to read this part even if you want to only use Zlib or Szip.  
-      You also need to read Section V.
-
-      Invoke Microsoft Visual Studio and go to "Tools" and select "Options", 
-      find "Projects", and then "VC++ Directories".
-      
-      9.1 If you are building on 64-bit Windows, find the "Platform" dropdown
-          and select "x64".
-
-      9.2 Find the box "Show directories for", choose "Include files", if you 
-          can not find your Zlib and Szip header path (for example, 
-          c:\zlib\include, c:\szip\include) from the directory list, add the 
-          header path (c:\zlib\include, c:\szip\include) to the included 
-          directories.
-
-      9.3 Find the box "Show directories for", choose "Library files".  If you 
-          cannot find your Zlib and Szip library path (for example, 
-          c:\zlib\dll, c:\szip\dll) from the directory list, add the library 
-          path (c:\zlib\dll, c:\szip\dll) to the library directories.
-          
-      9.4 If building Fortran libraries, you will also need to setup the path
-          for the Intel Fortran compiler.  Please see Section VI.
-          
-      NOTE:
-          If you are using VS2010, the path settings will need to be in project
-          property sheets per project. Go to "Project" and select "Properties", find 
-          "Configuration Properties", and then "VC++ Directories".
-          
-          9.1 If you are building on 64-bit Windows, find the "Platform" dropdown
-              and select "x64".
-          9.2 Add the header path to the "Include Directories" setting.
-          9.3 Add the library path to the "Library Directories" setting.
-
-Notes:
-
-   1. As of 1.8.0, all.zip is deprecated. Users should go to hdf5/windows 
-      directory, run copy_hdf.bat first and then open all.sln under 
-      hdf5/windows/proj/all to start building process.
-
-   2. Visual Studio 6.0 is no longer supported in HDF5 1.8 or later releases.
-      Visual Studio .NET is no longer support in HDF5 1.8.4 or later releases.
-      Visual Studio 2005 is no longer support in HDF5 1.8.5 or later releases.
-      Intel Fortran 9.1 is no longer support in HDF5 1.8.5 or later releases.
-
-   3. For users who want to quickly build HDF5 library or do not want to know 
-      HDF5 building and installation details, please read the 
-      INSTALL_Windows_Short_2008.txt relating to your compiler.
-
-   4. For users who would like to build and test HDF5 package from the command 
-      line, please read INSTALL_Windows_From_Command_Line.txt.
-
-   5. For users who would like to build and test HDF5 package using CMake, 
-      please read CMake.txt.
-
-   6. HDF4-related tools are not built and released with HDF5 library packages 
-      any more. To obtain HDF4 related tools, please check
-      http://hdfgroup.org/h4toh5/ and ftp://ftp.hdfgroup.org/HDF5/h4toh5
-
-   7. For Fortran users, Intel Fortran Compiler 10.1 is currently supported
-      -- please see Section VI.  Intel Compiler verion 7.x, 8.x and 9.x are 
-      no longer supported. Intel Compiler 11.1 can be used but the project files
-      must be upgraded within the Visual Studio IDE. 
-
-   8. Visual Studio now only builds muti-threaded versions of HDF5 library, 
-      please read Section VII.
-      
-
-========================================================================
-                 Section I: What do we build and install?
-========================================================================
-
-   1. Build and Install
-
-      HDF5 static library:
-           debug and release version
-
-      HDF5 Dynamic Link Library(DLL):
-           debug and release version as well as export libraries for DLL
-
-      HDF5 High-Level Library (Optional):
-           HDF5 C++ Library
-           HDF5 HL-Fortran Library
-
-      HDF5 tools:
-           HDF5 tools
-
-   2. Build Only (Not included in the binary distribution)
-
-      HDF5 tool library:
-           debug and release version
-
-      HDF5 tool export library for DLL:
-           debug and release version
-
-      HDF5 library testing programs:
-           HDF5 library comprehensive tests
-
-      HDF5 related tools testing programs:
-           HDF5 tools comprehensive tests
-
-   3. Examples (Not included in the binary distribution)
-
-      HDF5 examples:
-           Simple HDF5 C/C++/Fortran and High level C/Fortran examples
-
-========================================================================
-      Section II: How to build and test HDF5 libraries and tools
-========================================================================
-
-Note:
-      To build and test HDF5 with Fortran support, please read over Section VI.
-
-      
-STEP 1: Building HDF5 Libraries and Tools
-
-      
-   1. Run batch file copy_hdf.bat
-
-      Go to  c:\MyHDFstuff\hdf5\windows and run copy_hdf.bat. This process will 
-      copy all the necessary batch files, Windows-specific source code and 
-      text files saved under c:\MyHDFstuff\hdf5\windows directory to the 
-      corresponding directories under hdf5.
-
-   2. Open the HDF5 library project in Visual Studio
-
-      Invoke Microsoft Visual Studio.  From the main menu, go to "File" and 
-      select the "Open Solution" option. Then open the
-      c:\MyHDFstuff\hdf5\windows\proj\all\all.sln solution.
-
-      You should find Windows project files listed as "all", "big", etc. on the
-      left.
-
-   3. (Optional) Disable HDF5 C++ and High level C++
-   
-      In HDF5 1.8, C++ and HL C++ libraries are built by default.  To opt-out,
-      you must explicitly disable them.
-
-      3.1 Skip this step if you do want to build HDF5 High-Level C++ libraries
-
-          Go to "Project" and select "Project Dependencies".  Select "all", and 
-          disable all of the following projects:
-
-            hdf5_hl_cpp
-            hdf5_hl_cppdll
-            hl_test_table_cpp
-            hl_test_table_cppdll
-      
-      3.2 Skip this step if you do want to build HDF5 High-Level libraries
-
-          Go to "Project" and select "Project Dependencies".  Select "all", and 
-          disable all of the project files listed in the previous step, as well
-          as the following projects:
-
-             hdf5_hl
-             hdf5_hldll
-             hl_test_image
-             hl_test_imagedll
-             hl_test_lite
-             hl_test_litedll
-             hl_test_table
-             hl_test_tabledll
-             hl_test_ds
-             hl_test_dsdll
-             hl_test_packet
-             hl_test_packetdll
-             
-       Note: Disabling some projects will likely produce false errors in the
-             testing script.  Check the output carefully to ensure that the
-             errors are related to the disabled projects, and then safely
-             ignore them.
-
-
-   4. Select "Build", then Select "Configuration Manager".
-
-      4.1 To build debug static libraries, debug multithreaded DLLs, and tests:
-
-      In "Active Solution Configuration", select "Debug". Select "Close". 
-      Select "Build" -> "Build Solution" or "Rebuild Solution" to build debug 
-      version of project "all".
-
-      4.2 To build release static libraries, multithreaded DLLs and tests:
-
-      In "Active Solution Configuration", select "Release". Select "Close". 
-      Select "Build" -> "Build Solution" or "Rebuild Solution" to build release 
-      version of project "all".
-
-      Release version must be built for testing, debug version is optional.
-
-      Warning messages can be ignored.
-
-      When the debug or release build is done the directories
-      listed below will contain the following files:
-
-            c:\MyHDFstuff\hdf5\proj\hdf5\debug -
-
-               hdf5d.lib- the hdf5 static library
-
-            c:\MyHDFstuff\hdf5\proj\hdf5\release -
-
-               hdf5.lib- the hdf5 static library
-
-            c:\MyHDFstuff\hdf5\proj\hdf5dll\debug -
-
-               hdf5ddll.dll- DLL
-               hdf5ddll.lib- the DLL export library
-
-            c:\MyHDFstuff\hdf5\proj\hdf5dll\release -
-
-               hdf5dll.dll- DLL
-               hdf5dll.lib- the DLL export library
-
-            c:\MyHDFstuff\hdf5\test\libtest\debug -
-        and c:\MyHDFstuff\hdf5\test\libtest\release -
-
-               libtest.lib - the internal library for test
-
-            c:\MyHDFstuff\hdf5\test\libtestdll\debug -
-
-               libtestddll.dll - the internal DLL for test
-               libtestddll.lib - the internal DLL export library for test
-
-            c:\MyHDFstuff\hdf5\test\libtestdll\release -
-
-               libtestdll.dll - the internal DLL for test
-               libtestdll.lib - the internal DLL export library for test
-
-            c:\MyHDFstuff\hdf5\tools\toolslib\debug -
-        and c:\MyHDFstuff\hdf5\tools\toolslib\release -
-
-               toolslib.lib- the internal tools library
-
-            c:\MyHDFstuff\hdf5\tools\toolslibD\debug -
-        and c:\MyHDFstuff\hdf5\tools\toolslibD\release -
-
-               toolslibD.dll- DLL
-               toolslibD.lib- the internal DLL export library for tools
-
-            c:\MyHDFstuff\hdf5\tools\"tools directory"-
-            where tools are located
-
-       The directories listed below will contain the following files
-       ONLY when you choose to build HDF5 C++ libraries:
-
-            c:\MyHDFstuff\hdf5\proj\hdf5_cpp\debug -
-
-                hdf5_cppd.lib- the HDF5 C++ API static library
-
-        and c:\MyHDFstuff\hdf5\proj\hdf5_cpp\release -
-
-               hdf5_cpp.lib- the HDF5 C++ API static library
-
-            c:\MyHDFstuff\hdf5\proj\hdf5_cppdll\debug -
-
-               hdf5_cppddll.dll- the HDF5 C++ API DLL
-               hdf5_cppddll.lib - the C++ API export library
-
-        and c:\MyHDFstuff\hdf5\proj\hdf5_cppdll\release -
-
-               hdf5_cppdll.dll- the HDF5 C++ API DLL
-               hdf5_cppdll.lib- the C++ API DLL export library
-
-
-       The directories listed below will contain the following files
-       ONLY when you choose to build HDF5 High Level libraries:
-
-            c:\MyHDFstuff\hdf5\proj\hdf5_hl\Release -
-               hdf5_hl.lib  - HDF5 High Level static Library
-
-        and c:\MyHDFstuff\hdf5\proj\hdf5_hl\Debug -
-
-               hdf5_hld.lib - HDF5 High Level Static Library
-
-           c:\MyHDFstuff\hdf5\proj\hdf5_hldll\Release -
-               hdf5_hldll.dll - HDF5 High Level DLL
-               hdf5_hldll.lib - HDF5 High Level export Library
-
-       and c:\MyHDFstuff\hdf5\proj\hdf5_hldll\Debug -
-
-               hdf5_hlddll.dll - HDF5 High Level DLL
-               hdf5_hlddll.lib - HDF5 High Level export Library
-
-       The directories listed below will contain the following files
-       ONLY when you choose to build HDF5 High Level C++ libraries:
-
-            c:\MyHDFstuff\hdf5\proj\hdf5_hl_cpp\Release -
-
-               hdf5_hl_cpp.lib - HDF5 High Level C++ Static Library
-
-        and c:\MyHDFstuff\hdf5\proj\hdf5_hl_cpp\Debug -
-
-               hdf5_hl_cppd.lib - HDF5 High Level C++ Static Library
-
-            c:\MyHDFstuff\hdf5\proj\hdf5_hl_cppdll\Release -
-        and c:\MyHDFstuff\hdf5\proj\hdf5_hl_cppdll\Debug -
-
-               hdf5_hl_cppddll.dll - HDF5 High Level C++ DLL
-               hdf5_hl_cppddll.lib - HDF5 High Level C++ export Library
-
-
-STEP 2: Testing HDF5 Libraries and Tools
-
-HDF5 libraries and tools should be tested to make sure that they were built 
-correctly.
-
-Note:   The complete testing suite can take a long time to run on even fast
-        machines.  Some of the longer tests can be automatically shortened by
-        defining an environment variable HDF5TestExpress.  Set HDF5TestExpress
-        to 3 for fastest, or 0 for slowest.  For example:
-        
-            set HDF5TestExpress=3
-            
-        If the variable is unset, it takes on the value 1.  Note that when
-        HDF5TestExpress is set to 2 or 3, some features may not be thoroughly
-        tested.  For most users, we recommend not setting this variable.
-        
-
-We provide 2 options for users to test HDF5 libraries and tools.
-
-   Option 1: Automatic testings
-
-   HDF5 comes with various test suites, all of which can be tested with 
-   hdf5check.bat batch file in c:\MyHDFstuff\hdf5 directory.
-
-   hdf5check batch file can be run with one of the following four options:
-
-      hdf5check                  Test HDF5 C library and tools only.
-
-      hdf5check enablecpp        Test HDF5 C/C++ libraries and tools.  To use 
-                                 this option, HDF5 C++ libraries must have been 
-                                 built in step I.
-
-      hdf5check enablefortran    Test HDF5 C/Fortran libraries and tools.  To 
-                                 use this option, HDF5 Fortran libraries must 
-                                 have been built in Section VI.
-
-      hdf5check enableall        Test HDF5 C/C++/Fortran libraries and tools.
-                                 To use this option, HDF5 C++ and Fortran 
-                                 libraries must have been built.
-
-      nodebug                    -- can be added to any of the above to 
-                                    not test debug versions
-                                            
-   Invoke a command prompt window and run hdf5check with appropriate option.
-   Users are encouraged to pipe the test output into a file.  You should find
-   no "*FAILED*" marks.
-
-   Option 2: Step-by-step HDF5 libraries and tools testings
-
-   You can also test HDF5 libraries and tools one by one.  There are possibly 
-   four versions of HDF5 libraries and tools testings.
-
-   They are:
-
-      release
-      release dll
-      debug
-      debug dll
-
-   We strongly suggest you to redirect your testing results into an output file 
-   so that you can easily check the testing results.
-
-   HDF5 DLLs should be placed into the Windows system directory.  A batch file 
-   named install_dll.bat is included in c:\MyHDFstuff\hdf5 directory.  Run this 
-   batch file and all neccessary HDF5 DLLS will be placed in the system
-   directory.
-   
-   
-   1. HDF5 library testing
-
-      Open a command prompt in the hdf5\test directory
-
-         (1) Basic tests
-
-             a) Release Static, type:
-                checktests release >"Your output filename"
-
-             b) Release DLL, type:
-                checktests release dll >"Your output filename"
-
-             c) Debug Static, type:
-                checktests debug >"Your output filename"
-
-             d) Debug DLL, type:
-                checktests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-                
-   2. HDF5 performance testing
-
-      Open a command prompt in the hdf5\perform directory
-   
-             a) Release Static, type:
-                checkperformtests release >"Your output filename"
-
-             b) Release DLL, type:
-                checkperformtests release dll >"Your output filename"
-
-             c) Debug Static, type:
-                checkperformtests debug >"Your output filename"
-
-             d) Debug DLL, type:
-                checkperformtests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-   3. HDF5 tools testing
-
-      Open a command prompt in the hdf5\tools directory
-
-         a) Release Static, type:
-            checktools release >"Your output filename"
-
-         b) Release DLL, type:
-            checktools release dll >"Your output filename"
-
-         c) Debug Static, type:
-            checktools debug >"Your output filename"
-
-         d) Debug DLL, type:
-            checktools debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-   4. HDF5 C++ library test
-
-      Skip this step UNLESS you have built HDF5 C++ libraries and want to test 
-      them.
-
-      Open a command prompt in the hdf5\c++\test directory
-
-         a) Release Static, type:
-            checkcpptests release >"Your output filename"
-
-         b) Release DLL, type:
-            checkcpptests release dll >"Your output filename"
-
-         c) Debug Static, type:
-            checkcpptests debug >"Your output filename"
-
-         d) Debug DLL, type:
-            checkcpptests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-    4. HDF5 High-Level library test
-
-    Skip this step UNLESS you have built HDF5 High-Level libraries and want to 
-    test them.
-
-      Open a command prompt in the hdf5\hl\test directory
-
-         a) Release Static, type:
-            checkhltests release >"Your output filename"
-
-         b) Release DLL, type:
-            checkhltests release dll >"Your output filename"
-
-         c) Debug Static, type:
-            checkhltests debug >"Your output filename"
-
-         d) Debug DLL, type:
-            checkhltests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-    5.  HDF5 High-Level C++ library test
-
-    Skip this step UNLESS you have built HDF5 High-Level C++ libraries and want 
-    to test them.
-
-      Open a command prompt in the hdf5\hl\c++\test directory
-
-         a) Release Static, type:
-            checkhlcpptests release >"Your output filename"
-
-         b) Release DLL, type:
-            checkhlcpptests release dll >"Your output filename"
-
-         c) Debug Static, type:
-            checkhlcpptests debug >"Your output filename"
-
-         d) Debug DLL, type:
-            checkhlcpptests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-    Note: See Section VI for instructions on testing Fortran libraries.
-      
- STEP 3: Installing HDF5 Libraries
-
-We provide a batch file for users to relocate all HDF5 libraries in one folder 
-(C++ and Fortran libraries will also be copied into this folder if they have 
-been built in step I or Section VI, respectively).  The file is called 
-installhdf5lib.bat under c:\MyHDFstuff\hdf5 directory.  Run the batch file, you 
-may see a folder called hdf5lib under c:\MyHDFstuff\hdf5.
-
-The <release> layout of <hdf5lib> should be:
-
-   release\include   --  HDF5 header files
-   release\bin       --  HDF5 static tool executables
-   release\bindll    --  HDF5 DLL tool executables
-   release\lib       --  HDF5 static libraries
-   release\dll       --  HDF5 DLLs
-
-You may also find the similar layout for the <debug>.
-
-========================================================================
-                 Section III: How To Build Examples (Optional)
-========================================================================
-
-Simple examples have been provided for users to test HDF5 C/C++/Fortran and 
-High level C/Fortran library and tools.
-
-Note:
-      1) To build HDF5 C++ examples, HDF5 C++ library must have been built in 
-         Step I.
-
-      2) To build HDF5 Fortran or HL Fortran examples, please see Section VI, 
-         Step 3.
-
-      3) To build HDF5 High Level C examples, HDF5 High level library must have 
-         been built in step I.
-
-      4) By default, the debug versions of HDF5 C/C++/HL examples are linked 
-         with the debug versions of HDF5 C/C++/HL libraries and DLLs.  The 
-         debug versions of HDF5 C/C++/HL examples will fail if they are linked 
-         with HDF5 binary distribution, which only includes the release 
-         versions of HDF5 C/C++ libraries and DLLs.
-
-To build and test HDF5 C examples:
-----------------------------------
-   1. Invoke Microsoft Visual Studio, go to "File" and select the "Open 
-      Solution" option.
-
-      Then open the solution
-      c:\MyHDFstuff\hdf5\windows\examples\allexamples\allexamples.sln.
-
-   2. Select "Build", and "Configuration Manager".
-
-       2.1 To build debug versions of C examples:
-       
-          In "Active Solution Configuration", select "Debug". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          debug version of project "allexamples".
-
-       2.2 To build release versions of C examples.
-       
-          In "Active Solution Configuration", select "Release". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          release version of project "allexamples".
-
-      When the debug and release build is done, there should be the following 
-      subdirectories in c:\MyHDFstuff\hdf5\examples\
-
-          attributetest
-          attributetestdll
-          chunkread
-          chunkreaddll
-          compoundtest
-          compoundtestdll
-          extendwritetest
-          extendwritetestdll
-          grouptest
-          grouptestdll
-          readtest
-          readtestdll
-          selectest
-          selectestdll
-          writetest
-          writetestdll
-
-   3. Invoke a command prompt window and run the batch file InstallExamples.bat 
-      which resides in the top level directory (c:\MyHDFstuff\hdf5).  This file 
-      creates 4 new directories, examplesREL, examplesRELDLL, examplesDBG, and 
-      examplesDBGDLL, in the c:\MyHDFstuff\hdf5\examples directory and places 
-      all the executables in it.  Both the release and debug versions of the
-      examples should be built before this step is done.
-
-   4. We provide a batch file named testExamples.bat and an expected examples 
-      tests output file named testExamples_exp_output.txt in 
-      c:\MyHDFstuff\hdf5\examples directory for you to test HDF5 C examples.
-
-      testExamples.bat batch file has 4 options:
-
-         testExamples release     -- for release version
-
-         testExamples release dll -- for release DLL version
-
-         testExamples debug       -- for debug version
-
-         testExamples debug dll   -- for debug DLL version
-
-      Invoke a command prompt and run testExamples.bat with appropriate options.
-      You should get "All HDF5 C examples tests passed." when the C examples are
-      built successfully.  Otherwise, the difference between the expected 
-      outputs and actual outputs will be given.
-
-To build and test HDF5 C++ examples:
-------------------------------------
-
-   1. Invoke Microsoft Visual Studio, go to "File" and select the "Open 
-      Solution" option.
-
-      Then open the solution
-      c:\MyHDFstuff\hdf5\windows\examples\allexamples\allcppexamples.sln.
-
-   2. Select "Build", and "Configuration Manager".
-
-       2.1 To build debug versions of C examples:
-       
-          In "Active Solution Configuration", select "Debug". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          debug version of project "allcppexamples".
-
-       2.2 To build release versions of C examples.
-       
-          In "Active Solution Configuration", select "Release". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          release version of project "allcppexamples".
-
-   When the debug build or release build is done, there should be the following 
-   subdirectories in c:\MyHDFstuff\hdf5\c++\examples\
-
-          chunks
-          chunksdll
-          compound
-          compounddll
-          create
-          createdll
-          extend_ds
-          extend_dsll
-          h5group
-          h5groupdll
-          readdata
-          readdatadll
-          writedata
-          writedatadll
-
-   3. Invoke a command prompt window and run the batch file 
-      InstallcppExamples.bat which resides in the top level directory
-      (c:\MyHDFstuff\hdf5).  This file creates 4 new directories,
-      cppexamplesREL, cppexamplesRELDLL, cppexamplesDBG, and cppexamplesDBGDLL, 
-      in the c:\MyHDFstuff\c++\examples directory and places all the executables
-      in it.  Both the release and debug versions of the examples should be 
-      built before this step is done.
-
-   4. We provide a batch file named testcppExamples.bat in
-      c:\MyHDFstuff\hdf5\c++\examples directory for you to test HDF5 C++ 
-      examples.
-
-      testcppExamples.bat batch file has 4 options:
-
-         testcppExamples release     -- for release version
-
-         testcppExamples release dll -- for release DLL version
-
-         testcppExamples debug       -- for debug version
-
-         testcppExamples debug dll   -- for debug DLL version
-
-      Invoke a command prompt and run testcppExamples.bat with appropriate 
-      options.  You should get "All HDF5 C++ examples tests passed." when the 
-      C++ examples are built successfully.  Otherwise, the difference between 
-      the expected outputs and actual outputs will be given.
-
-
-To build and test HDF5 High Level C examples:
----------------------------------------------
-
-   1. Invoke Microsoft Visual Studio, go to "File" and select the "Open 
-      Solution" option.
-
-      Then open the solution
-      c:\MyHDFstuff\hdf5\windows\hl\examples\allhlcexamples\allhlcexamples.sln
-
-   2. Select "Build", and "Configuration Manager".
-
-       2.1 To build debug versions of C examples:
-       
-          In "Active Solution Configuration", select "Debug". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          debug version of project "allhlcexamples".
-
-       2.2 To build release versions of C examples.
-       
-          In "Active Solution Configuration", select "Release". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          release version of project "allhlcexamples".
-
-      When the debug and release build is done, binaries will be built in the
-      following subdirectories of c:\MyHDFstuff\hdf5\examples\
-
-          ex_image[1-2](dll)
-          ex_lite1(dll)
-          ex_table[01-12](dll)
-          ex_ds1(dll)
-          ptExample[FL+VL](dll)
-
-   3. Invoke a command prompt and run the batch file Install_hlcexamples.bat 
-      which resides in the top level directory (c:\MyHDFstuff\hdf5).  This file 
-      creates 4 new directories, HLCexamplesRELEASE, HLCexamplesRELEASEDLL, 
-      HLCexamplesDEBUG, and HLCexamplesDEBUGDLL, in the 
-      c:\MyHDFstuff\hdf5\hl\examples directory and places all the executables in
-      it. Both the release and debug versions of the examples should be built 
-      before this step is done.
-
-   4. We provide a batch file named test_hl_cexamples.bat in 
-      c:\MyHDFstuff\hdf5\hl\examples directory for you to test HDF5 high level C
-      examples.
-
-      test_hl_cexamples.bat batch file has 4 options:
-
-         Options                        purpose
-
-         test_hl_cexamples release      -- for release version
-
-         test_hl_cexamples release dll  -- for release DLL version
-
-         test_hl_cexamples debug        -- for debug version
-
-         test_hl_cexamples debug dll    -- for debug DLL version
-
-      Invoke a command prompt window and run test_hl_cexamples with
-      appropriate options.
-
-      Invoke a command prompt and run testExamples.bat with appropriate options.
-      You should get "All of the HL C Examples Passed!" when the HL C examples 
-      are built successfully.  Otherwise, the difference between the expected 
-      outputs and actual outputs will be given.
-      
-
-========================================================================
-   Section IV: Building an application using the HDF5 library or DLL
-========================================================================
-
-Waring: The instructions below will only describe how to build an application 
-        using the release version of the HDF5 library or DLL.  To use the debug
-        version of the HDF5 library or DLL, you need to substitute the release 
-        version of the HDF5 library or DLL with the debug version.
-
-        
-To build an application that uses the HDF5 static library the following 
-locations will need to be specified for locating header files and linking with
-the HDF static library, for example:
-
-c:\MyHDFstuff\hdf5\hdf5lib\release\include
-c:\MyHDFstuff\hdf5\hdf5lib\release\lib
-
-We assume that you will use Zlib and Szip compression with HDF5 library.
-
-1. Specifying Include Directories
-
-To specify the include directories in the settings for your Visual Studio 
-project, you may choose one of the following two methods.
-
-  Method One: Project-wide Settings
-
-    1. Open your project in Microsoft Visual Studio and make sure it is the 
-       active project.
-
-    2. Go to the Project menu and chose the "Properties" option.
-
-    3. Choose the build configuration you would like to modify in the drop 
-       down menu labeled "Configuration:"
-
-    4. Choose the "C/C++" tab, and select "General".
-
-    5. In a text-area labeled with "Additional Include Directories:", add 
-       HDF5, Zlib, and Szip header files directories.  For example:
-
-          c:\MyHDFstuff\hdf5\hdf5lib\release\include
-          c:\zlib\include
-          c:\szip\include
-
-       Then click OK.
-
-    6. (Optional) To use HDF5 Fortran static library, the location of 
-       Fortran module files should be specified by following Project->
-       Settings->Fortran->Preprocessor, and in the text-area labeled 
-       "Additional Include Directories", add HDF5 Fortran module files 
-       directories.  For example:
-
-          c:\MyHDFstuff\hdf5\hdf5lib\release\include
-          
-  Method Two: Visual Studio Settings
-
-    1. In Visual STudio, go to Tools->Options->Projects->
-       VC++ Directories.  Under "Show Directories For", select "Include files"
-
-    2. Insert the correct HDF5, Zlib, Szip paths for headers(include).  For 
-       example,
-
-          c:\MyHDFstuff\hdf5\hdf5lib\release\include
-          c:\zlib\include
-          c:\szip\include
-
-    
-2. Specifying Library Directories
-
-To specify the library directories in the settings for your Visual Studio 
-project, you may choose one of the following two methods.
-
-  Method One: Project-wide Settings
-
-    1. Open your project in Microsoft Visual Studio and make sure it is the 
-       active project.
-
-    2. Go to the Project menu and chose the "Properties" option.
-
-    3. Choose the build configuration you would like to modify in the drop 
-       down menu labeled "Configuration:"
-
-    4. Choose the "Linker" tab, and select "General".
-
-    5. In a text-area labeled with "Additional Library Directories:", add 
-       HDF5, Zlib, and Szip library files directories.  For example:
-
-          c:\MyHDFstuff\hdf5\hdf5lib\release\lib
-          c:\zlib\dll
-          c:\szip\dll
-          
-      Note: To link with HDF5 DLLs rathern that static libraries, simply
-            specify the "dll" directory rather than "lib", and link with the
-            corresponding DLL link library below.
-
-       Then click OK.
-
-          
-  Method Two: Visual Studio Settings
-
-    1. In Visual STudio, go to Tools->Options->Projects->
-       VC++ Directories.  Under "Show Directories For", select "Library files"
-
-    2. Insert the correct HDF5, Zlib, Szip paths for link libraries.  For 
-       example,
-
-          c:\MyHDFstuff\hdf5\hdf5lib\release\lib
-          c:\zlib\dll
-          c:\szip\dll
-          
-       Note: To link with HDF5 DLLs rathern that static libraries, simply
-            specify the "dll" directory rather than "lib", and link with the
-            corresponding DLL link library below.
-
-    
-3. Specifying Libraries to Link
-
-  To link the HDF5 static library with your application:
-
-    1. In Visual Studio, go to the Project menu and choose "Properties".
-
-    2. Find the "Link" option and "Input" category.  In the "Additional
-       Dependencies" field, insert "zlib.lib, libszip.lib, hdf5.lib".
-
-    3. (Optional) Also insert "hdf5_cpp.lib" if you want to use HDF5 C++ 
-       static library.
-
-    4. (Optional) Also insert "hdf5_fortran.lib" if you want to use HDF5 
-       Fortran static library.
-
-    5. (Optional) Also insert "hdf5_hl.lib" if you want to use HDF5 high 
-       level static library.
-
-    6. (Optional) Also insert "hdf5_hl_cpp.lib" if you want to use HDF5 High
-       Level C++ static library.
-
-    7. (Optional) Also insert "hdf5_hl_fortran.lib" if you want to use HDF5 
-       High Level Fortran static library.
-
-
-  To link the HDF5 DLL library with your application:
-
-    1. Follow the steps for linking the HDF5 static library as shown above,
-       except now link the export library that is created with the DLL.
-       
-       The export library is called hdf5dll.lib for HDF5 C libray,
-       hdf5_cppdll.lib for HDF5 C++ library, and hdf5_fortrandll.lib
-       for HDF5 Fortran library.
-       
-    2. In the Project Properties dialog, go to the C/C++ > Preprocessor
-       subsection.  In the "Preprocessor Definitions" box, add "_HDF5USEDLL_"
-       to the list.
-       
-    3. (Optional) Also add HDF5CPP_USEDLL to use HDF5 C++ DLL.
-
-    4. (Optional) Also add _HDF5USEHLDLL_ to use HDF5 high level DLL.
-
-    5. (Optional) Also add HDF5USE_HLCPPDLL use HDF5 high level C++ DLL.
-
-    6. (Optional) Follow Project->Settings->Fortran->Category->General->
-       Predefined Preprocess or Symbols, and add "HDF5F90_WINDOWS" to use HDF5 
-       Fortran DLL.
-
-    7. Place the DLLs in a location that Windows will be able to locate.  The 
-       searched path and order for DLL's is
-
-       a) The directory where the executable module for the current
-          process is located.
-       b) The current directory.
-       c} The Windows system directory. The GetSystemDirectory function
-          retrieves the path of this directory.
-       d) The Windows directory. The GetWindowsDirectory function
-          retrieves the path of this directory.
-       e) The directories listed in the PATH environment variable.
-
-========================================================================
-         Section V: How to disable Gzip(Zlib)/Szip compression
-========================================================================
-
-Warning: When you modify the H5pubconf.h file as described below, DO NOT just 
-         change the values of these macros from 1 to 0.  Please DO remove (or 
-         comment out) appropriate lines.
-
-   Notes:
-
-   To disable Gzip and Szip at the same time, just make the appropriate
-   modifications to H5pubconf.h and the environmental variables all together,
-   and then Run-compile.
-   
-   These instructions assume that copy_hdf.bat has already been run in Section
-   II.  If you can't find H5pubconf.h file in the specified directory, please
-   verify that this script has been run.
-         
-   1. Disable Gzip (Zlib) Compression
-
-      If you would like to remove Gzip compression from the HDF5 library, follow
-      the steps below.
-
-      1.1 Open the H5pubconf.h file from the c:\MyHDFstuff\hdf5\src directory 
-          and remove (or comment out) the following two lines:
-
-             #define H5_HAVE_ZLIB_H 1
-             #define H5_HAVE_FILTER_DEFLATE 1
-
-          Then save the file.
-
-      1.2 Delete HDF5_EXT_ZLIB environment variable if you have set it in 
-          preconditions.
-
-      1.3 Run-compile HDF5 library according to Section II.
-
-          When you disable Gzip, you may get the following message when building 
-          HDF5 libraries: "The following environment variables were not found: 
-          $(HDF5_EXT_ZLIB)". This message can be ignored.
-
-   2. Disable Szip Compression (both encoder and decoder)
-
-      If you would like to remove Szip compression from the HDF5 library, follow
-      the steps below.
-
-      2.1 Open the H5pubconf.h file from the c:\MyHDFstuff\hdf5\src directory 
-          and remove (or comment out) the following two lines:
-
-             #define H5_HAVE_SZLIB_H 1
-             #define H5_HAVE_FILTER_SZIP 1
-
-          Then save the file.
-
-      2.2 Delete HDF5_EXT_SZIP environment variable if you have set it in 
-          preconditions.
-
-      2.3 Run-compile HDF5 library according to Section II.
-
-          When you disable Szip, you may get the following message when building 
-          HDF5 libraries: "The following environment variables were not found:
-          $(HDF5_EXT_SZIP)".  This message can be ignored.
-
-   3. Disable Szip Encoder
-
-      If you would like to just disable Szip encoder from the HDF5
-      library while keeping Szip decoder enabled, follow the steps
-      below.
-
-      3.1 Download Szip library without encoder
-
-          Szip library is different if you want to disable Szip encoder.  
-          Download szip-noenc binaries from
-          ftp://ftp.hdfgroup.org/lib-external/szip/2.1/bin/windows.  The Szip 
-          library and header path should also be set up accordingly (refer to 
-          precondition 6).
-
-      3.2 Run-compile HDF5 library according to Section II.  The encoding
-          functionality is detected dynamically.
-
-========================================================================
-          Section VI: How to build HDF5 with Fortran Support
-========================================================================
-
-Notes:  1. For Intel Compiler users, Intel fortran Compiler10.1 is 
-        currently supported.  Intel Compiler verion 7.x, 8.x and 
-        9.x are no longer supported. Intel Compiler 11.1 can be used, however
-        the fortran project files must be upgraded from within the IDE.
-
-        2. The Compaq Fortran Compiler is no longer supported for HDF5 1.8.
-
-        3. Visual Studio 2008 is supported only with Intel Fortran 10.1 and 11.1.
-        
-        4. Parallel builds should be disabled.  To do so: Go to  Tools > 
-           Options > Projects and Solutions > Build and Run. Set "Maximum Number
-           of Parallel Project Builds" to 1.
-        
-
-  Preconditions:
-
-     a. Setup Szip Library for Intel Compiler.
-
-     Szip source codes or binaries for Windows compilers can be downloaded
-     from the following address:
-
-     ftp://ftp.hdfgroup.org/lib-external/szip/2.1/bin/windows.
-
-     b. Set up path for external libraries and headers
-
-      Skip this part if you don't want to use ANY compression features
-      provided by HDF5.  Instead, read Section V.
-
-      You have to read this part even if you want to use only Zlib
-      or Szip.  You also need to read Section V.
-
-        1) Invoke Microsoft Visual Studio 2008.
-        
-        2) From the main menu, Go to Tools > Options > Intel(R) Fortran. In the 
-           right panel, make sure your "Selected Compiler" is Intel Fortran.
-      
-        3) Select the right-most box for "Libraries", and add Zlib and Szip 
-           library paths (c:\zlib\dll, c:\szip\dll for example).
-      
-        4) Select right-most box for "Includes", and add Zlib and Szip header 
-           paths (c:\zlib\include c:\szip\include, for example).
-           
-        5) Then click "OK".
-
-      
-1. Build with Intel Fortran Compiler 10.1 under Visual Studio 2008
-
-  Note: This step will build HDF5 Static and DLL C and C++ Library using
-        Visual Studio compiler as well as HDF5 Static and High Level 
-        Fortran Library using Intel Fortran 10.1 Compiler.
-
-  1.1 Open all_fortran.sln
-
-      Invoke Microsoft Visual Studio.  From the main menu, 
-      go to "File" and select "Open Solution".  Choose "all_fortran.sln" 
-      under the directory c:\MyHDFstuff\hdf5\windows\proj\all_fortran.
-
-
-  1.2 Build as Normal
-
-    Follow steps as in Section II to build all HDF5 library files, including
-    Fortran and HL Fortran libraries.
-
-
-2. Test HDF5 Static and High Level Fortran Library
-
-    We provide 2 options for users to test HDF5 libraries and tools.
-
-    Option 1: Automatic testings
-
-       HDF5 comes with various test suites, all of which can be tested with 
-       hdf5check.bat batch file in c:\MyHDFstuff\hdf5 directory.
-
-       hdf5check batch file can used to test HDF libraries with Fortran with
-       the following options:
-
-          hdf5check enablefortran    Test HDF5 C/Fortran libraries and tools
-
-
-          hdf5check enableall        Test HDF5 C/C++/Fortran libraries and tools
-                                     To use this option, HDF5 C++ and Fortran 
-                                     libraries must have been built.
-
-       Invoke a command prompt window and run hdf5check with appropriate option.
-       Users are encouraged to redirect their ouput into a file.  There should
-       be no "*FAILED*" marks.
-       
-    Option 2: Step-by-step HDF5 libraries and tools testings
-
-       Note: This section provides step-by-step instructions for testing the
-       Fortran librariy and tools only.  To test the rest of the HDF5 library
-       and tools, please see Section II, Step 2.
-       
-       
-       a. Test HDF5 Static Fortran Library
-
-      Open a command prompt in the hdf5\fortran\test directory
-      
-         a) Release Static, type:
-            checkfortrantests release >"Your output filename"
-
-         b) Release DLL, type:
-            checkfortrantests release dll >"Your output filename"
-
-         c) Debug Static, type:
-            checkfortrantests debug >"Your output filename"
-
-         d) Debug DLL, type:
-            checkfortrantests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-       b. Test HDF5 High Level Fortran Library
-
-      Open a command prompt in the hdf5\hl\fortran\test directory
-
-         a) Release Static, type:
-            checkhlfortrantests release >"Your output filename"
-
-         b) Release DLL, type:
-            checkhlfortrantests release dll >"Your output filename"
-
-         c) Debug Static, type:
-            checkhlfortrantests debug >"Your output filename"
-
-         d) Debug DLL, type:
-            checkhlfortrantests debug dll >"Your output filename"
-
-      Use a text editor to check results. You should not find any FAILED marks 
-      in your output files.
-
-
-3. (Optional) Build HDF5 Fortan and HL Fortran Examples
-
-    Note: This section only covers building Fortran and HL Fortran examples.
-    For other examples, please see Section III.
-    
-    To build and test HDF5 Fortran example:
-    ---------------------------------------
-
-       1. Open allf90examples.sln
-
-          Invoke Microsoft Visual Studio.  From the main menu, 
-          go to "File" and select "Open Solution".  Choose "allf90examples.sln" 
-          under the directory 
-          c:\MyHDFstuff\hdf5\windows\fortran\examples\allf90examples.
-
-       2. Select "Build", then Select "Configuration Manager".
-
-        2.1 To build debug versions of Fortran examples.
-
-          In "Active Solution Configuration", select "Debug". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          debug version of project "allf90examples".
-
-        2.2 To build release versions of Fortran examples.
-
-          In "Active Solution Configuration", select "Release". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          release version of project "allf90examples".
-          
-       When the debug build or release build is done, there should be the
-       following subdirectories in c:\MyHDFstuff\hdf5\fortran\examples\
-
-              attreexampletest
-              attreexampletestdll
-              compoundtest
-              compoundtestdll
-              dsetexampletest
-              dsetexampletestdll
-              fileexampletest
-              fileexampletestdll
-              groupexampletest
-              groupexampletestdll
-              grpdsetexampletest
-              grpdsetexampletestdll
-              grpittest
-              grpittestdll
-              grpsexampletest
-              grpsexampletestdll
-              hyperslabtest
-              hyperslabtestdll
-              mountexampletest
-              mountexampletest
-              refobjexampletest
-              refobjexampletestdll
-              refregexampletest
-              refregexampletestdll
-              rwdsetexampletest
-              rwdsetexampletestdll
-              selecteletest
-              selecteletestdll
-
-       3. Invoke a command prompt and run the batch file Installf90Examples.bat 
-          which resides in the top level directory (c:\MyHDFstuff\hdf5).  This 
-          file creates 4 new directories, f90examplesREL, f90examplesRELDLL, 
-          f90examplesDBG, and f90examplesDBGDLL, in the 
-          c:\MyHDFstuff\fortran\examples directory and places all the 
-          executables in it.  Both the release and debug versions of the 
-          examples should be built before this step is done.
-          
-          
-    To build and test HDF5 High Level Fortran examples:
-    ---------------------------------------------------
-
-       1. Open allhlf90examples.sln
-
-          Invoke Microsoft Visual Studio.  From the main menu, 
-          go to "File" and select "Open Solution".  Choose 
-          "allhlf90examples.sln" under the directory 
-          c:\MyHDFstuff\hdf5\windows\hl\fortran\examples\allhlf90examples.        
-
-       2. Select "Build", then Select "Configuration Manager".
-
-        2.1 To build debug versions of Fortran examples.
-
-          In "Active Solution Configuration", select "Debug". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          debug version of project "allhlf90examples".
-
-        2.2 To build release versions of Fortran examples.
-
-          In "Active Solution Configuration", select "Release". Select "Close". 
-          Select "Build" -> "Build Solution" or "Rebuild Solution" to build 
-          release version of project "allhlf90examples".
-
-        When the debug build or release build is done, there should be the
-        following subdirectories in c:\MyHDFstuff\hdf5\hl\fortran\examples
-
-              ex_lite
-              ex_litedll
-
-       3. Invoke a command prompt and run the batch file 
-          Install_hlf90examples.bat which resides in the top level directory
-          (c:\MyHDFstuff\hdf5).  This file creates 4 new directories,
-          HLf90examplesRELEASE, HLf90examplesRELEASEDLL, HLf90examplesDEBUG,
-          and HLf90examplesDEBUGDLL, in the
-          c:\MyHDFstuff\hdf5\hl\fortran\examples directory and places all
-          the executables in it. Both the release and debug versions of the 
-          examples should be built before this step is done.
-
-       4. We provide a batch file named test_hl_f90examples.bat in
-          c:\MyHDFstuff\hdf5\hl\fortran\examples directory for you to test
-          HDF5 high level fortran examples.
-
-          test_hl_f90examples.bat batch file has 4 options:
-
-             Options                          purpose
-
-             test_hl_f90examples release      -- for release version
-
-             test_hl_f90examples release dll  -- for release DLL version
-
-             test_hl_f90examples debug        -- for debug version
-
-             test_hl_f90examples debug dll    -- for debug DLL version
-
-          Invoke a command prompt and run test_hl_f90examples with
-          appropriate options.
-
-          When you run "test_hl_f90examples release", the output will look
-          like:
-
-              release  version of High Level Fortran examples     PASSED
-
-          Similar messages should be generated with another three options
-          If the high level Fortran examples are built successfully.
-
-========================================================================
-   Section VII : How to build Multi-threaded version of HDF5 library
-========================================================================
-
-Notes: In Visual Studio 2008, the Single-threaded runtime libraries have been
-       depreciated, and Multi-threaded is built by default.  Therefore, no extra
-       work needs to be done to build Multi-threaded libraries in Visual Studio
-       2008. 
-   
-    
-========================================================================
-    Section VIII: How To Build And Test HDF5 With Thread-Safe Feature
-========================================================================
-
-   All of the preconditions in "Preconditions" Section at the beginning of this 
-   document also apply to this section. There are some extra preconditions for 
-   this section only as following.
-
-   Pre1. Pthread-Win32 Installed
-
-   Posix Threads for Windows is a open source free software. Users can download 
-   it from http://sources.redhat.com/pthreads-win32/.
-
-   HDF5 release 1.8 supports Pthread-Win32 2.7.0 (2005-06-04) or later. Since 
-   pthreadVC2.dll used by HDF5 1.8 is the release version dll of 
-   pthread-win32, ONLY HDF5 1.8 release dll are supported and tested on 
-   Windows XP.
-
-   Pre2. Set Path for Pthread-Win32 header and library
-
-   Invoke Microsoft Visual Studio, go to Tools->Options->Projects->VC++ 
-   Directories.
-
-   From the drop-down box under "Show directories for:",
-
-       Choose "Include files", add in the path to Pthread-Win32 header file (For 
-       example: C:\PTHREADS_WIN32\INCLUDE).
-
-       Choose "Library files", add in the path to Pthread-Winew library (For 
-       example: C:\PTHREADS_WIN32\LIB).
-
-   Pre3. Enable HDF5 Thread-safe Feature on Windows
-
-   Go to directory c:\MYHDFstuff\hdf5\windows\src, open H5pubconf.h and find the 
-   following messages and remove those comment signs referred to by those two 
-   arrows and save H5pubconf.h
-
-
-   /*Users want to build and test hdf5 library with thread safe enabled,
-     Make the following block active
-   */
-
-   /*                                            <----
-     #if defined _DLL
-     #define H5_HAVE_THREADSAFE
-     #define H5_HAVE_SYSTEM_SCOPE_THREADS 1
-     #if defined TTSAFE_H
-     #define sleep Sleep
-     #endif
-     #endif
-   */                                            <----
-
-
-   Pre4. Define Environment Variable(HDF5_EXT_PTHREAD) for PthreadVC2.lib
-
-      To define this environment variable:
-
-      Click "Start" -> "Control Panel" ->  "System" -> "Advanced" -> 
-      "Environment Variables".
-
-      If you are logged on as administrator to the local computer AND want to 
-      let all other users use these two environment variables, click "New" under 
-      "System Variables" box; otherwise, click "New" under "User Variables" box.
-
-      In the New Variable window, set
-      "Variable name" as HDF5_EXT_PTHREAD
-      "Variable value" as pthreadVC2.lib
-
-      Click OK.
-
-   pre5. Copy pthreadVC2.dll to System Directory
-
-      pthreadVC2.dll should be copied into the location that applications can 
-      find.  One suggestion is to use the c:\WINDOWS\system.
-
-
-1. Build HDF5 Release DLL with Thread-safe Feature
-
-   1.1 Run batch file copy_hdf.bat.
-
-   Go to  c:\MyHDFstuff\hdf5\windows and run copy_hdf.bat. This process will 
-   copy all the necessary batch files, Windows-specific source code and text 
-   files saved under c:\MyHDFstuff\hdf5\windows directory to the corresponding 
-   directories under hdf5.
-
-
-   1.2 Invoke Microsoft Visual Studio
-
-   Invoke Microsoft Visual Studio.  From the main menu, go to "File" and select 
-   the "Open Solution" option. Then open the
-   c:\MyHDFstuff\hdf5\windows\proj\all\all.sln workspace.
-
-   1.3 Add in Thread-safe Source Code for HDF5 Library
-
-   Expand project "hdf5dll", right click on "source" and choose "Add Files to 
-   Folder...", browse to add in file "H5TS.c" under directory 
-   c:\MYHDFSTUFF\hdf5\src.
-
-   1.4 Link to  pthreadVC2.lib
-
-   Right click on project "hdf5dll", choose "Set as Active Project".
-
-   Go to Project->Properties
-
-      On the left pane, choose "Release" to the right of "Configuration:"
-
-      Choose "Linker", choose "Input" from the left pane.
-
-      Under "Additional Dependencies", add in "$(HDF5_EXT_PTHREAD)" (No 
-      quotation marks).
-
-   Click on "OK".
-
-   1.5 Set Project Active Configurations
-
-   Go to Build->Set Active Configuration, choose "Release" under "Project 
-   Configurations:", Click "OK".
-
-   1.6 Build HDF5 Release DLL with Thread-safe Feature
-
-   Right-click on project hdf5dll and click "Build" to build HDF5 Release DLL 
-   with thread-safe feature.
-
-   Warning messages can be ignored. But there should be no failures at all.
-
-2. Test Thread-safe Feature of HDF5 Release DLL
-
-   2.1 Build Release Version of Project libtestdll
-
-   Go to Build->Set Active Configuration, choose
-   "libtestdll-Win32 Release" under "Project configurations:", Click "OK".
-
-   Go to Build->Build libtestdll.dll to build release version of Project
-   libtestdll.
-
-   2.2 Build Release Version of Project ttsafedll
-
-   Go to Build->Set Active Configuration, choose "Release" under "Project 
-   Configurations:", Click "OK".
-
-   Right-click on project ttsafedll and click "Build" to build release version 
-   of Project ttsafedll.exe.
-   
-   2.3 Install hdf5dll.dll
-
-   Invoke a comand prompt, change directory to c:\MYHDFSTUFF\hdf5, run batch 
-   file install_dll.bat to copy
-   c:\MYHDFSTUFF\hdf5\proj\hdf5dll\release\hdf5dll.dll into system directory.
-
-   2.4 Test Thread-safe Feature of HDF5 Release DLL
-
-   Set project ttsafedll as the active project file if it is not. Go to 
-   Build->Execute ttsafedll.exe, the following is the test messages users 
-   should get:
-
-       For help use: ttsafedll.exe -help
-       Linked with hdf5 version 1.8 release 0
-       Testing  -- multi-dataset creation (dcreate)
-       Testing  -- per-thread error stacks (error)
-       Testing  -- thread cancellation safety test (cancel)
-       Testing  -- multi-attribute creation (acreate)
-
-
-       All tests were successful.
-
-
-       Cleaning Up temp files...
-
-   Users who got the same messages as above have successfully built the release 
-   version of hdf5dll.dll.
-
-3. Build, Test and Install HDF5 Library and Tools
-
-   Go back to Section II, Step I(2) to Build, test and install HDF5 libary and 
-   tools.
-   
-========================================================================
-            Section IX: How to build HDF5 for 64-bit Windows
-========================================================================
-
-HDF5 can be built for 64-bit Windows in Visual Studio 2008.  
-
-Notes:
-  
-    1. Building 64-bit HDF5 from a 32-bit machine is also unsupported.  Because 
-       we generate source file H5tinit.c from a generated 64-bit executable, 
-       this must be done on a 64-bit machine.
-    
-    
-Prerequisites:
-
-    1. A 64-bit Windows machine.
-    
-    2. Microsoft Visual Studio 2008 installed with x64 Extensions.
-           
-
-Building:
-
-    Building 64-bit Windows binaries is very similar to the process for 32-bit.
-    Therefore, you may follow the instructions in Section II with the following
-    modifications.
-    
-        1. The x64 platform must be selected in the build configuration for
-           debug and release versions.  Before building, go to "Build", 
-           "Configuration Manager".  In the "Active solution platform" box, 
-           select "x64", and press "Close".
-           
-        2. 64-bit HDF5 must be built with 64-bit external libraries, unless
-           external library support is disabled.  You must add the include and
-           library paths for x64 configurations as you have in the 
-           "Prerequisites" section.  This is also true for Intel Fortran if
-           Fortran libraries are to be built.  If you do not wish to use
-           external libraries, please read Section V about disabling them.        
-        
-Testing:
-    
-    We provide a test suite to verify all libraries and tools were built
-    successfully.  This test suite should work identically on 32- and 64-bit
-    builds.  Therefore, you may follow the instructions in Section II about
-    testing.  Note that because 64-bit binaries were built, these tests must 
-    run on a 64-bit machine.
-        
-Installing:
-
-    We provide a script that will install all headers, libraries, and tools
-    into one folder, hdf5lib.  This script should work identically on 32- and 
-    64-bit  builds.  Therefore, you may follow the instructions in Section II 
-    about installing.  
-
-========================================================================
-            Section X: How to build HDF5 on Windows Vista
-========================================================================
-Building on Windows Vista is very similar to building on Windows XP, with
-some minor changes.  Therefore, follow the build instructions above, with the
-following considerations:
-
-    1. Only Visual Studio 2008 is currently supported on Windows Vista.
-              
-    2. Elevated security permissions are required to test the HDF5 libraries.
-       This is because DLLs are installed in the system directory.  To enable
-       elevated security:
-       
-            1. In the Start menu, search for "Command Prompt".  Right click on
-               the "Command Prompt" program, and select "Run as administrator."
-               
-            2. A security dialog will pop up.  Make sure you select "Continue."
-            
-            3. Test HDF5 libraries and tools as usual using "hdf5check.bat"
-               script.
-
-
-========================================================================
-            Section XI: How to build HDF5 using Visual Studio 2008
-========================================================================
-Building with Visual Studio 2008 is the default with HDF5 1.8.x.
-
-========================================================================
-            Section XII: How to build HDF5 using Visual Studio 2010
-========================================================================
-Building with Visual Studio 2010 is very similar to building with Visual Studio
-2008, with some minor changes.  Therefore, follow the build instructions above, 
-with the following considerations:
-
-    1. Visual Studio 2010 uses a new format for project files, but Visual Studio
-       2008 project files can be easily converted.  The HDF5 project files
-       will need to be converted on first use.  To do so:
-       
-       1.1. Open the HDF5 Visual Studio 2008 solution file as in Section II
-            (all.sln)
-       
-       NOTE. Intel Fortran 11.1 currently does not integrate with Visual Studio 2010.
-            
-       1.2. You will be prompted with an automatic conversion wizard.  Click
-            through, accepting the default values.  You may choose to create
-            backups of the project files, although it isn't necessary.
-            
-       1.3. When it is finished, it should state that all projects were
-            converted successfully with no errors.  Warnings can be ignored.
-            
-    2. Once the project files have been converted, build and test normally.
-       Note that the converted project files aren't backwards compatible with
-       previous versions of Visual Studio.
-
-
-========================================================================
-        Section XIII: Backwards Compatibility with HDF5 1.6
-========================================================================
-
-Several basic HDF5 functions have changed over the years as requirements on 
-the library and data format have evolved. To enable existing applications to 
-run properly, all versions of these functions have been retained; for 
-flexibility and ease-of-use, macros have been created that can be mapped 
-either globally to broad sets of function versions or on a 
-function-by-function basis to specific versions. For example, an overall 
-approach can be determined by means global setting; function-level settings 
-can then be used to override the global setting then for specific functions.
-
-To enable 1.6 API symbols in your application:
-
-    1. Build and test HDF5 normally (see Section II).
-    
-    2. Open your application in Visual Studio.  Right click on the
-       project file, and select properties.
-       
-    3. Select the C/C++ > Preprocessor pane on the left.  In the list of
-       "Preprocessor Definitions", add "H5_USE_16_API". (Note: macros in
-       the list are separated by a semi-colon.)
-       
-    4. Repeat this for each project and project configuration that uses
-       HDF5 libraries.
-       
-    5. Continue to build and test your application normally.
-
-
-========================================================================
-                            Section XIII: Misc.
-========================================================================
-
-1. Helpful Pointers
-
-Here are some helpful notes if you are not familiar with
-using the Visual C++ Development Environment.
-
-    1.1 Project name and location issues:
-
-    It is recommended that you use the given directory structure for building
-    HDF5.  However, it is possible to create your own structure.  If you must 
-    install all.sln and all.vcproj in another directory, relative to hdf5 
-    directory, you will be asked to locate the sub-project files, when you open 
-    the project all.sln.
-
-    If you want to rename "all" (the entire project), you will need to modify 
-    two files all.sln and all.vcproj as text (contrary to the explicit warnings 
-    in the files).
-
-
-    1.2 Settings... details:
-
-    If you create your own project, the necessary settings can be read
-    from the all.vcproj file (as text), or from the Project Settings in the
-    Visual Studio project settings dialog.
-    
-    1.3 FAQ
-    
-    Many other common questions and hints are located online and being updated
-    in the HDF5 FAQ.  For Windows-specific questions, please see:
-    
-        http://www.hdfgroup.uiuc.edu/windows/faq.html
-        
-    For all other general questions, you can look in the general FAQ:
-    
-        http://hdfgroup.org/HDF5-FAQ.html
-
-    
-************************************************************************
- Please send email to help at hdfgroup.org for further assistance.
diff --git a/release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt b/release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt
index d7d9db9..bbb7762 100644
--- a/release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt
+++ b/release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt
@@ -1,166 +1,166 @@
-************************************************************************
-*      Instructions for Building and Testing HDF5 on Windows XP        *
-*                          (From Command Line)                         *
-************************************************************************
-Note: This instruction is written for users who would like to build HDF5
-      libraries and tools from the HDF5 source code package on command
-      line. We no longer support building HDF5 using Microsoft Visual 
-    Studio .NET 2003 or Visual Studio VS2005 or Intel Fortran 91.
-         
-      Currently, we support:
-      
-      1. Building and testing HDF5 C/C++/Fortran libraries on command line with 
-         Microsoft Visual Studio 2008 for 32- or 64-bit Windows.
-         
-      2. Building and testing HDF5 C/C++/Fortran libraries and utilities using
-         CMake tools. Refer to the CMAKE.txt file for detailed information.
-      
-      For all other Windows development tools, HDF5 should be built in
-      the development environment.  Please refer to INSTALL_Windows.txt
-      for detailed HDF5 building and installation information, or 
-      INSTALL_Windows_Short_VS2008.txt for quick HDF5 building and installation
-      instructions.
-                        
-WARNINGS:
-
-Please read CAREFULLY about HDF5 build and install preconditions and 
-notes in INSTALL_Windows.txt before starting below procedures.
-
-
-========================================================================
-   Section I: Building and testing HDF5 on command line with Microsoft 
-              Visual Studio
-========================================================================
-    
-1. Preconditions: 
-
-   1.1 Verify environment for Visual Studio
-   
-   Building from the command line requires environment variables for Visual
-   Studio.  These are generally setup when Visual Studio is installed, but you
-   can verify by running the command:
-        
-        echo %vs90comntools%
-        
-    This should output a path similar to:
-    
-        C:\Program Files\Microsoft Visual Studio 9\Common7\Tools\
-        
-   1.2 Run batch file copy_hdf.bat.
-
-   Go to  c:\MyHDFstuff\hdf5\windows and run copy_hdf.bat.
-   
-   1.3 Setup evironment for external libraries
-   
-   Similarly to building from within Visual Studio, HDF5 requires environment
-   variables for szip and zlib library names.  To define these environment 
-   variables:
-
-   From the command prompt that you will be building HDF5 from, issue the
-   following command:
-   
-        set HDF5_EXT_ZLIB=zlib1.lib
-        
-    replacing "zlib1.lib" with the name of the zlib library on your system.
-    Similarly, set HDF5_EXT_SZIP to the name of the szip library on your system.
-    
-    (Optional) If you will be building using the /useenv switch, you must also
-    define variables INCLUDE and LIB with a semi-colon deliminated list of
-    paths for szip and zlib include files and libraries, respectively.  Set
-    these variables in the same way you set HDF5_EXT_ZLIB and HDF5_EXT_SZIP.
-
-      
-2. Building and testing HDF5 libraries and tools
-
-   We provide 2 options for users to build and test HDF5 libraries 
-   and tools.
-      
-    2.1 Options A: Build and test in one step 
-      
-         A batch file named hdf5bt.bat in c:\MyHDFstuff\hdf5 directory is 
-         provided for users to build and test HDF5 library and tools together 
-         from command line.
-
-        hdf5bt file takes the following options:
-              /vs9              Build HDF5 using Visual Studio 2008
-              /fort             Build and test HDF5 with Fortran libraries
-              /ivf101           Build HDF5 Fortran using Intel Visual Fortran 10.1
-              /useenv           Build HDF5 using compiler settings defined
-                                in the environment, rather than the IDE.
-              /?                Help information
-
-            If you specify the "/useenv" option, then include and library
-            directories for szip and zlib must have been set in the
-            Preconditions above.
-            
-            Invoke a command prompt window and run hdf5bt.  Users are 
-            encouraged to pipe the test output into a file.  You should find no 
-            compilation errors or "*FAILED*" marks.
-
-    2.2 Options B: Build and test in two steps 
-
-         We also provide users with the option to build and test HDF5 libraries 
-         and tools seperately.
-   
-         Step 1) Build HDF5 Libraries and Tools
-
-            A batch file named hdf5build.bat in c:\MyHDFstuff\hdf5 
-            directory is provided for users to build HDF5 library and 
-            tools from command line.
-
-        hdf5build takes the following options:
-              /vs9              Build HDF5 using Visual Studio 2008
-              /fort             Build HDF5 with Fortran libraries
-              /ivf101           Build HDF5 Fortran using Intel Visual Fortran 10.1
-              /nodebug          Build HDF5 release versions only
-                                Note: Default is to build debug and release versions
-              /useenv           Build HDF5 using compiler settings defined
-                                in the environment, rather than the IDE.
-              /?                Help information
-            
-            If you specify the "/useenv" option, then include and library
-            directories for szip and zlib must have been set in the
-            Preconditions above.
-            
-            Invoke a command prompt window and run hdf5build.  Users are 
-            encouraged to pipe the test output into a file.  You can check 
-            the file to find out whether there are any compilation errors.
-
-         Step 2) Test HDF5 Libraries and Tools
-   
-            HDF5 comes with various test suites, all of which can be tested with 
-            hdf5check.bat batch file in c:\MyHDFstuff\hdf5 directory.
-
-            hdf5check batch file can be run with one of the following four options:
-
-              hdf5check                  Test HDF5 C library and tools only.
-
-              hdf5check enablecpp        Test HDF5 C/C++ libraries and tools.
-
-              hdf5check enablefortran    Test HDF5 C/Fortran libraries and 
-                                         tools.  To use this option, HDF5 
-                                         Fortran libraries must have been built.
-
-              hdf5check enableall        Test HDF5 C/Fortran libraries and 
-                                         tools.  To use this option, HDF5 
-                                         Fortran libraries must have been built.
-
-        nodebug option can be added to any of the above options to only
-        test the release versions.
-        
-            Invoke a command prompt window and run hdf5check with appropriate 
-            option.  Users are encouraged to pipe the test output into a file.  
-            You should find no "*FAILED*" marks.
-
-3. Installing HDF5 Libraries
-
-Run the batch file c:\MyHDFstuff\hdf5\installhdf5lib.bat to install all
-HDF5 libraries and tools into c:\MyHDFstuff\hdf5\hdf5lib directory.
-
-For further information, please refer to INSTALL_WINDOWS.txt.        
-
-
-***********************************************************************  
-For further information, please refer to INSTALL_WINDOWS.txt.
-
-Please send email to help at hdfgroup.org for further assistance.
+************************************************************************
+*      Instructions for Building and Testing HDF5 on Windows XP        *
+*                          (From Command Line)                         *
+************************************************************************
+Note: This instruction is written for users who would like to build HDF5
+      libraries and tools from the HDF5 source code package on command
+      line. We no longer support building HDF5 using Microsoft Visual 
+	  Studio .NET 2003 or Visual Studio VS2005 or Intel Fortran 91.
+         
+      Currently, we support:
+      
+      1. Building and testing HDF5 C/C++/Fortran libraries on command line with 
+         Microsoft Visual Studio 2008 for 32- or 64-bit Windows.
+         
+      2. Building and testing HDF5 C/C++/Fortran libraries and utilities using
+         CMake tools. Refer to the CMAKE.txt file for detailed information.
+      
+      For all other Windows development tools, HDF5 should be built in
+      the development environment.  Please refer to INSTALL_Windows.txt
+      for detailed HDF5 building and installation information, or 
+      INSTALL_Windows_Short_VS2008.txt for quick HDF5 building and installation
+      instructions.
+                        
+WARNINGS:
+
+Please read CAREFULLY about HDF5 build and install preconditions and 
+notes in INSTALL_Windows.txt before starting below procedures.
+
+
+========================================================================
+   Section I: Building and testing HDF5 on command line with Microsoft 
+              Visual Studio
+========================================================================
+    
+1. Preconditions: 
+
+   1.1 Verify environment for Visual Studio
+   
+   Building from the command line requires environment variables for Visual
+   Studio.  These are generally setup when Visual Studio is installed, but you
+   can verify by running the command:
+        
+        echo %vs90comntools%
+        
+    This should output a path similar to:
+    
+        C:\Program Files\Microsoft Visual Studio 9\Common7\Tools\
+        
+   1.2 Run batch file copy_hdf.bat.
+
+   Go to  c:\MyHDFstuff\hdf5\windows and run copy_hdf.bat.
+   
+   1.3 Setup evironment for external libraries
+   
+   Similarly to building from within Visual Studio, HDF5 requires environment
+   variables for szip and zlib library names.  To define these environment 
+   variables:
+
+   From the command prompt that you will be building HDF5 from, issue the
+   following command:
+   
+        set HDF5_EXT_ZLIB=zlib1.lib
+        
+    replacing "zlib1.lib" with the name of the zlib library on your system.
+    Similarly, set HDF5_EXT_SZIP to the name of the szip library on your system.
+    
+    (Optional) If you will be building using the /useenv switch, you must also
+    define variables INCLUDE and LIB with a semi-colon deliminated list of
+    paths for szip and zlib include files and libraries, respectively.  Set
+    these variables in the same way you set HDF5_EXT_ZLIB and HDF5_EXT_SZIP.
+
+      
+2. Building and testing HDF5 libraries and tools
+
+   We provide 2 options for users to build and test HDF5 libraries 
+   and tools.
+      
+    2.1 Options A: Build and test in one step 
+      
+         A batch file named hdf5bt.bat in c:\MyHDFstuff\hdf5 directory is 
+         provided for users to build and test HDF5 library and tools together 
+         from command line.
+
+        hdf5bt file takes the following options:
+              /vs9              Build HDF5 using Visual Studio 2008
+              /fort             Build and test HDF5 with Fortran libraries
+              /ivf101           Build HDF5 Fortran using Intel Visual Fortran 10.1
+              /useenv           Build HDF5 using compiler settings defined
+                                in the environment, rather than the IDE.
+              /?                Help information
+
+            If you specify the "/useenv" option, then include and library
+            directories for szip and zlib must have been set in the
+            Preconditions above.
+            
+            Invoke a command prompt window and run hdf5bt.  Users are 
+            encouraged to pipe the test output into a file.  You should find no 
+            compilation errors or "*FAILED*" marks.
+
+    2.2 Options B: Build and test in two steps 
+
+         We also provide users with the option to build and test HDF5 libraries 
+         and tools seperately.
+   
+         Step 1) Build HDF5 Libraries and Tools
+
+            A batch file named hdf5build.bat in c:\MyHDFstuff\hdf5 
+            directory is provided for users to build HDF5 library and 
+            tools from command line.
+
+        hdf5build takes the following options:
+              /vs9              Build HDF5 using Visual Studio 2008
+              /fort             Build HDF5 with Fortran libraries
+              /ivf101           Build HDF5 Fortran using Intel Visual Fortran 10.1
+              /nodebug          Build HDF5 release versions only
+                                Note: Default is to build debug and release versions
+              /useenv           Build HDF5 using compiler settings defined
+                                in the environment, rather than the IDE.
+              /?                Help information
+            
+            If you specify the "/useenv" option, then include and library
+            directories for szip and zlib must have been set in the
+            Preconditions above.
+            
+            Invoke a command prompt window and run hdf5build.  Users are 
+            encouraged to pipe the test output into a file.  You can check 
+            the file to find out whether there are any compilation errors.
+
+         Step 2) Test HDF5 Libraries and Tools
+   
+            HDF5 comes with various test suites, all of which can be tested with 
+            hdf5check.bat batch file in c:\MyHDFstuff\hdf5 directory.
+
+            hdf5check batch file can be run with one of the following four options:
+
+              hdf5check                  Test HDF5 C library and tools only.
+
+              hdf5check enablecpp        Test HDF5 C/C++ libraries and tools.
+
+              hdf5check enablefortran    Test HDF5 C/Fortran libraries and 
+                                         tools.  To use this option, HDF5 
+                                         Fortran libraries must have been built.
+
+              hdf5check enableall        Test HDF5 C/Fortran libraries and 
+                                         tools.  To use this option, HDF5 
+                                         Fortran libraries must have been built.
+
+			  nodebug option can be added to any of the above options to only
+			  test the release versions.
+			  
+            Invoke a command prompt window and run hdf5check with appropriate 
+            option.  Users are encouraged to pipe the test output into a file.  
+            You should find no "*FAILED*" marks.
+
+3. Installing HDF5 Libraries
+
+Run the batch file c:\MyHDFstuff\hdf5\installhdf5lib.bat to install all
+HDF5 libraries and tools into c:\MyHDFstuff\hdf5\hdf5lib directory.
+
+For further information, please refer to INSTALL_WINDOWS.txt.        
+
+
+***********************************************************************  
+For further information, please refer to INSTALL_WINDOWS.txt.
+
+Please send email to help at hdfgroup.org for further assistance.
diff --git a/release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.TXT b/release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.TXT
new file mode 100644
index 0000000..4ec79ed
--- /dev/null
+++ b/release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.TXT
@@ -0,0 +1,201 @@
+************************************************************************
+* Build and Install HDF5 C/C++ Library with Visual Studio 2008         *
+*                     with Windows XP (Short Version)                  *
+************************************************************************
+
+Notes: This short instruction is written for users who want to quickly build 
+       HDF5 library and tools from the HDF5 source code package with Microsoft 
+       Visual Studio 2008 but do not want to know HDF5 building and installation 
+       details on Windows XP.
+         
+       For detailed HDF5 build and install information, or if you have trouble 
+       following any steps in the instructions, please refer to 
+       INSTALL_Windows.txt for further information.
+      
+       For users who would like to build and test HDF5 package from the
+       command line, please refer to INSTALL_Windows_From_Command_Line.txt.
+       
+       Notes:
+       
+         1. HDF5 1.8 can also be built using Visual Studio 2008 on Windows
+            Vista.  For details, please see Section X of INSTALL_Windows.txt.
+            
+         2. 64-bit builds are also supported in Visual Studio 2008.  For details
+            please see Section IX of INSTALL_Windows.txt.
+            
+         3. Fortran libraries can be built with Visual Studio 2008 and Intel
+            Fortran 10.1.  For details, see Section VI of INSTALL_Windows.txt.
+
+WARNINGS:
+
+Please read CAREFULLY about HDF5 build and install preconditions and 
+notes in INSTALL_Windows.txt before starting below procedures.
+
+
+========================================================================
+                            Preconditions                                                           
+========================================================================                          
+
+   1. Set up path for external libraries and headers                     
+                                                                         
+      Skip this part if you don't want to use ANY compression features provided 
+      by HDF5.  Please do read Section V in INSTALL_Windows.txt.                         
+                                                                         
+      You have to read this part even if you want to only use Zlib or Szip.  You 
+      also need to read Section V in INSTALL_Windows.txt.                           
+                                                                         
+      Invoke Microsoft Visual Studio and go to "Tools" and select "Options". In 
+      the left pane of  "Option" window poped up, choose and expand "Projects", 
+      Click on "VC++ Directories".  In the right pane, Find the box "Show 
+      directories for", choose "Include files", if you can not find your Zlib 
+      and Szip header path (for example, c:\zlib125\include, c:\szip\include)
+      from the directory list, add the header path (c:\zlib125\include, 
+      c:\szip\include) to the included directories.                                                
+                                                                         
+      Find the box "Show directories for", choose "Library files", If you cannot 
+      find your Zlib and Szip library path (for example, c:\zlib125\dll, 
+      c:\szip\dll) from the directory list, add the library path 
+      (c:\zlib125\dll, c:\szip\dll) to the library directories.            
+          
+      NOTE:
+          If you are using VS2010, the path settings will need to be in project
+          property sheets per project. Go to "Project" and select "Properties", find 
+          "Configuration Properties", and then "VC++ Directories".
+          
+          Add the header path to the "Include Directories" setting.
+          
+          Add the library path to the "Library Directories" setting.
+
+========================================================================
+          Building HDF5 C/C++ Libraries with Visual Studio 2008
+========================================================================
+
+   1. Run batch file copy_hdf.bat
+
+      Go to  c:\MyHDFstuff\hdf5\windows and run copy_hdf.bat. This process will 
+      copy all the necessary batch files, windows specific source codes and 
+      text files saved under c:\MyHDFstuff\hdf5\windows directory to the 
+      corresponding directories under hdf5.
+
+   2. Invoke Microsoft Visual Studio compiler
+
+      Invoke Microsoft Visual Studio.  From the main menu, go to "File" and 
+      select the "Open Solution" option. Then open the
+      c:\MyHDFstuff\hdf5\windows\proj\all\all.sln solution if you are building
+      without Fortran libraries, or 
+      c:\MyHDFstuff\hdf5\windows\proj\all_fortran\all_fortran.sln if you would
+      like to use Fortran.
+
+      You should find Windows project files listed as "all", "big", etc. on the
+      left.
+
+
+   3. (Optional) Disable HDF5 C++ and High level C++
+   
+      In HDF5 1.8, C++ and HL C++ libraries are built by default.  To opt-out,
+      you must explicitly disable them.
+
+      3.1 Skip this step if you do want to build HDF5 High-Level C++ libraries
+
+          Go to "Project" and select "Project Dependencies".  Select "all", and 
+          disable all of the following projects:
+
+            hdf5_hl_cpp
+            hdf5_hl_cppdll
+            hl_test_table_cpp
+            hl_test_table_cppdll
+      
+      3.2 Skip this step if you do want to build HDF5 High-Level libraries
+
+          Go to "Project" and select "Project Dependencies".  Select "all", and 
+          disable all of the project files listed in the previous step, as well
+          as the following projects:
+
+             hdf5_hl
+             hdf5_hldll
+             hl_test_image
+             hl_test_imagedll
+             hl_test_lite
+             hl_test_litedll
+             hl_test_table
+             hl_test_tabledll
+             hl_test_ds
+             hl_test_dsdll
+             hl_test_packet
+             hl_test_packetdll
+   
+   Click on "OK", From the main menu, choose "Build"-> "Build" or  
+   "Rebuild ALL" to build both release and debug version of HDF5   
+   Libraries.                                                                                           
+             
+
+   4. Select "Build", then Select "Configuration Manager".
+
+      4.1 To build debug static libraries, debug multithreaded DLLs, and tests:
+
+      In "Active Solution Configuration", select "Debug". Select "Close". 
+      Select "Build" -> "Build Solution" or "Rebuild Solution" to build debug 
+      version of project "all".
+
+      4.2 To build release static libraries, multithreaded DLLs and tests:
+
+      In "Active Solution Configuration", select "Release". Select "Close". 
+      Select "Build" -> "Build Solution" or "Rebuild Solution" to build release 
+      version of project "all".
+
+      Both debug and release versions must be built.
+
+      Warning messages can be ignored.
+             
+========================================================================
+               Testing HDF5 C/C++ Libraries
+========================================================================
+
+HDF5 libraries and tools should be tested to make sure that they were
+built correctly. c:\MyHDFstuff\hdf5\hdf5check.bat was provided to test
+HDF5 libraries and tools.
+
+hdf5check.bat has four options:
+   
+   hdf5check                     test HDF5 C library and tools only
+      
+   hdf5check enablecpp           test HDF5 C/C++ libraries and tools
+         
+   hdf5check enablefortran       test HDF5 C/Fortran libraries and tools
+         
+   hdf5check enableall           test HDF5 C/C++/Fortran libraries and tools
+
+   nodebug                       -- can be added to any of the above to not 
+                                    test debug versions   
+
+Notes: Users who only build HDF5 C/C++ libraries ONLY have the first 
+       two options.
+
+Invoke a command prompt window and run hdf5check with appropriate option.
+Users are encouraged to pipe the test output into a file.  You should find
+no "*FAILED*" marks.
+
+If you want to test HDF5 libraries and tools one by one, please refer to
+Section II, step 2 in INSTALL_Windows.txt.
+
+
+========================================================================
+                    Installing HDF5 C/C++ Libraries
+========================================================================
+
+Run the batch file c:\MyHDFstuff\hdf5\installhdf5lib.bat to install 
+all HDF5 libraries and tools into c:\MyHDFstuff\hdf5\hdf5lib directory.
+
+========================================================================
+               Building HDF5 Examples and Applications
+========================================================================
+
+Building HDF5 Examples is Optional. Please read Section II, step 4 and 
+the following part in INSTALL_Windows.txt for detailed information.
+
+
+
+************************************************************************
+
+Need further assistance, send email to help at hdfgroup.org
+
diff --git a/release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.txt b/release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.txt
deleted file mode 100644
index 46f50ab..0000000
--- a/release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-************************************************************************
-* Build and Install HDF5 C/C++ Library with Visual Studio 2008         *
-*                     with Windows XP (Short Version)                  *
-************************************************************************
-
-Notes: This short instruction is written for users who want to quickly build 
-       HDF5 library and tools from the HDF5 source code package with Microsoft 
-       Visual Studio 2008 but do not want to know HDF5 building and installation 
-       details on Windows XP.
-         
-       For detailed HDF5 build and install information, or if you have trouble 
-       following any steps in the instructions, please refer to 
-       INSTALL_Windows.txt for further information.
-      
-       For users who would like to build and test HDF5 package from the
-       command line, please refer to INSTALL_Windows_From_Command_Line.txt.
-       
-       Notes:
-       
-         1. HDF5 1.8 can also be built using Visual Studio 2008 on Windows
-            Vista.  For details, please see Section X of INSTALL_Windows.txt.
-            
-         2. 64-bit builds are also supported in Visual Studio 2008.  For details
-            please see Section IX of INSTALL_Windows.txt.
-            
-         3. Fortran libraries can be built with Visual Studio 2008 and Intel
-            Fortran 10.1.  For details, see Section VI of INSTALL_Windows.txt.
-
-WARNINGS:
-
-Please read CAREFULLY about HDF5 build and install preconditions and 
-notes in INSTALL_Windows.txt before starting below procedures.
-
-
-========================================================================
-                            Preconditions                                                           
-========================================================================                          
-
-   1. Set up path for external libraries and headers                     
-                                                                         
-      Skip this part if you don't want to use ANY compression features provided 
-      by HDF5.  Please do read Section V in INSTALL_Windows.txt.                         
-                                                                         
-      You have to read this part even if you want to only use Zlib or Szip.  You 
-      also need to read Section V in INSTALL_Windows.txt.                           
-                                                                         
-      Invoke Microsoft Visual Studio and go to "Tools" and select "Options". In 
-      the left pane of  "Option" window poped up, choose and expand "Projects", 
-      Click on "VC++ Directories".  In the right pane, Find the box "Show 
-      directories for", choose "Include files", if you can not find your Zlib 
-      and Szip header path (for example, c:\zlib125\include, c:\szip\include)
-      from the directory list, add the header path (c:\zlib125\include, 
-      c:\szip\include) to the included directories.                                                
-                                                                         
-      Find the box "Show directories for", choose "Library files", If you cannot 
-      find your Zlib and Szip library path (for example, c:\zlib125\dll, 
-      c:\szip\dll) from the directory list, add the library path 
-      (c:\zlib125\dll, c:\szip\dll) to the library directories.            
-          
-      NOTE:
-          If you are using VS2010, the path settings will need to be in project
-          property sheets per project. Go to "Project" and select "Properties", find 
-          "Configuration Properties", and then "VC++ Directories".
-          
-          Add the header path to the "Include Directories" setting.
-          
-          Add the library path to the "Library Directories" setting.
-
-========================================================================
-          Building HDF5 C/C++ Libraries with Visual Studio 2008
-========================================================================
-
-   1. Run batch file copy_hdf.bat
-
-      Go to  c:\MyHDFstuff\hdf5\windows and run copy_hdf.bat. This process will 
-      copy all the necessary batch files, windows specific source codes and 
-      text files saved under c:\MyHDFstuff\hdf5\windows directory to the 
-      corresponding directories under hdf5.
-
-   2. Invoke Microsoft Visual Studio compiler
-
-      Invoke Microsoft Visual Studio.  From the main menu, go to "File" and 
-      select the "Open Solution" option. Then open the
-      c:\MyHDFstuff\hdf5\windows\proj\all\all.sln solution if you are building
-      without Fortran libraries, or 
-      c:\MyHDFstuff\hdf5\windows\proj\all_fortran\all_fortran.sln if you would
-      like to use Fortran.
-
-      You should find Windows project files listed as "all", "big", etc. on the
-      left.
-
-
-   3. (Optional) Disable HDF5 C++ and High level C++
-   
-      In HDF5 1.8, C++ and HL C++ libraries are built by default.  To opt-out,
-      you must explicitly disable them.
-
-      3.1 Skip this step if you do want to build HDF5 High-Level C++ libraries
-
-          Go to "Project" and select "Project Dependencies".  Select "all", and 
-          disable all of the following projects:
-
-            hdf5_hl_cpp
-            hdf5_hl_cppdll
-            hl_test_table_cpp
-            hl_test_table_cppdll
-      
-      3.2 Skip this step if you do want to build HDF5 High-Level libraries
-
-          Go to "Project" and select "Project Dependencies".  Select "all", and 
-          disable all of the project files listed in the previous step, as well
-          as the following projects:
-
-             hdf5_hl
-             hdf5_hldll
-             hl_test_image
-             hl_test_imagedll
-             hl_test_lite
-             hl_test_litedll
-             hl_test_table
-             hl_test_tabledll
-             hl_test_ds
-             hl_test_dsdll
-             hl_test_packet
-             hl_test_packetdll
-   
-   Click on "OK", From the main menu, choose "Build"-> "Build" or  
-   "Rebuild ALL" to build both release and debug version of HDF5   
-   Libraries.                                                                                           
-             
-
-   4. Select "Build", then Select "Configuration Manager".
-
-      4.1 To build debug static libraries, debug multithreaded DLLs, and tests:
-
-      In "Active Solution Configuration", select "Debug". Select "Close". 
-      Select "Build" -> "Build Solution" or "Rebuild Solution" to build debug 
-      version of project "all".
-
-      4.2 To build release static libraries, multithreaded DLLs and tests:
-
-      In "Active Solution Configuration", select "Release". Select "Close". 
-      Select "Build" -> "Build Solution" or "Rebuild Solution" to build release 
-      version of project "all".
-
-      Both debug and release versions must be built.
-
-      Warning messages can be ignored.
-             
-========================================================================
-               Testing HDF5 C/C++ Libraries
-========================================================================
-
-HDF5 libraries and tools should be tested to make sure that they were
-built correctly. c:\MyHDFstuff\hdf5\hdf5check.bat was provided to test
-HDF5 libraries and tools.
-
-hdf5check.bat has four options:
-   
-   hdf5check                     test HDF5 C library and tools only
-      
-   hdf5check enablecpp           test HDF5 C/C++ libraries and tools
-         
-   hdf5check enablefortran       test HDF5 C/Fortran libraries and tools
-         
-   hdf5check enableall           test HDF5 C/C++/Fortran libraries and tools
-
-   nodebug                       -- can be added to any of the above to not 
-                                    test debug versions   
-
-Notes: Users who only build HDF5 C/C++ libraries ONLY have the first 
-       two options.
-
-Invoke a command prompt window and run hdf5check with appropriate option.
-Users are encouraged to pipe the test output into a file.  You should find
-no "*FAILED*" marks.
-
-If you want to test HDF5 libraries and tools one by one, please refer to
-Section II, step 2 in INSTALL_Windows.txt.
-
-
-========================================================================
-                    Installing HDF5 C/C++ Libraries
-========================================================================
-
-Run the batch file c:\MyHDFstuff\hdf5\installhdf5lib.bat to install 
-all HDF5 libraries and tools into c:\MyHDFstuff\hdf5\hdf5lib directory.
-
-========================================================================
-               Building HDF5 Examples and Applications
-========================================================================
-
-Building HDF5 Examples is Optional. Please read Section II, step 4 and 
-the following part in INSTALL_Windows.txt for detailed information.
-
-
-
-************************************************************************
-
-Need further assistance, send email to help at hdfgroup.org
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 263f6b8..fe42210 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_SRC C CXX)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # List Source Files
 #-----------------------------------------------------------------------------
 SET (H5_SRCS
@@ -652,6 +657,9 @@ ENDIF (NOT HDF5_INSTALL_NO_DEVELOPMENT)
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} libraries)
+  
   INSTALL (
       TARGETS
           ${HDF5_LIB_TARGET}
diff --git a/src/H5.c b/src/H5.c
index fef1365..52f86b2 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -303,7 +303,7 @@ H5_term_library(void)
 
 	MPI_Initialized(&mpi_initialized);
 	if(mpi_initialized) {
-	    mpe_code = MPE_Finish_log("cpilog");
+	    mpe_code = MPE_Finish_log("h5log");
 	    assert(mpe_code >=0);
 	} /* end if */
 	H5_MPEinit_g = FALSE;	/* turn it off no matter what */
diff --git a/src/H5A.c b/src/H5A.c
index 221d190..a423fb6 100644
--- a/src/H5A.c
+++ b/src/H5A.c
@@ -41,9 +41,6 @@
 /* Local Macros */
 /****************/
 
-/* The number of reserved IDs in dataset ID group */
-#define H5A_RESERVED_ATOMS  0
-
 
 /******************/
 /* Local Typedefs */
@@ -94,6 +91,16 @@ H5FL_DEFINE(H5A_shared_t);
 /* Declare a free list to manage blocks of type conversion data */
 H5FL_BLK_DEFINE(attr_buf);
 
+/* Attribute ID class */
+static const H5I_class_t H5I_ATTR_CLS[1] = {{
+    H5I_ATTR,                   /* ID class value */
+    0,                          /* Class flags */
+    64,                         /* Minimum hash size for class */
+    0,                          /* # of reserved IDs for class */
+    (H5I_free_t)H5A_close       /* Callback routine for closing objects of this class */
+}};
+
+
 
 /*-------------------------------------------------------------------------
  * Function:	H5A_init
@@ -143,7 +150,7 @@ H5A_init_interface(void)
     /*
      * Create attribute ID type.
      */
-    if(H5I_register_type(H5I_ATTR, (size_t)H5I_ATTRID_HASHSIZE, H5A_RESERVED_ATOMS, (H5I_free_t)H5A_close) < H5I_FILE)
+    if(H5I_register_type(H5I_ATTR_CLS) < 0)
         HGOTO_ERROR(H5E_INTERNAL, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
 done:
@@ -172,7 +179,7 @@ H5A_term_interface(void)
 {
     int	n = 0;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     if(H5_interface_initialize_g) {
 	if((n = H5I_nmembers(H5I_ATTR))>0) {
diff --git a/src/H5AC.c b/src/H5AC.c
index 8dce384..4a4332a 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -342,14 +342,14 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 
 #else /* H5_HAVE_PARALLEL */
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Sanity check */
-    assert(H5P_LST_DATASET_XFER_g!=(-1));
+    HDassert(H5P_LST_DATASET_XFER_g!=(-1));
 
-    H5AC_dxpl_id=H5P_DATASET_XFER_DEFAULT;
-    H5AC_noblock_dxpl_id=H5P_DATASET_XFER_DEFAULT;
-    H5AC_ind_dxpl_id=H5P_DATASET_XFER_DEFAULT;
+    H5AC_dxpl_id = H5P_DATASET_XFER_DEFAULT;
+    H5AC_noblock_dxpl_id = H5P_DATASET_XFER_DEFAULT;
+    H5AC_ind_dxpl_id = H5P_DATASET_XFER_DEFAULT;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
 #endif /* H5_HAVE_PARALLEL */
@@ -376,7 +376,7 @@ H5AC_term_interface(void)
 {
     int	n = 0;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     if (H5_interface_initialize_g) {
 #ifdef H5_HAVE_PARALLEL
diff --git a/src/H5Abtree2.c b/src/H5Abtree2.c
index 5a15c20..9b7dba6 100644
--- a/src/H5Abtree2.c
+++ b/src/H5Abtree2.c
@@ -222,7 +222,7 @@ H5A_dense_btree2_name_store(void *_nrecord, const void *_udata)
     const H5A_bt2_ud_ins_t *udata = (const H5A_bt2_ud_ins_t *)_udata;
     H5A_dense_bt2_name_rec_t *nrecord = (H5A_dense_bt2_name_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Copy user information info native record */
     nrecord->id = udata->id;
@@ -255,7 +255,7 @@ H5A_dense_btree2_name_compare(const void *_bt2_udata, const void *_bt2_rec)
     const H5A_dense_bt2_name_rec_t *bt2_rec = (const H5A_dense_bt2_name_rec_t *)_bt2_rec;
     herr_t ret_value;           /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Sanity check */
     HDassert(bt2_udata);
@@ -323,7 +323,7 @@ H5A_dense_btree2_name_encode(uint8_t *raw, const void *_nrecord, void UNUSED *ct
 {
     const H5A_dense_bt2_name_rec_t *nrecord = (const H5A_dense_bt2_name_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Encode the record's fields */
     HDmemcpy(raw, nrecord->id.id, (size_t)H5O_FHEAP_ID_LEN);
@@ -354,7 +354,7 @@ H5A_dense_btree2_name_decode(const uint8_t *raw, void *_nrecord, void UNUSED *ct
 {
     H5A_dense_bt2_name_rec_t *nrecord = (H5A_dense_bt2_name_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Decode the record's fields */
     HDmemcpy(nrecord->id.id, raw, (size_t)H5O_FHEAP_ID_LEN);
@@ -386,7 +386,7 @@ H5A_dense_btree2_name_debug(FILE *stream, const H5F_t UNUSED *f, hid_t UNUSED dx
 {
     const H5A_dense_bt2_name_rec_t *nrecord = (const H5A_dense_bt2_name_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     HDfprintf(stream, "%*s%-*s {%016Hx, %02x, %u, %08lx}\n", indent, "", fwidth,
         "Record:",
@@ -415,7 +415,7 @@ H5A_dense_btree2_corder_store(void *_nrecord, const void *_udata)
     const H5A_bt2_ud_ins_t *udata = (const H5A_bt2_ud_ins_t *)_udata;
     H5A_dense_bt2_corder_rec_t *nrecord = (H5A_dense_bt2_corder_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Copy user information info native record */
     nrecord->id = udata->id;
@@ -447,7 +447,7 @@ H5A_dense_btree2_corder_compare(const void *_bt2_udata, const void *_bt2_rec)
     const H5A_dense_bt2_corder_rec_t *bt2_rec = (const H5A_dense_bt2_corder_rec_t *)_bt2_rec;
     herr_t ret_value;           /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Sanity check */
     HDassert(bt2_udata);
@@ -483,7 +483,7 @@ H5A_dense_btree2_corder_encode(uint8_t *raw, const void *_nrecord, void UNUSED *
 {
     const H5A_dense_bt2_corder_rec_t *nrecord = (const H5A_dense_bt2_corder_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Encode the record's fields */
     HDmemcpy(raw, nrecord->id.id, (size_t)H5O_FHEAP_ID_LEN);
@@ -513,7 +513,7 @@ H5A_dense_btree2_corder_decode(const uint8_t *raw, void *_nrecord, void UNUSED *
 {
     H5A_dense_bt2_corder_rec_t *nrecord = (H5A_dense_bt2_corder_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Decode the record's fields */
     HDmemcpy(nrecord->id.id, raw, (size_t)H5O_FHEAP_ID_LEN);
@@ -544,7 +544,7 @@ H5A_dense_btree2_corder_debug(FILE *stream, const H5F_t UNUSED *f, hid_t UNUSED
 {
     const H5A_dense_bt2_corder_rec_t *nrecord = (const H5A_dense_bt2_corder_rec_t *)_nrecord;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     HDfprintf(stream, "%*s%-*s {%016Hx, %02x, %u}\n", indent, "", fwidth,
         "Record:",
diff --git a/src/H5Adeprec.c b/src/H5Adeprec.c
index 22faaa2..7202edf 100644
--- a/src/H5Adeprec.c
+++ b/src/H5Adeprec.c
@@ -35,7 +35,7 @@
 #define H5O_PACKAGE		/*suppress error about including H5Opkg	*/
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5A_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5A__init_deprec_interface
 
 
 /***********/
@@ -87,9 +87,9 @@
 
 /*--------------------------------------------------------------------------
 NAME
-   H5A_init_deprec_interface -- Initialize interface-specific information
+   H5A__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5A_init_deprec_interface()
+    herr_t H5A__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -98,12 +98,12 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5A_init_deprec_interface(void)
+H5A__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5A_init())
-} /* H5A_init_deprec_interface() */
+} /* H5A__init_deprec_interface() */
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 
diff --git a/src/H5Aint.c b/src/H5Aint.c
index 48d2546..3eeb76d 100644
--- a/src/H5Aint.c
+++ b/src/H5Aint.c
@@ -90,14 +90,14 @@ typedef struct {
 /* Local Prototypes */
 /********************/
 
-static herr_t H5A_compact_build_table_cb(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
+static herr_t H5A__compact_build_table_cb(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
     unsigned sequence, unsigned *oh_flags_ptr, void *_udata/*in,out*/);
 static herr_t H5A_dense_build_table_cb(const H5A_t *attr, void *_udata);
-static int H5A_attr_cmp_name_inc(const void *attr1, const void *attr2);
-static int H5A_attr_cmp_name_dec(const void *attr1, const void *attr2);
-static int H5A_attr_cmp_corder_inc(const void *attr1, const void *attr2);
-static int H5A_attr_cmp_corder_dec(const void *attr1, const void *attr2);
-static herr_t H5A_attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
+static int H5A__attr_cmp_name_inc(const void *attr1, const void *attr2);
+static int H5A__attr_cmp_name_dec(const void *attr1, const void *attr2);
+static int H5A__attr_cmp_corder_inc(const void *attr1, const void *attr2);
+static int H5A__attr_cmp_corder_dec(const void *attr1, const void *attr2);
+static herr_t H5A__attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
     H5_iter_order_t order);
 
 /*********************/
@@ -119,7 +119,7 @@ H5FL_SEQ_DEFINE(H5A_t_ptr);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5A_compact_build_table_cb
+ * Function:	H5A__compact_build_table_cb
  *
  * Purpose:	Object header iterator callback routine to copy attribute
  *              into table.
@@ -141,13 +141,13 @@ H5FL_SEQ_DEFINE(H5A_t_ptr);
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5A_compact_build_table_cb(H5O_t UNUSED *oh, H5O_mesg_t *mesg/*in,out*/,
+H5A__compact_build_table_cb(H5O_t UNUSED *oh, H5O_mesg_t *mesg/*in,out*/,
     unsigned sequence, unsigned UNUSED *oh_modified, void *_udata/*in,out*/)
 {
     H5A_compact_bt_ud_t *udata = (H5A_compact_bt_ud_t *)_udata;   /* Operator user data */
     herr_t ret_value = H5_ITER_CONT;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(mesg);
@@ -180,7 +180,7 @@ H5A_compact_build_table_cb(H5O_t UNUSED *oh, H5O_mesg_t *mesg/*in,out*/,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5A_compact_build_table_cb() */
+} /* end H5A__compact_build_table_cb() */
 
 
 /*-------------------------------------------------------------------------
@@ -229,7 +229,7 @@ H5A_compact_build_table(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_index_t idx_type,
 
     /* Iterate over existing attributes, checking for attribute with same name */
     op.op_type = H5O_MESG_OP_LIB;
-    op.u.lib_op = H5A_compact_build_table_cb;
+    op.u.lib_op = H5A__compact_build_table_cb;
     if(H5O_msg_iterate_real(f, oh, H5O_MSG_ATTR, &op, &udata, dxpl_id) < 0)
         HGOTO_ERROR(H5E_ATTR, H5E_BADITER, FAIL, "error building attribute table")
 
@@ -239,7 +239,7 @@ H5A_compact_build_table(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_index_t idx_type,
     /* Don't sort an empty table. */
     if(atable->nattrs > 0) {
         /* Sort attribute table in correct iteration order */
-        if(H5A_attr_sort_table(atable, idx_type, order) < 0)
+        if(H5A__attr_sort_table(atable, idx_type, order) < 0)
             HGOTO_ERROR(H5E_ATTR, H5E_CANTSORT, FAIL, "error sorting attribute table")
     } /* end if */
 
@@ -363,7 +363,7 @@ H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo,
             HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "error building attribute table")
 
         /* Sort attribute table in correct iteration order */
-        if(H5A_attr_sort_table(atable, idx_type, order) < 0)
+        if(H5A__attr_sort_table(atable, idx_type, order) < 0)
             HGOTO_ERROR(H5E_ATTR, H5E_CANTSORT, FAIL, "error sorting attribute table")
     } /* end if */
     else
@@ -379,7 +379,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5A_attr_cmp_name_inc
+ * Function:	H5A__attr_cmp_name_inc
  *
  * Purpose:	Callback routine for comparing two attribute names, in
  *              increasing alphabetic order
@@ -397,17 +397,17 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5A_attr_cmp_name_inc(const void *attr1, const void *attr2)
+H5A__attr_cmp_name_inc(const void *attr1, const void *attr2)
 {
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(HDstrcmp((*(const H5A_t * const *)attr1)->shared->name,
             (*(const H5A_t * const *)attr2)->shared->name))
-} /* end H5A_attr_cmp_name_inc() */
+} /* end H5A__attr_cmp_name_inc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5A_attr_cmp_name_dec
+ * Function:	H5A__attr_cmp_name_dec
  *
  * Purpose:	Callback routine for comparing two attribute names, in
  *              decreasing alphabetic order
@@ -425,17 +425,17 @@ H5A_attr_cmp_name_inc(const void *attr1, const void *attr2)
  *-------------------------------------------------------------------------
  */
 static int
-H5A_attr_cmp_name_dec(const void *attr1, const void *attr2)
+H5A__attr_cmp_name_dec(const void *attr1, const void *attr2)
 {
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(HDstrcmp((*(const H5A_t * const *)attr2)->shared->name,
             (*(const H5A_t * const *)attr1)->shared->name))
-} /* end H5A_attr_cmp_name_dec() */
+} /* end H5A__attr_cmp_name_dec() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5A_attr_cmp_corder_inc
+ * Function:	H5A__attr_cmp_corder_inc
  *
  * Purpose:	Callback routine for comparing two attributes, in
  *              increasing creation order
@@ -452,11 +452,11 @@ H5A_attr_cmp_name_dec(const void *attr1, const void *attr2)
  *-------------------------------------------------------------------------
  */
 static int
-H5A_attr_cmp_corder_inc(const void *attr1, const void *attr2)
+H5A__attr_cmp_corder_inc(const void *attr1, const void *attr2)
 {
     int ret_value;              /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     if((*(const H5A_t * const *)attr1)->shared->crt_idx < (*(const H5A_t * const *)attr2)->shared->crt_idx)
         ret_value = -1;
@@ -466,11 +466,11 @@ H5A_attr_cmp_corder_inc(const void *attr1, const void *attr2)
         ret_value = 0;
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5A_attr_cmp_corder_inc() */
+} /* end H5A__attr_cmp_corder_inc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5A_attr_cmp_corder_dec
+ * Function:	H5A__attr_cmp_corder_dec
  *
  * Purpose:	Callback routine for comparing two attributes, in
  *              decreasing creation order
@@ -487,11 +487,11 @@ H5A_attr_cmp_corder_inc(const void *attr1, const void *attr2)
  *-------------------------------------------------------------------------
  */
 static int
-H5A_attr_cmp_corder_dec(const void *attr1, const void *attr2)
+H5A__attr_cmp_corder_dec(const void *attr1, const void *attr2)
 {
     int ret_value;              /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     if((*(const H5A_t * const *)attr1)->shared->crt_idx < (*(const H5A_t * const *)attr2)->shared->crt_idx)
         ret_value = 1;
@@ -501,11 +501,11 @@ H5A_attr_cmp_corder_dec(const void *attr1, const void *attr2)
         ret_value = 0;
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5A_attr_cmp_corder_dec() */
+} /* end H5A__attr_cmp_corder_dec() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5A_attr_sort_table
+ * Function:	H5A__attr_sort_table
  *
  * Purpose:     Sort table containing a list of attributes for an object
  *
@@ -518,10 +518,10 @@ H5A_attr_cmp_corder_dec(const void *attr1, const void *attr2)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5A_attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
+H5A__attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
     H5_iter_order_t order)
 {
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(atable);
@@ -529,24 +529,24 @@ H5A_attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
     /* Pick appropriate comparison routine */
     if(idx_type == H5_INDEX_NAME) {
         if(order == H5_ITER_INC)
-            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A_attr_cmp_name_inc);
+            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A__attr_cmp_name_inc);
         else if(order == H5_ITER_DEC)
-            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A_attr_cmp_name_dec);
+            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A__attr_cmp_name_dec);
         else
             HDassert(order == H5_ITER_NATIVE);
     } /* end if */
     else {
         HDassert(idx_type == H5_INDEX_CRT_ORDER);
         if(order == H5_ITER_INC)
-            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A_attr_cmp_corder_inc);
+            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A__attr_cmp_corder_inc);
         else if(order == H5_ITER_DEC)
-            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A_attr_cmp_corder_dec);
+            HDqsort(atable->attrs, atable->nattrs, sizeof(H5A_t*), H5A__attr_cmp_corder_dec);
         else
             HDassert(order == H5_ITER_NATIVE);
     } /* end else */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5A_attr_sort_table() */
+} /* end H5A__attr_sort_table() */
 
 
 /*-------------------------------------------------------------------------
@@ -760,7 +760,7 @@ H5A_set_version(const H5F_t *f, H5A_t *attr)
     hbool_t type_shared, space_shared;  /* Flags to indicate that shared messages are used for this attribute */
     hbool_t use_latest_format;          /* Flag indicating the newest file format should be used */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_NOAPI_NOERR
 
     /* check arguments */
     HDassert(f);
diff --git a/src/H5B2int.c b/src/H5B2int.c
index b31d439..1d5b5ff 100644
--- a/src/H5B2int.c
+++ b/src/H5B2int.c
@@ -140,7 +140,7 @@ H5B2_locate_record(const H5B2_class_t *type, unsigned nrec, size_t *rec_off,
     unsigned    my_idx = 0;     /* Final index value */
     int         cmp = -1;       /* Key comparison value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     hi = nrec;
     while(lo < hi && cmp) {
diff --git a/src/H5D.c b/src/H5D.c
index d4b984d..3eed64a 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -20,7 +20,7 @@
 #define H5D_PACKAGE		/*suppress error about including H5Dpkg	  */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5D_init_pub_interface
+#define H5_INTERFACE_INIT_FUNC	H5D__init_pub_interface
 
 
 /***********/
@@ -75,9 +75,9 @@ H5FL_BLK_EXTERN(type_conv);
 
 /*--------------------------------------------------------------------------
 NAME
-   H5D_init_pub_interface -- Initialize interface-specific information
+   H5D__init_pub_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5D_init_pub_interface()
+    herr_t H5D__init_pub_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -86,12 +86,12 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5D_init_pub_interface(void)
+H5D__init_pub_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5D_init())
-} /* H5D_init_pub_interface() */
+} /* H5D__init_pub_interface() */
 
 
 /*-------------------------------------------------------------------------
@@ -248,7 +248,7 @@ H5Dcreate_anon(hid_t loc_id, hid_t type_id, hid_t space_id, hid_t dcpl_id,
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not dataset access property list")
 
     /* build and open the new dataset */
-    if(NULL == (dset = H5D_create(loc.oloc->file, type_id, space, dcpl_id, dapl_id, H5AC_dxpl_id)))
+    if(NULL == (dset = H5D__create(loc.oloc->file, type_id, space, dcpl_id, dapl_id, H5AC_dxpl_id)))
 	HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create dataset")
 
     /* Register the new dataset to get an ID for it */
@@ -484,7 +484,7 @@ H5Dget_space_status(hid_t dset_id, H5D_space_status_t *allocation)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset")
 
     /* Read data space address and return */
-    if(FAIL==(ret_value=H5D_get_space_status(dset, allocation, H5AC_ind_dxpl_id)))
+    if(H5D__get_space_status(dset, allocation, H5AC_ind_dxpl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to get space status")
 
 done:
@@ -786,7 +786,8 @@ H5Dget_storage_size(hid_t dset_id)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a dataset")
 
     /* Set return value */
-    ret_value = H5D_get_storage_size(dset, H5AC_ind_dxpl_id);
+    if(H5D__get_storage_size(dset, H5AC_ind_dxpl_id, &ret_value) < 0)
+        HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, 0, "can't get size of dataset's storage")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -821,7 +822,7 @@ H5Dget_offset(hid_t dset_id)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, HADDR_UNDEF, "not a dataset")
 
     /* Set return value */
-    ret_value = H5D_get_offset(dset);
+    ret_value = H5D__get_offset(dset);
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -909,7 +910,7 @@ H5Diterate(void *buf, hid_t type_id, hid_t space_id, H5D_operator_t op,
     if(!(H5S_has_extent(space)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "dataspace does not have extent set")
 
-    ret_value = H5D_iterate(buf, type_id, space, op, operator_data);
+    ret_value = H5D__iterate(buf, type_id, space, op, operator_data);
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1040,14 +1041,14 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id,
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list")
 
     /* Set the memory manager to the special allocation routine */
-    if(H5P_set_vlen_mem_manager(plist, H5D_vlen_get_buf_size_alloc, &vlen_bufsize, NULL, NULL) < 0)
+    if(H5P_set_vlen_mem_manager(plist, H5D__vlen_get_buf_size_alloc, &vlen_bufsize, NULL, NULL) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't set VL data allocation routine")
 
     /* Set the initial number of bytes required */
     vlen_bufsize.size = 0;
 
-    /* Call H5D_iterate with args, etc. */
-    ret_value = H5D_iterate(&bogus, type_id, space, H5D_vlen_get_buf_size, &vlen_bufsize);
+    /* Call H5D__iterate with args, etc. */
+    ret_value = H5D__iterate(&bogus, type_id, space, H5D__vlen_get_buf_size, &vlen_bufsize);
 
     /* Get the size if we succeeded */
     if(ret_value >= 0)
@@ -1098,7 +1099,7 @@ H5Dset_extent(hid_t dset_id, const hsize_t size[])
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no size specified")
 
     /* Private function */
-    if(H5D_set_extent(dset, size, H5AC_dxpl_id) < 0)
+    if(H5D__set_extent(dset, size, H5AC_dxpl_id) < 0)
 	HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to set extend dataset")
 
 done:
diff --git a/src/H5Dbtree.c b/src/H5Dbtree.c
index cf48bb5..e204bb9 100644
--- a/src/H5Dbtree.c
+++ b/src/H5Dbtree.c
@@ -97,58 +97,58 @@ typedef struct H5D_btree_dbg_t {
 /* Local Prototypes */
 /********************/
 
-static herr_t H5D_btree_shared_create(const H5F_t *f, H5O_storage_chunk_t *store,
+static herr_t H5D__btree_shared_create(const H5F_t *f, H5O_storage_chunk_t *store,
     unsigned ndims);
 
 /* B-tree iterator callbacks */
-static int H5D_btree_idx_iterate_cb(H5F_t *f, hid_t dxpl_id, const void *left_key,
+static int H5D__btree_idx_iterate_cb(H5F_t *f, hid_t dxpl_id, const void *left_key,
     haddr_t addr, const void *right_key, void *_udata);
 
 /* B-tree callbacks */
-static H5RC_t *H5D_btree_get_shared(const H5F_t *f, const void *_udata);
-static herr_t H5D_btree_new_node(H5F_t *f, hid_t dxpl_id, H5B_ins_t, void *_lt_key,
+static H5RC_t *H5D__btree_get_shared(const H5F_t *f, const void *_udata);
+static herr_t H5D__btree_new_node(H5F_t *f, hid_t dxpl_id, H5B_ins_t, void *_lt_key,
     void *_udata, void *_rt_key, haddr_t *addr_p /*out*/);
-static int H5D_btree_cmp2(void *_lt_key, void *_udata, void *_rt_key);
-static int H5D_btree_cmp3(void *_lt_key, void *_udata, void *_rt_key);
-static htri_t H5D_btree_found(H5F_t *f, hid_t dxpl_id, haddr_t addr,
+static int H5D__btree_cmp2(void *_lt_key, void *_udata, void *_rt_key);
+static int H5D__btree_cmp3(void *_lt_key, void *_udata, void *_rt_key);
+static htri_t H5D__btree_found(H5F_t *f, hid_t dxpl_id, haddr_t addr,
     const void *_lt_key, void *_udata);
-static H5B_ins_t H5D_btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr,
+static H5B_ins_t H5D__btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr,
     void *_lt_key, hbool_t *lt_key_changed, void *_md_key, void *_udata,
     void *_rt_key, hbool_t *rt_key_changed, haddr_t *new_node/*out*/);
-static H5B_ins_t H5D_btree_remove( H5F_t *f, hid_t dxpl_id, haddr_t addr,
+static H5B_ins_t H5D__btree_remove( H5F_t *f, hid_t dxpl_id, haddr_t addr,
     void *_lt_key, hbool_t *lt_key_changed, void *_udata, void *_rt_key,
     hbool_t *rt_key_changed);
-static herr_t H5D_btree_decode_key(const H5B_shared_t *shared, const uint8_t *raw,
+static herr_t H5D__btree_decode_key(const H5B_shared_t *shared, const uint8_t *raw,
     void *_key);
-static herr_t H5D_btree_encode_key(const H5B_shared_t *shared, uint8_t *raw,
+static herr_t H5D__btree_encode_key(const H5B_shared_t *shared, uint8_t *raw,
     const void *_key);
-static herr_t H5D_btree_debug_key(FILE *stream, int indent, int fwidth,
+static herr_t H5D__btree_debug_key(FILE *stream, int indent, int fwidth,
     const void *key, const void *udata);
 
 /* Chunked layout indexing callbacks */
-static herr_t H5D_btree_idx_init(const H5D_chk_idx_info_t *idx_info,
+static herr_t H5D__btree_idx_init(const H5D_chk_idx_info_t *idx_info,
     const H5S_t *space, haddr_t dset_ohdr_addr);
-static herr_t H5D_btree_idx_create(const H5D_chk_idx_info_t *idx_info);
-static hbool_t H5D_btree_idx_is_space_alloc(const H5O_storage_chunk_t *storage);
-static herr_t H5D_btree_idx_insert(const H5D_chk_idx_info_t *idx_info,
+static herr_t H5D__btree_idx_create(const H5D_chk_idx_info_t *idx_info);
+static hbool_t H5D__btree_idx_is_space_alloc(const H5O_storage_chunk_t *storage);
+static herr_t H5D__btree_idx_insert(const H5D_chk_idx_info_t *idx_info,
     H5D_chunk_ud_t *udata);
-static herr_t H5D_btree_idx_get_addr(const H5D_chk_idx_info_t *idx_info,
+static herr_t H5D__btree_idx_get_addr(const H5D_chk_idx_info_t *idx_info,
     H5D_chunk_ud_t *udata);
-static int H5D_btree_idx_iterate(const H5D_chk_idx_info_t *idx_info,
+static int H5D__btree_idx_iterate(const H5D_chk_idx_info_t *idx_info,
     H5D_chunk_cb_func_t chunk_cb, void *chunk_udata);
-static herr_t H5D_btree_idx_remove(const H5D_chk_idx_info_t *idx_info,
+static herr_t H5D__btree_idx_remove(const H5D_chk_idx_info_t *idx_info,
     H5D_chunk_common_ud_t *udata);
-static herr_t H5D_btree_idx_delete(const H5D_chk_idx_info_t *idx_info);
-static herr_t H5D_btree_idx_copy_setup(const H5D_chk_idx_info_t *idx_info_src,
+static herr_t H5D__btree_idx_delete(const H5D_chk_idx_info_t *idx_info);
+static herr_t H5D__btree_idx_copy_setup(const H5D_chk_idx_info_t *idx_info_src,
     const H5D_chk_idx_info_t *idx_info_dst);
-static herr_t H5D_btree_idx_copy_shutdown(H5O_storage_chunk_t *storage_src,
+static herr_t H5D__btree_idx_copy_shutdown(H5O_storage_chunk_t *storage_src,
     H5O_storage_chunk_t *storage_dst, hid_t dxpl_id);
-static herr_t H5D_btree_idx_size(const H5D_chk_idx_info_t *idx_info,
+static herr_t H5D__btree_idx_size(const H5D_chk_idx_info_t *idx_info,
     hsize_t *size);
-static herr_t H5D_btree_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr);
-static herr_t H5D_btree_idx_dump(const H5O_storage_chunk_t *storage,
+static herr_t H5D__btree_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr);
+static herr_t H5D__btree_idx_dump(const H5O_storage_chunk_t *storage,
     FILE *stream);
-static herr_t H5D_btree_idx_dest(const H5D_chk_idx_info_t *idx_info);
+static herr_t H5D__btree_idx_dest(const H5D_chk_idx_info_t *idx_info);
 
 
 /*********************/
@@ -157,21 +157,21 @@ static herr_t H5D_btree_idx_dest(const H5D_chk_idx_info_t *idx_info);
 
 /* v1 B-tree indexed chunk I/O ops */
 const H5D_chunk_ops_t H5D_COPS_BTREE[1] = {{
-    H5D_btree_idx_init,
-    H5D_btree_idx_create,
-    H5D_btree_idx_is_space_alloc,
-    H5D_btree_idx_insert,
-    H5D_btree_idx_get_addr,
+    H5D__btree_idx_init,
+    H5D__btree_idx_create,
+    H5D__btree_idx_is_space_alloc,
+    H5D__btree_idx_insert,
+    H5D__btree_idx_get_addr,
     NULL,
-    H5D_btree_idx_iterate,
-    H5D_btree_idx_remove,
-    H5D_btree_idx_delete,
-    H5D_btree_idx_copy_setup,
-    H5D_btree_idx_copy_shutdown,
-    H5D_btree_idx_size,
-    H5D_btree_idx_reset,
-    H5D_btree_idx_dump,
-    H5D_btree_idx_dest
+    H5D__btree_idx_iterate,
+    H5D__btree_idx_remove,
+    H5D__btree_idx_delete,
+    H5D__btree_idx_copy_setup,
+    H5D__btree_idx_copy_shutdown,
+    H5D__btree_idx_size,
+    H5D__btree_idx_reset,
+    H5D__btree_idx_dump,
+    H5D__btree_idx_dest
 }};
 
 
@@ -183,19 +183,19 @@ const H5D_chunk_ops_t H5D_COPS_BTREE[1] = {{
 H5B_class_t H5B_BTREE[1] = {{
     H5B_CHUNK_ID,		/*id			*/
     sizeof(H5D_btree_key_t),	/*sizeof_nkey		*/
-    H5D_btree_get_shared,	/*get_shared		*/
-    H5D_btree_new_node,		/*new			*/
-    H5D_btree_cmp2,		/*cmp2			*/
-    H5D_btree_cmp3,		/*cmp3			*/
-    H5D_btree_found,		/*found			*/
-    H5D_btree_insert,		/*insert		*/
+    H5D__btree_get_shared,	/*get_shared		*/
+    H5D__btree_new_node,	/*new			*/
+    H5D__btree_cmp2,		/*cmp2			*/
+    H5D__btree_cmp3,		/*cmp3			*/
+    H5D__btree_found,		/*found			*/
+    H5D__btree_insert,		/*insert		*/
     FALSE,			/*follow min branch?	*/
     FALSE,			/*follow max branch?	*/
     H5B_LEFT,                   /*critical key          */
-    H5D_btree_remove,           /*remove		*/
-    H5D_btree_decode_key,	/*decode		*/
-    H5D_btree_encode_key,	/*encode		*/
-    H5D_btree_debug_key,	/*debug			*/
+    H5D__btree_remove,		/*remove		*/
+    H5D__btree_decode_key,	/*decode		*/
+    H5D__btree_encode_key,	/*encode		*/
+    H5D__btree_debug_key,	/*debug			*/
 }};
 
 
@@ -205,7 +205,7 @@ H5B_class_t H5B_BTREE[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_get_shared
+ * Function:	H5D__btree_get_shared
  *
  * Purpose:	Returns the shared B-tree info for the specified UDATA.
  *
@@ -220,11 +220,11 @@ H5B_class_t H5B_BTREE[1] = {{
  */
 /* ARGSUSED */
 static H5RC_t *
-H5D_btree_get_shared(const H5F_t UNUSED *f, const void *_udata)
+H5D__btree_get_shared(const H5F_t UNUSED *f, const void *_udata)
 {
     const H5D_chunk_common_ud_t *udata = (const H5D_chunk_common_ud_t *) _udata;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(udata);
     HDassert(udata->storage);
@@ -233,11 +233,11 @@ H5D_btree_get_shared(const H5F_t UNUSED *f, const void *_udata)
 
     /* Return the pointer to the ref-count object */
     FUNC_LEAVE_NOAPI(udata->storage->u.btree.shared)
-} /* end H5D_btree_get_shared() */
+} /* end H5D__btree_get_shared() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_new_node
+ * Function:	H5D__btree_new_node
  *
  * Purpose:	Adds a new entry to an i-storage B-tree.  We can assume that
  *		the domain represented by UDATA doesn't intersect the domain
@@ -255,7 +255,7 @@ H5D_btree_get_shared(const H5F_t UNUSED *f, const void *_udata)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_new_node(H5F_t *f, hid_t dxpl_id, H5B_ins_t op,
+H5D__btree_new_node(H5F_t *f, hid_t dxpl_id, H5B_ins_t op,
 		    void *_lt_key, void *_udata, void *_rt_key,
 		    haddr_t *addr_p/*out*/)
 {
@@ -265,7 +265,7 @@ H5D_btree_new_node(H5F_t *f, hid_t dxpl_id, H5B_ins_t op,
     unsigned		u;
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(f);
@@ -307,11 +307,11 @@ H5D_btree_new_node(H5F_t *f, hid_t dxpl_id, H5B_ins_t op,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_new_node() */
+} /* end H5D__btree_new_node() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_cmp2
+ * Function:	H5D__btree_cmp2
  *
  * Purpose:	Compares two keys sort of like strcmp().  The UDATA pointer
  *		is only to supply extra information not carried in the keys
@@ -330,14 +330,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5D_btree_cmp2(void *_lt_key, void *_udata, void *_rt_key)
+H5D__btree_cmp2(void *_lt_key, void *_udata, void *_rt_key)
 {
     H5D_btree_key_t	*lt_key = (H5D_btree_key_t *) _lt_key;
     H5D_btree_key_t	*rt_key = (H5D_btree_key_t *) _rt_key;
     H5D_chunk_common_ud_t	*udata = (H5D_chunk_common_ud_t *) _udata;
     int		ret_value;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(lt_key);
     HDassert(rt_key);
@@ -348,11 +348,11 @@ H5D_btree_cmp2(void *_lt_key, void *_udata, void *_rt_key)
     ret_value = H5V_vector_cmp_u(udata->layout->ndims, lt_key->offset, rt_key->offset);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_cmp2() */
+} /* end H5D__btree_cmp2() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_cmp3
+ * Function:	H5D__btree_cmp3
  *
  * Purpose:	Compare the requested datum UDATA with the left and right
  *		keys of the B-tree.
@@ -379,14 +379,14 @@ H5D_btree_cmp2(void *_lt_key, void *_udata, void *_rt_key)
  *-------------------------------------------------------------------------
  */
 static int
-H5D_btree_cmp3(void *_lt_key, void *_udata, void *_rt_key)
+H5D__btree_cmp3(void *_lt_key, void *_udata, void *_rt_key)
 {
     H5D_btree_key_t	*lt_key = (H5D_btree_key_t *) _lt_key;
     H5D_btree_key_t	*rt_key = (H5D_btree_key_t *) _rt_key;
     H5D_chunk_common_ud_t	*udata = (H5D_chunk_common_ud_t *) _udata;
     int		ret_value = 0;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(lt_key);
     HDassert(rt_key);
@@ -416,11 +416,11 @@ H5D_btree_cmp3(void *_lt_key, void *_udata, void *_rt_key)
     } /* end else */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_cmp3() */
+} /* end H5D__btree_cmp3() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_found
+ * Function:	H5D__btree_found
  *
  * Purpose:	This function is called when the B-tree search engine has
  *		found the leaf entry that points to a chunk of storage that
@@ -445,7 +445,7 @@ H5D_btree_cmp3(void *_lt_key, void *_udata, void *_rt_key)
  */
 /* ARGSUSED */
 static htri_t
-H5D_btree_found(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, haddr_t addr, const void *_lt_key,
+H5D__btree_found(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, haddr_t addr, const void *_lt_key,
 		 void *_udata)
 {
     H5D_chunk_ud_t	   *udata = (H5D_chunk_ud_t *) _udata;
@@ -453,7 +453,7 @@ H5D_btree_found(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, haddr_t addr, const void
     unsigned		u;
     htri_t      ret_value = TRUE;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Check arguments */
     HDassert(f);
@@ -474,11 +474,11 @@ H5D_btree_found(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, haddr_t addr, const void
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_found() */
+} /* end H5D__btree_found() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_insert
+ * Function:	H5D__btree_insert
  *
  * Purpose:	This function is called when the B-tree insert engine finds
  *		the node to use to insert new data.  The UDATA argument
@@ -507,7 +507,7 @@ done:
  */
 /* ARGSUSED */
 static H5B_ins_t
-H5D_btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
+H5D__btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
 		  hbool_t *lt_key_changed,
 		  void *_md_key, void *_udata, void *_rt_key,
 		  hbool_t UNUSED *rt_key_changed,
@@ -521,7 +521,7 @@ H5D_btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
     unsigned		u;
     H5B_ins_t		ret_value;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(f);
@@ -533,7 +533,7 @@ H5D_btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
     HDassert(rt_key);
     HDassert(new_node_p);
 
-    cmp = H5D_btree_cmp3(lt_key, udata, rt_key);
+    cmp = H5D__btree_cmp3(lt_key, udata, rt_key);
     HDassert(cmp <= 0);
 
     if(cmp < 0) {
@@ -611,11 +611,11 @@ H5D_btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_insert() */
+} /* end H5D__btree_insert() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_remove
+ * Function:	H5D__btree_remove
  *
  * Purpose:	Removes chunks that are no longer necessary in the B-tree.
  *
@@ -629,7 +629,7 @@ done:
  */
 /* ARGSUSED */
 static H5B_ins_t
-H5D_btree_remove(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key /*in,out */ ,
+H5D__btree_remove(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key /*in,out */ ,
 	hbool_t *lt_key_changed /*out */ ,
 	void UNUSED * _udata /*in,out */ ,
 	void UNUSED * _rt_key /*in,out */ ,
@@ -638,7 +638,7 @@ H5D_btree_remove(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key /*in,out *
     H5D_btree_key_t    *lt_key = (H5D_btree_key_t *)_lt_key;
     H5B_ins_t ret_value=H5B_INS_REMOVE; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Remove raw data chunk from file */
     H5_CHECK_OVERFLOW(lt_key->nbytes, uint32_t, hsize_t);
@@ -651,11 +651,11 @@ H5D_btree_remove(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key /*in,out *
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_remove() */
+} /* end H5D__btree_remove() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_decode_key
+ * Function:	H5D__btree_decode_key
  *
  * Purpose:	Decodes a raw key into a native key for the B-tree
  *
@@ -667,13 +667,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_decode_key(const H5B_shared_t *shared, const uint8_t *raw, void *_key)
+H5D__btree_decode_key(const H5B_shared_t *shared, const uint8_t *raw, void *_key)
 {
     H5D_btree_key_t	*key = (H5D_btree_key_t *) _key;
     size_t		ndims;
     unsigned		u;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* check args */
     HDassert(shared);
@@ -689,11 +689,11 @@ H5D_btree_decode_key(const H5B_shared_t *shared, const uint8_t *raw, void *_key)
 	UINT64DECODE(raw, key->offset[u]);
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_btree_decode_key() */
+} /* end H5D__btree_decode_key() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_encode_key
+ * Function:	H5D__btree_encode_key
  *
  * Purpose:	Encode a key from native format to raw format.
  *
@@ -705,13 +705,13 @@ H5D_btree_decode_key(const H5B_shared_t *shared, const uint8_t *raw, void *_key)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_encode_key(const H5B_shared_t *shared, uint8_t *raw, const void *_key)
+H5D__btree_encode_key(const H5B_shared_t *shared, uint8_t *raw, const void *_key)
 {
     const H5D_btree_key_t *key = (const H5D_btree_key_t *)_key;
     size_t		ndims;
     unsigned		u;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* check args */
     HDassert(shared);
@@ -727,11 +727,11 @@ H5D_btree_encode_key(const H5B_shared_t *shared, uint8_t *raw, const void *_key)
 	UINT64ENCODE(raw, key->offset[u]);
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_btree_encode_key() */
+} /* end H5D__btree_encode_key() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_debug_key
+ * Function:	H5D__btree_debug_key
  *
  * Purpose:	Prints a key.
  *
@@ -744,14 +744,14 @@ H5D_btree_encode_key(const H5B_shared_t *shared, uint8_t *raw, const void *_key)
  */
 /* ARGSUSED */
 static herr_t
-H5D_btree_debug_key(FILE *stream, int indent, int fwidth, const void *_key,
+H5D__btree_debug_key(FILE *stream, int indent, int fwidth, const void *_key,
     const void *_udata)
 {
     const H5D_btree_key_t	*key = (const H5D_btree_key_t *)_key;
     const H5D_btree_dbg_t	*udata = (const H5D_btree_dbg_t *)_udata;
     unsigned		u;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(key);
 
@@ -763,11 +763,11 @@ H5D_btree_debug_key(FILE *stream, int indent, int fwidth, const void *_key,
     HDfputs("}\n", stream);
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_btree_debug_key() */
+} /* end H5D__btree_debug_key() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_shared_create
+ * Function:	H5D__btree_shared_create
  *
  * Purpose:	Create & initialize B-tree shared info
  *
@@ -779,13 +779,13 @@ H5D_btree_debug_key(FILE *stream, int indent, int fwidth, const void *_key,
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_shared_create(const H5F_t *f, H5O_storage_chunk_t *store, unsigned ndims)
+H5D__btree_shared_create(const H5F_t *f, H5O_storage_chunk_t *store, unsigned ndims)
 {
     H5B_shared_t *shared;               /* Shared B-tree node info */
     size_t	sizeof_rkey;	        /* Size of raw (disk) key	     */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Set the raw key size */
     sizeof_rkey = 4 +			/*storage size		*/
@@ -805,11 +805,11 @@ H5D_btree_shared_create(const H5F_t *f, H5O_storage_chunk_t *store, unsigned ndi
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_shared_create() */
+} /* end H5D__btree_shared_create() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_init
+ * Function:	H5D__btree_idx_init
  *
  * Purpose:	Initialize the indexing information for a dataset.
  *
@@ -821,12 +821,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_init(const H5D_chk_idx_info_t *idx_info, const H5S_t UNUSED *space,
+H5D__btree_idx_init(const H5D_chk_idx_info_t *idx_info, const H5S_t UNUSED *space,
     haddr_t dset_ohdr_addr)
 {
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(idx_info);
@@ -839,16 +839,16 @@ H5D_btree_idx_init(const H5D_chk_idx_info_t *idx_info, const H5S_t UNUSED *space
     idx_info->storage->u.btree.dset_ohdr_addr = dset_ohdr_addr;
 
     /* Allocate the shared structure */
-    if(H5D_btree_shared_create(idx_info->f, idx_info->storage, idx_info->layout->ndims) < 0)
+    if(H5D__btree_shared_create(idx_info->f, idx_info->storage, idx_info->layout->ndims) < 0)
 	HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't create wrapper for shared B-tree info")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_init() */
+} /* end H5D__btree_idx_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_create
+ * Function:	H5D__btree_idx_create
  *
  * Purpose:	Creates a new indexed-storage B-tree and initializes the
  *		layout struct with information about the storage.  The
@@ -866,12 +866,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_create(const H5D_chk_idx_info_t *idx_info)
+H5D__btree_idx_create(const H5D_chk_idx_info_t *idx_info)
 {
     H5D_chunk_common_ud_t udata;             /* User data for B-tree callback */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(idx_info);
@@ -891,11 +891,11 @@ H5D_btree_idx_create(const H5D_chk_idx_info_t *idx_info)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_create() */
+} /* end H5D__btree_idx_create() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_is_space_alloc
+ * Function:	H5D__btree_idx_is_space_alloc
  *
  * Purpose:	Query if space is allocated for index method
  *
@@ -907,11 +907,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static hbool_t
-H5D_btree_idx_is_space_alloc(const H5O_storage_chunk_t *storage)
+H5D__btree_idx_is_space_alloc(const H5O_storage_chunk_t *storage)
 {
     hbool_t ret_value;          /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Check args */
     HDassert(storage);
@@ -920,11 +920,11 @@ H5D_btree_idx_is_space_alloc(const H5O_storage_chunk_t *storage)
     ret_value = (hbool_t)H5F_addr_defined(storage->idx_addr);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_is_space_alloc() */
+} /* end H5D__btree_idx_is_space_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_insert
+ * Function:	H5D__btree_idx_insert
  *
  * Purpose:	Create the chunk it if it doesn't exist, or reallocate the
  *              chunk if its size changed.
@@ -937,11 +937,11 @@ H5D_btree_idx_is_space_alloc(const H5O_storage_chunk_t *storage)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_insert(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata)
+H5D__btree_idx_insert(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata)
 {
     herr_t	ret_value = SUCCEED;		/* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(idx_info);
     HDassert(idx_info->f);
@@ -960,11 +960,11 @@ H5D_btree_idx_insert(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_btree_idx_insert() */
+} /* H5D__btree_idx_insert() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_get_addr
+ * Function:	H5D__btree_idx_get_addr
  *
  * Purpose:	Get the file address of a chunk if file space has been
  *		assigned.  Save the retrieved information in the udata
@@ -978,11 +978,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_get_addr(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata)
+H5D__btree_idx_get_addr(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata)
 {
     herr_t	ret_value = SUCCEED;	/* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(idx_info);
     HDassert(idx_info->f);
@@ -999,11 +999,11 @@ H5D_btree_idx_get_addr(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_btree_idx_get_addr() */
+} /* H5D__btree_idx_get_addr() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_iterate_cb
+ * Function:	H5D__btree_idx_iterate_cb
  *
  * Purpose:	Translate the B-tree specific chunk record into a generic
  *              form and make the callback to the generic chunk callback
@@ -1019,7 +1019,7 @@ done:
  */
 /* ARGSUSED */
 static int
-H5D_btree_idx_iterate_cb(H5F_t UNUSED *f, hid_t UNUSED dxpl_id,
+H5D__btree_idx_iterate_cb(H5F_t UNUSED *f, hid_t UNUSED dxpl_id,
     const void *_lt_key, haddr_t addr, const void UNUSED *_rt_key,
     void *_udata)
 {
@@ -1028,7 +1028,7 @@ H5D_btree_idx_iterate_cb(H5F_t UNUSED *f, hid_t UNUSED dxpl_id,
     H5D_chunk_rec_t chunk_rec;  /* Generic chunk record for callback */
     int ret_value;              /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check for memcpy() */
     HDcompile_assert(offsetof(H5D_chunk_rec_t, nbytes) == offsetof(H5D_btree_key_t, nbytes));
@@ -1047,11 +1047,11 @@ H5D_btree_idx_iterate_cb(H5F_t UNUSED *f, hid_t UNUSED dxpl_id,
         HERROR(H5E_DATASET, H5E_CALLBACK, "failure in generic chunk iterator callback");
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_btree_idx_iterate_cb() */
+} /* H5D__btree_idx_iterate_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_iterate
+ * Function:	H5D__btree_idx_iterate
  *
  * Purpose:	Iterate over the chunks in an index, making a callback
  *              for each one.
@@ -1064,13 +1064,13 @@ H5D_btree_idx_iterate_cb(H5F_t UNUSED *f, hid_t UNUSED dxpl_id,
  *-------------------------------------------------------------------------
  */
 static int
-H5D_btree_idx_iterate(const H5D_chk_idx_info_t *idx_info,
+H5D__btree_idx_iterate(const H5D_chk_idx_info_t *idx_info,
     H5D_chunk_cb_func_t chunk_cb, void *chunk_udata)
 {
     H5D_btree_it_ud_t	udata;  /* User data for B-tree iterator callback */
     int ret_value;              /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(idx_info);
     HDassert(idx_info->f);
@@ -1089,15 +1089,15 @@ H5D_btree_idx_iterate(const H5D_chk_idx_info_t *idx_info,
     udata.udata = chunk_udata;
 
     /* Iterate over existing chunks */
-    if((ret_value = H5B_iterate(idx_info->f, idx_info->dxpl_id, H5B_BTREE, idx_info->storage->idx_addr, H5D_btree_idx_iterate_cb, &udata)) < 0)
+    if((ret_value = H5B_iterate(idx_info->f, idx_info->dxpl_id, H5B_BTREE, idx_info->storage->idx_addr, H5D__btree_idx_iterate_cb, &udata)) < 0)
         HERROR(H5E_DATASET, H5E_BADITER, "unable to iterate over chunk B-tree");
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_iterate() */
+} /* end H5D__btree_idx_iterate() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_remove
+ * Function:	H5D__btree_idx_remove
  *
  * Purpose:	Remove chunk from index.
  *
@@ -1109,11 +1109,11 @@ H5D_btree_idx_iterate(const H5D_chk_idx_info_t *idx_info,
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_remove(const H5D_chk_idx_info_t *idx_info, H5D_chunk_common_ud_t *udata)
+H5D__btree_idx_remove(const H5D_chk_idx_info_t *idx_info, H5D_chunk_common_ud_t *udata)
 {
     herr_t	ret_value = SUCCEED;		/* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(idx_info);
     HDassert(idx_info->f);
@@ -1131,11 +1131,11 @@ H5D_btree_idx_remove(const H5D_chk_idx_info_t *idx_info, H5D_chunk_common_ud_t *
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_btree_idx_remove() */
+} /* H5D__btree_idx_remove() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_delete
+ * Function:	H5D__btree_idx_delete
  *
  * Purpose:	Delete index and raw data storage for entire dataset
  *              (i.e. all chunks)
@@ -1149,11 +1149,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_delete(const H5D_chk_idx_info_t *idx_info)
+H5D__btree_idx_delete(const H5D_chk_idx_info_t *idx_info)
 {
     herr_t ret_value = SUCCEED;     /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(idx_info);
@@ -1171,7 +1171,7 @@ H5D_btree_idx_delete(const H5D_chk_idx_info_t *idx_info)
         tmp_storage = *idx_info->storage;
 
         /* Set up the shared structure */
-        if(H5D_btree_shared_create(idx_info->f, &tmp_storage, idx_info->layout->ndims) < 0)
+        if(H5D__btree_shared_create(idx_info->f, &tmp_storage, idx_info->layout->ndims) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't create wrapper for shared B-tree info")
 
         /* Set up B-tree user data */
@@ -1192,11 +1192,11 @@ H5D_btree_idx_delete(const H5D_chk_idx_info_t *idx_info)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_delete() */
+} /* end H5D__btree_idx_delete() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_copy_setup
+ * Function:	H5D__btree_idx_copy_setup
  *
  * Purpose:	Set up any necessary information for copying chunks
  *
@@ -1208,12 +1208,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_copy_setup(const H5D_chk_idx_info_t *idx_info_src,
+H5D__btree_idx_copy_setup(const H5D_chk_idx_info_t *idx_info_src,
     const H5D_chk_idx_info_t *idx_info_dst)
 {
     herr_t      ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(idx_info_src);
     HDassert(idx_info_src->f);
@@ -1228,23 +1228,23 @@ H5D_btree_idx_copy_setup(const H5D_chk_idx_info_t *idx_info_src,
     HDassert(!H5F_addr_defined(idx_info_dst->storage->idx_addr));
 
     /* Create shared B-tree info for each file */
-    if(H5D_btree_shared_create(idx_info_src->f, idx_info_src->storage, idx_info_src->layout->ndims) < 0)
+    if(H5D__btree_shared_create(idx_info_src->f, idx_info_src->storage, idx_info_src->layout->ndims) < 0)
         HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't create wrapper for source shared B-tree info")
-    if(H5D_btree_shared_create(idx_info_dst->f, idx_info_dst->storage, idx_info_dst->layout->ndims) < 0)
+    if(H5D__btree_shared_create(idx_info_dst->f, idx_info_dst->storage, idx_info_dst->layout->ndims) < 0)
         HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't create wrapper for destination shared B-tree info")
 
     /* Create the root of the B-tree that describes chunked storage in the dest. file */
-    if(H5D_btree_idx_create(idx_info_dst) < 0)
+    if(H5D__btree_idx_create(idx_info_dst) < 0)
         HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to initialize chunked storage")
     HDassert(H5F_addr_defined(idx_info_dst->storage->idx_addr));
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_copy_setup() */
+} /* end H5D__btree_idx_copy_setup() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_copy_shutdown
+ * Function:	H5D__btree_idx_copy_shutdown
  *
  * Purpose:	Shutdown any information from copying chunks
  *
@@ -1256,13 +1256,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_copy_shutdown(H5O_storage_chunk_t *storage_src,
+H5D__btree_idx_copy_shutdown(H5O_storage_chunk_t *storage_src,
     H5O_storage_chunk_t *storage_dst,
     hid_t UNUSED dxpl_id)
 {
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(storage_src);
     HDassert(storage_dst);
@@ -1275,11 +1275,11 @@ H5D_btree_idx_copy_shutdown(H5O_storage_chunk_t *storage_src,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_copy_shutdown() */
+} /* end H5D__btree_idx_copy_shutdown() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_btree_idx_size
+ * Function:    H5D__btree_idx_size
  *
  * Purpose:     Retrieve the amount of index storage for chunked dataset
  *
@@ -1292,14 +1292,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_size(const H5D_chk_idx_info_t *idx_info, hsize_t *index_size)
+H5D__btree_idx_size(const H5D_chk_idx_info_t *idx_info, hsize_t *index_size)
 {
     H5D_chunk_common_ud_t udata;              /* User-data for loading B-tree nodes */
     H5B_info_t bt_info;                 /* B-tree info */
     hbool_t shared_init = FALSE;        /* Whether shared B-tree info is initialized */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(idx_info);
@@ -1310,7 +1310,7 @@ H5D_btree_idx_size(const H5D_chk_idx_info_t *idx_info, hsize_t *index_size)
     HDassert(index_size);
 
     /* Initialize the shared info for the B-tree traversal */
-    if(H5D_btree_shared_create(idx_info->f, idx_info->storage, idx_info->layout->ndims) < 0)
+    if(H5D__btree_shared_create(idx_info->f, idx_info->storage, idx_info->layout->ndims) < 0)
         HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't create wrapper for shared B-tree info")
     shared_init = TRUE;
 
@@ -1335,11 +1335,11 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_size() */
+} /* end H5D__btree_idx_size() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_reset
+ * Function:	H5D__btree_idx_reset
  *
  * Purpose:	Reset indexing information.
  *
@@ -1351,9 +1351,9 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr)
+H5D__btree_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(storage);
 
@@ -1363,11 +1363,11 @@ H5D_btree_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr)
     storage->u.btree.shared = NULL;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_btree_idx_reset() */
+} /* end H5D__btree_idx_reset() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_dump
+ * Function:	H5D__btree_idx_dump
  *
  * Purpose:	Dump indexing information to a stream.
  *
@@ -1379,9 +1379,9 @@ H5D_btree_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_dump(const H5O_storage_chunk_t *storage, FILE *stream)
+H5D__btree_idx_dump(const H5O_storage_chunk_t *storage, FILE *stream)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(storage);
     HDassert(stream);
@@ -1389,11 +1389,11 @@ H5D_btree_idx_dump(const H5O_storage_chunk_t *storage, FILE *stream)
     HDfprintf(stream, "    Address: %a\n", storage->idx_addr);
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_btree_idx_dump() */
+} /* end H5D__btree_idx_dump() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_btree_idx_dest
+ * Function:	H5D__btree_idx_dest
  *
  * Purpose:	Release indexing information in memory.
  *
@@ -1405,11 +1405,11 @@ H5D_btree_idx_dump(const H5O_storage_chunk_t *storage, FILE *stream)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_btree_idx_dest(const H5D_chk_idx_info_t *idx_info)
+H5D__btree_idx_dest(const H5D_chk_idx_info_t *idx_info)
 {
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(idx_info);
     HDassert(idx_info->f);
@@ -1425,7 +1425,7 @@ H5D_btree_idx_dest(const H5D_chk_idx_info_t *idx_info)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_btree_idx_dest() */
+} /* end H5D__btree_idx_dest() */
 
 
 /*-------------------------------------------------------------------------
@@ -1456,7 +1456,7 @@ H5D_btree_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent
     storage.idx_type = H5D_CHUNK_BTREE;
 
     /* Allocate the shared structure */
-    if(H5D_btree_shared_create(f, &storage, ndims) < 0)
+    if(H5D__btree_shared_create(f, &storage, ndims) < 0)
 	HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't create wrapper for shared B-tree info")
     shared_init = TRUE;
 
diff --git a/src/H5Dchunk.c b/src/H5Dchunk.c
index 335298d..2d08f67 100644
--- a/src/H5Dchunk.c
+++ b/src/H5Dchunk.c
@@ -174,48 +174,54 @@ typedef struct H5D_chunk_readvv_ud_t {
 /********************/
 
 /* Chunked layout operation callbacks */
-static herr_t H5D_chunk_construct(H5F_t *f, H5D_t *dset);
-static herr_t H5D_chunk_io_init(const H5D_io_info_t *io_info,
+static herr_t H5D__chunk_construct(H5F_t *f, H5D_t *dset);
+static herr_t H5D__chunk_io_init(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
     const H5S_t *mem_space, H5D_chunk_map_t *fm);
-static herr_t H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+static herr_t H5D__chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *fm);
-static herr_t H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+static herr_t H5D__chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *fm);
-static herr_t H5D_chunk_flush(H5D_t *dset, hid_t dxpl_id);
-static herr_t H5D_chunk_io_term(const H5D_chunk_map_t *fm);
+static herr_t H5D__chunk_flush(H5D_t *dset, hid_t dxpl_id);
+static herr_t H5D__chunk_io_term(const H5D_chunk_map_t *fm);
+static herr_t H5D__chunk_cinfo_cache_reset(H5D_chunk_cached_t *last);
 
 /* "Nonexistent" layout operation callback */
 static ssize_t
-H5D_nonexistent_readvv(const H5D_io_info_t *io_info,
+H5D__nonexistent_readvv(const H5D_io_info_t *io_info,
     size_t chunk_max_nseq, size_t *chunk_curr_seq, size_t chunk_len_arr[], hsize_t chunk_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
 
 /* Helper routines */
-static herr_t H5D_chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims,
+static herr_t H5D__chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims,
     const hsize_t *curr_dims);
-static void *H5D_chunk_alloc(size_t size, const H5O_pline_t *pline);
-static void *H5D_chunk_xfree(void *chk, const H5O_pline_t *pline);
-static void *H5D_chunk_realloc(void *chk, size_t size,
+static void *H5D__chunk_alloc(size_t size, const H5O_pline_t *pline);
+static void *H5D__chunk_xfree(void *chk, const H5O_pline_t *pline);
+static void *H5D__chunk_realloc(void *chk, size_t size,
     const H5O_pline_t *pline);
-static herr_t H5D_chunk_cinfo_cache_update(H5D_chunk_cached_t *last,
+static herr_t H5D__chunk_cinfo_cache_update(H5D_chunk_cached_t *last,
     const H5D_chunk_ud_t *udata);
-static herr_t H5D_free_chunk_info(void *item, void *key, void *opdata);
-static herr_t H5D_create_chunk_map_single(H5D_chunk_map_t *fm,
+static hbool_t H5D__chunk_cinfo_cache_found(const H5D_chunk_cached_t *last,
+    H5D_chunk_ud_t *udata);
+static herr_t H5D__free_chunk_info(void *item, void *key, void *opdata);
+static herr_t H5D__create_chunk_map_single(H5D_chunk_map_t *fm,
     const H5D_io_info_t *io_info);
-static herr_t H5D_create_chunk_file_map_hyper(H5D_chunk_map_t *fm,
+static herr_t H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm,
     const H5D_io_info_t *io_info);
-static herr_t H5D_create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm);
-static herr_t H5D_chunk_file_cb(void *elem, hid_t type_id, unsigned ndims,
+static herr_t H5D__create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm);
+static herr_t H5D__chunk_file_cb(void *elem, hid_t type_id, unsigned ndims,
     const hsize_t *coords, void *fm);
-static herr_t H5D_chunk_mem_cb(void *elem, hid_t type_id, unsigned ndims,
+static herr_t H5D__chunk_mem_cb(void *elem, hid_t type_id, unsigned ndims,
     const hsize_t *coords, void *fm);
-static herr_t H5D_chunk_flush_entry(const H5D_t *dset, hid_t dxpl_id,
+static herr_t H5D__chunk_flush_entry(const H5D_t *dset, hid_t dxpl_id,
     const H5D_dxpl_cache_t *dxpl_cache, H5D_rdcc_ent_t *ent, hbool_t reset);
-static herr_t H5D_chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id,
+static herr_t H5D__chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id,
     const H5D_dxpl_cache_t *dxpl_cache, H5D_rdcc_ent_t *ent, hbool_t flush);
+static herr_t H5D__chunk_cache_prune(const H5D_t *dset, hid_t dxpl_id,
+    const H5D_dxpl_cache_t *dxpl_cache, size_t size);
+static herr_t H5D__chunk_prune_fill(H5D_chunk_it_ud1_t *udata);
 
 
 /*********************/
@@ -224,20 +230,20 @@ static herr_t H5D_chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id,
 
 /* Chunked storage layout I/O ops */
 const H5D_layout_ops_t H5D_LOPS_CHUNK[1] = {{
-    H5D_chunk_construct,
-    H5D_chunk_init,
-    H5D_chunk_is_space_alloc,
-    H5D_chunk_io_init,
-    H5D_chunk_read,
-    H5D_chunk_write,
+    H5D__chunk_construct,
+    H5D__chunk_init,
+    H5D__chunk_is_space_alloc,
+    H5D__chunk_io_init,
+    H5D__chunk_read,
+    H5D__chunk_write,
 #ifdef H5_HAVE_PARALLEL
-    H5D_chunk_collective_read,
-    H5D_chunk_collective_write,
+    H5D__chunk_collective_read,
+    H5D__chunk_collective_write,
 #endif /* H5_HAVE_PARALLEL */
     NULL,
     NULL,
-    H5D_chunk_flush,
-    H5D_chunk_io_term
+    H5D__chunk_flush,
+    H5D__chunk_io_term
 }};
 
 
@@ -257,7 +263,7 @@ const H5D_layout_ops_t H5D_LOPS_NONEXISTENT[1] = {{
     NULL,
     NULL,
 #endif /* H5_HAVE_PARALLEL */
-    H5D_nonexistent_readvv,
+    H5D__nonexistent_readvv,
     NULL,
     NULL,
     NULL
@@ -278,7 +284,7 @@ H5FL_BLK_DEFINE_STATIC(chunk);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_set_info_real
+ * Function:	H5D__chunk_set_info_real
  *
  * Purpose:	Internal routine to set the information about chunks for a dataset
  *
@@ -290,12 +296,12 @@ H5FL_BLK_DEFINE_STATIC(chunk);
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims, const hsize_t *curr_dims)
+H5D__chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims, const hsize_t *curr_dims)
 {
     unsigned u;                 /* Local index variable */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(layout);
@@ -317,11 +323,11 @@ H5D_chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims, const hsize_
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_set_info_real() */
+} /* end H5D__chunk_set_info_real() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_set_info
+ * Function:	H5D__chunk_set_info
  *
  * Purpose:	Sets the information about chunks for a dataset
  *
@@ -333,14 +339,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_set_info(const H5D_t *dset)
+H5D__chunk_set_info(const H5D_t *dset)
 {
     hsize_t curr_dims[H5O_LAYOUT_NDIMS];    /* Curr. size of dataset dimensions */
     int sndims;                 /* Rank of dataspace */
     unsigned ndims;             /* Rank of dataspace */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity checks */
     HDassert(dset);
@@ -351,7 +357,7 @@ H5D_chunk_set_info(const H5D_t *dset)
     H5_ASSIGN_OVERFLOW(ndims, sndims, int, unsigned);
 
     /* Set the base layout information */
-    if(H5D_chunk_set_info_real(&dset->shared->layout.u.chunk, ndims, curr_dims) < 0)
+    if(H5D__chunk_set_info_real(&dset->shared->layout.u.chunk, ndims, curr_dims) < 0)
 	HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "can't set layout's chunk info")
 
     /* Call the index's "resize" callback */
@@ -360,11 +366,11 @@ H5D_chunk_set_info(const H5D_t *dset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_set_info() */
+} /* end H5D__chunk_set_info() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_construct
+ * Function:	H5D__chunk_construct
  *
  * Purpose:	Constructs new chunked layout information for dataset
  *
@@ -376,7 +382,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_construct(H5F_t UNUSED *f, H5D_t *dset)
+H5D__chunk_construct(H5F_t UNUSED *f, H5D_t *dset)
 {
     const H5T_t *type = dset->shared->type;      /* Convenience pointer to dataset's datatype */
     hsize_t max_dims[H5O_LAYOUT_NDIMS];          /* Maximum size of data in elements */
@@ -386,7 +392,7 @@ H5D_chunk_construct(H5F_t UNUSED *f, H5D_t *dset)
     unsigned u;                 /* Local index variable */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(f);
@@ -451,11 +457,11 @@ H5D_chunk_construct(H5F_t UNUSED *f, H5D_t *dset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_construct() */
+} /* end H5D__chunk_construct() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_init
+ * Function:	H5D__chunk_init
  *
  * Purpose:	Initialize the raw data chunk cache for a dataset.  This is
  *		called when the dataset is initialized.
@@ -468,14 +474,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, hid_t dapl_id)
+H5D__chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, hid_t dapl_id)
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     H5D_rdcc_t	*rdcc = &(dset->shared->cache.chunk);   /* Convenience pointer to dataset's chunk cache */
     H5P_genplist_t *dapl;               /* Data access property list object pointer */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(f);
@@ -509,7 +515,7 @@ H5D_chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, hid_t dapl_id)
             HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
 
         /* Reset any cached chunk info for this dataset */
-        H5D_chunk_cinfo_cache_reset(&(rdcc->last));
+        H5D__chunk_cinfo_cache_reset(&(rdcc->last));
     } /* end else */
 
     /* Compose chunked index info struct */
@@ -524,16 +530,16 @@ H5D_chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, hid_t dapl_id)
 	HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't initialize indexing information")
 
     /* Set the number of chunks in dataset, etc. */
-    if(H5D_chunk_set_info(dset) < 0)
+    if(H5D__chunk_set_info(dset) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to set # of chunks for dataset")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_init() */
+} /* end H5D__chunk_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_is_space_alloc
+ * Function:	H5D__chunk_is_space_alloc
  *
  * Purpose:	Query if space is allocated for layout
  *
@@ -545,11 +551,11 @@ done:
  *-------------------------------------------------------------------------
  */
 hbool_t
-H5D_chunk_is_space_alloc(const H5O_storage_t *storage)
+H5D__chunk_is_space_alloc(const H5O_storage_t *storage)
 {
     hbool_t ret_value;                  /* Return value */
 
-    FUNC_ENTER_NOAPI_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Sanity checks */
     HDassert(storage);
@@ -558,11 +564,11 @@ H5D_chunk_is_space_alloc(const H5O_storage_t *storage)
     ret_value = (storage->u.chunk.ops->is_space_alloc)(&storage->u.chunk);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_is_space_alloc() */
+} /* end H5D__chunk_is_space_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_io_init
+ * Function:	H5D__chunk_io_init
  *
  * Purpose:	Performs initialization before any sort of I/O on the raw data
  *
@@ -574,7 +580,7 @@ H5D_chunk_is_space_alloc(const H5O_storage_t *storage)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *fm)
 {
@@ -594,7 +600,7 @@ H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
     hbool_t sel_hyper_flag;
     herr_t ret_value = SUCCEED;	/* Return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get layout for dataset */
     fm->layout = &(dataset->shared->layout);
@@ -685,7 +691,7 @@ H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
         fm->mchunk_tmpl = NULL;
 
         /* Set up chunk mapping for single element */
-        if(H5D_create_chunk_map_single(fm, io_info) < 0)
+        if(H5D__create_chunk_map_single(fm, io_info) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create chunk selections for single element")
     } /* end if */
     else {
@@ -715,7 +721,7 @@ H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
         /* Check if file selection is a not a hyperslab selection */
         if(sel_hyper_flag) {
             /* Build the file selection for each chunk */
-            if(H5D_create_chunk_file_map_hyper(fm, io_info) < 0)
+            if(H5D__create_chunk_file_map_hyper(fm, io_info) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create file chunk selections")
 
             /* Clean file chunks' hyperslab span "scratch" information */
@@ -741,7 +747,7 @@ H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register file datatype")
 
             /* Spaces might not be the same shape, iterate over the file selection directly */
-            if(H5S_select_iterate(&bogus, f_tid, file_space,  H5D_chunk_file_cb, fm) < 0)
+            if(H5S_select_iterate(&bogus, f_tid, file_space, H5D__chunk_file_cb, fm) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create file chunk selections")
 
             /* Reset "last chunk" info */
@@ -757,7 +763,7 @@ H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
             /* If the selections are the same shape, use the file chunk information
              * to generate the memory chunk information quickly.
              */
-            if(H5D_create_chunk_mem_map_hyper(fm) < 0)
+            if(H5D__create_chunk_mem_map_hyper(fm) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create memory chunk selections")
         } /* end if */
         else {
@@ -788,7 +794,7 @@ H5D_chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
             iter_init = TRUE;	/* Selection iteration info has been initialized */
 
             /* Spaces aren't the same shape, iterate over the memory selection directly */
-            if(H5S_select_iterate(&bogus, f_tid, file_space, H5D_chunk_mem_cb, fm) < 0)
+            if(H5S_select_iterate(&bogus, f_tid, file_space, H5D__chunk_mem_cb, fm) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create memory chunk selections")
 
             /* Clean up hyperslab stuff, if necessary */
@@ -821,7 +827,7 @@ done:
                 HDONE_ERROR(H5E_DATASPACE, H5E_CANTRELEASE, FAIL, "can't release memory chunk dataspace template")
         } /* end if */
 
-        if(H5D_chunk_io_term(fm) < 0)
+        if(H5D__chunk_io_term(fm) < 0)
             HDONE_ERROR(H5E_DATASPACE, H5E_CANTRELEASE, FAIL, "unable to release chunk mapping")
     } /* end if */
 
@@ -840,11 +846,11 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_io_init() */
+} /* end H5D__chunk_io_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_alloc
+ * Function:	H5D__chunk_alloc
  *
  * Purpose:	Allocate space for a chunk in memory.  This routine allocates
  *              memory space for non-filtered chunks from a block free list
@@ -858,11 +864,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static void *
-H5D_chunk_alloc(size_t size, const H5O_pline_t *pline)
+H5D__chunk_alloc(size_t size, const H5O_pline_t *pline)
 {
     void *ret_value = NULL;		/* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(size);
     HDassert(pline);
@@ -873,11 +879,11 @@ H5D_chunk_alloc(size_t size, const H5O_pline_t *pline)
         ret_value = H5FL_BLK_MALLOC(chunk, size);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_alloc() */
+} /* H5D__chunk_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_xfree
+ * Function:	H5D__chunk_xfree
  *
  * Purpose:	Free space for a chunk in memory.  This routine allocates
  *              memory space for non-filtered chunks from a block free list
@@ -891,9 +897,9 @@ H5D_chunk_alloc(size_t size, const H5O_pline_t *pline)
  *-------------------------------------------------------------------------
  */
 static void *
-H5D_chunk_xfree(void *chk, const H5O_pline_t *pline)
+H5D__chunk_xfree(void *chk, const H5O_pline_t *pline)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(pline);
 
@@ -905,11 +911,11 @@ H5D_chunk_xfree(void *chk, const H5O_pline_t *pline)
     } /* end if */
 
     FUNC_LEAVE_NOAPI(NULL)
-} /* H5D_chunk_xfree() */
+} /* H5D__chunk_xfree() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_realloc
+ * Function:    H5D__chunk_realloc
  *
  * Purpose:     Reallocate space for a chunk in memory.  This routine allocates
  *              memory space for non-filtered chunks from a block free list
@@ -923,11 +929,11 @@ H5D_chunk_xfree(void *chk, const H5O_pline_t *pline)
  *-------------------------------------------------------------------------
  */
 static void *
-H5D_chunk_realloc(void *chk, size_t size, const H5O_pline_t *pline)
+H5D__chunk_realloc(void *chk, size_t size, const H5O_pline_t *pline)
 {
     void *ret_value = NULL;             /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(size);
     HDassert(pline);
@@ -938,16 +944,16 @@ H5D_chunk_realloc(void *chk, size_t size, const H5O_pline_t *pline)
         ret_value = H5FL_BLK_REALLOC(chunk, chk, size);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_realloc() */
+} /* H5D__chunk_realloc() */
 
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_free_chunk_info
+    H5D__free_chunk_info
  PURPOSE
     Internal routine to destroy a chunk info node
  USAGE
-    void H5D_free_chunk_info(chunk_info)
+    void H5D__free_chunk_info(chunk_info)
         void *chunk_info;    IN: Pointer to chunk info to destroy
  RETURNS
     No return value
@@ -959,11 +965,11 @@ H5D_chunk_realloc(void *chk, size_t size, const H5O_pline_t *pline)
  REVISION LOG
 --------------------------------------------------------------------------*/
 static herr_t
-H5D_free_chunk_info(void *item, void UNUSED *key, void UNUSED *opdata)
+H5D__free_chunk_info(void *item, void UNUSED *key, void UNUSED *opdata)
 {
     H5D_chunk_info_t *chunk_info = (H5D_chunk_info_t *)item;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDassert(chunk_info);
 
@@ -981,11 +987,11 @@ H5D_free_chunk_info(void *item, void UNUSED *key, void UNUSED *opdata)
     chunk_info = H5FL_FREE(H5D_chunk_info_t, chunk_info);
 
     FUNC_LEAVE_NOAPI(0)
-}   /* H5D_free_chunk_info() */
+}   /* H5D__free_chunk_info() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_create_chunk_map_single
+ * Function:	H5D__create_chunk_map_single
  *
  * Purpose:	Create chunk selections when appending a single record
  *
@@ -997,7 +1003,7 @@ H5D_free_chunk_info(void *item, void UNUSED *key, void UNUSED *opdata)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_create_chunk_map_single(H5D_chunk_map_t *fm, const H5D_io_info_t
+H5D__create_chunk_map_single(H5D_chunk_map_t *fm, const H5D_io_info_t
 #ifndef H5_HAVE_PARALLEL
     UNUSED
 #endif /* H5_HAVE_PARALLEL */
@@ -1009,7 +1015,7 @@ H5D_create_chunk_map_single(H5D_chunk_map_t *fm, const H5D_io_info_t
     unsigned    u;                          /* Local index variable */
     herr_t	ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(fm->f_ndims > 0);
@@ -1062,11 +1068,11 @@ H5D_create_chunk_map_single(H5D_chunk_map_t *fm, const H5D_io_info_t
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_create_chunk_map_single() */
+} /* end H5D__create_chunk_map_single() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_create_chunk_file_map_hyper
+ * Function:	H5D__create_chunk_file_map_hyper
  *
  * Purpose:	Create all chunk selections in file.
  *
@@ -1078,7 +1084,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
+H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
 #ifndef H5_HAVE_PARALLEL
     UNUSED
 #endif /* H5_HAVE_PARALLEL */
@@ -1095,7 +1101,7 @@ H5D_create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
     unsigned    u;                          /* Local index variable */
     herr_t	ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     assert(fm->f_ndims>0);
@@ -1189,7 +1195,7 @@ H5D_create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
 
             /* Insert the new chunk into the skip list */
             if(H5SL_insert(fm->sel_chunks, new_chunk_info, &new_chunk_info->index) < 0) {
-                H5D_free_chunk_info(new_chunk_info, NULL, NULL);
+                    H5D__free_chunk_info(new_chunk_info, NULL, NULL);
                 HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINSERT, FAIL, "can't insert chunk into skip list")
             } /* end if */
 
@@ -1240,11 +1246,11 @@ H5D_create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_create_chunk_file_map_hyper() */
+} /* end H5D__create_chunk_file_map_hyper() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_create_chunk_mem_map_hyper
+ * Function:	H5D__create_chunk_mem_map_hyper
  *
  * Purpose:	Create all chunk selections in memory by copying the file
  *              chunk selections and adjusting their offsets to be correct
@@ -1260,7 +1266,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm)
+H5D__create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm)
 {
     H5SL_node_t *curr_node;                 /* Current node in skip list */
     hsize_t    file_sel_start[H5O_LAYOUT_NDIMS];    /* Offset of low bound of file selection */
@@ -1272,7 +1278,7 @@ H5D_create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm)
     unsigned    u;                          /* Local index variable */
     herr_t	ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     assert(fm->f_ndims>0);
@@ -1352,11 +1358,11 @@ H5D_create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_create_chunk_mem_map_hyper() */
+} /* end H5D__create_chunk_mem_map_hyper() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_file_cb
+ * Function:	H5D__chunk_file_cb
  *
  * Purpose:	Callback routine for file selection iterator.  Used when
  *              creating selections in file for each point selected.
@@ -1369,7 +1375,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const hsize_t *coords, void *_fm)
+H5D__chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const hsize_t *coords, void *_fm)
 {
     H5D_chunk_map_t      *fm = (H5D_chunk_map_t *)_fm;  /* File<->memory chunk mapping info */
     H5D_chunk_info_t *chunk_info;               /* Chunk information for current chunk */
@@ -1378,7 +1384,7 @@ H5D_chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const
     unsigned    u;                              /* Local index variable */
     herr_t	ret_value = SUCCEED;            /* Return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Calculate the index of this chunk */
     if(H5V_chunk_index(ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
@@ -1441,7 +1447,7 @@ H5D_chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const
 
             /* Insert the new chunk into the skip list */
             if(H5SL_insert(fm->sel_chunks,chunk_info,&chunk_info->index) < 0) {
-                H5D_free_chunk_info(chunk_info,NULL,NULL);
+                    H5D__free_chunk_info(chunk_info,NULL,NULL);
                 HGOTO_ERROR(H5E_DATASPACE,H5E_CANTINSERT,FAIL,"can't insert chunk into skip list")
             } /* end if */
         } /* end if */
@@ -1464,11 +1470,11 @@ H5D_chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_file_cb() */
+} /* end H5D__chunk_file_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_mem_cb
+ * Function:	H5D__chunk_mem_cb
  *
  * Purpose:	Callback routine for file selection iterator.  Used when
  *              creating selections in memory for each chunk.
@@ -1482,7 +1488,7 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5D_chunk_mem_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const hsize_t *coords, void *_fm)
+H5D__chunk_mem_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const hsize_t *coords, void *_fm)
 {
     H5D_chunk_map_t      *fm = (H5D_chunk_map_t *)_fm;  /* File<->memory chunk mapping info */
     H5D_chunk_info_t *chunk_info;               /* Chunk information for current chunk */
@@ -1490,7 +1496,7 @@ H5D_chunk_mem_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const
     hsize_t     chunk_index;                    /* Chunk index */
     herr_t	ret_value = SUCCEED;            /* Return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Calculate the index of this chunk */
     if(H5V_chunk_index(ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
@@ -1543,11 +1549,11 @@ H5D_chunk_mem_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_mem_cb() */
+} /* end H5D__chunk_mem_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_cacheable
+ * Function:	H5D__chunk_cacheable
  *
  * Purpose:	A small internal function to if it's possible to load the
  *              chunk into cache.
@@ -1560,12 +1566,12 @@ done:
  *-------------------------------------------------------------------------
  */
 htri_t
-H5D_chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr, hbool_t write_op)
+H5D__chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr, hbool_t write_op)
 {
     const H5D_t *dataset = io_info->dset;
     htri_t ret_value = FAIL;
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(io_info);
     HDassert(dataset);
@@ -1617,11 +1623,11 @@ H5D_chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr, hbool_t write_o
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_cacheable() */
+} /* end H5D__chunk_cacheable() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_read
+ * Function:	H5D__chunk_read
  *
  * Purpose:	Read from a chunked dataset.
  *
@@ -1633,7 +1639,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t *fm)
 {
@@ -1648,7 +1654,7 @@ H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hbool_t     skip_missing_chunks = FALSE;    /* Whether to skip missing chunks */
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(io_info);
@@ -1705,7 +1711,7 @@ H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
         chunk_info = H5D_CHUNK_GET_NODE_INFO(fm, chunk_node);
 
         /* Get the info for the chunk in the file */
-        if(H5D_chunk_lookup(io_info->dset, io_info->dxpl_id,
+        if(H5D__chunk_lookup(io_info->dset, io_info->dxpl_id,
                 chunk_info->coords, chunk_info->index, &udata) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk address")
 
@@ -1713,7 +1719,7 @@ H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
         if(H5F_addr_defined(udata.addr) || UINT_MAX != udata.idx_hint
                 || !skip_missing_chunks) {
             /* Load the chunk into cache and lock it. */
-            if((cacheable = H5D_chunk_cacheable(io_info, udata.addr, FALSE)) < 0)
+            if((cacheable = H5D__chunk_cacheable(io_info, udata.addr, FALSE)) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't tell if chunk is cacheable")
             if(cacheable) {
                 /* Pass in chunk's coordinates in a union. */
@@ -1725,7 +1731,7 @@ H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
                 src_accessed_bytes = chunk_info->chunk_points * (uint32_t)type_info->src_type_size;
 
                 /* Lock the chunk into the cache */
-                if(NULL == (chunk = H5D_chunk_lock(io_info, &udata, FALSE)))
+                if(NULL == (chunk = H5D__chunk_lock(io_info, &udata, FALSE)))
                     HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to read raw data chunk")
 
                 /* Set up the storage buffer information for this chunk */
@@ -1758,7 +1764,7 @@ H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
                 HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "chunked read failed")
 
             /* Release the cache lock on the chunk. */
-            if(chunk && H5D_chunk_unlock(io_info, &udata, FALSE, chunk, src_accessed_bytes) < 0)
+            if(chunk && H5D__chunk_unlock(io_info, &udata, FALSE, chunk, src_accessed_bytes) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to unlock raw data chunk")
         } /* end if */
 
@@ -1768,11 +1774,11 @@ H5D_chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_read() */
+} /* H5D__chunk_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_write
+ * Function:	H5D__chunk_write
  *
  * Purpose:	Writes to a chunked dataset.
  *
@@ -1784,7 +1790,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t *fm)
 {
@@ -1797,7 +1803,7 @@ H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     uint32_t    dst_accessed_bytes = 0; /* Total accessed size in a chunk */
     herr_t	ret_value = SUCCEED;	/* Return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(io_info);
@@ -1835,10 +1841,10 @@ H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
 
         /* Load the chunk into cache.  But if the whole chunk is written,
          * simply allocate space instead of load the chunk. */
-        if(H5D_chunk_lookup(io_info->dset, io_info->dxpl_id, chunk_info->coords,
+        if(H5D__chunk_lookup(io_info->dset, io_info->dxpl_id, chunk_info->coords,
                 chunk_info->index, &udata) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk address")
-        if((cacheable = H5D_chunk_cacheable(io_info, udata.addr, TRUE)) < 0)
+        if((cacheable = H5D__chunk_cacheable(io_info, udata.addr, TRUE)) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't tell if chunk is cacheable")
         if(cacheable) {
             hbool_t entire_chunk = TRUE;       /* Whether whole chunk is selected */
@@ -1857,7 +1863,7 @@ H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
                 entire_chunk = FALSE;
 
             /* Lock the chunk into the cache */
-            if(NULL == (chunk = H5D_chunk_lock(io_info, &udata, entire_chunk)))
+            if(NULL == (chunk = H5D__chunk_lock(io_info, &udata, entire_chunk)))
                 HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to read raw data chunk")
 
             /* Set up the storage buffer information for this chunk */
@@ -1890,7 +1896,7 @@ H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "chunk address isn't defined")
 
                 /* Cache the new chunk information */
-                H5D_chunk_cinfo_cache_update(&io_info->dset->shared->cache.chunk.last, &udata);
+                H5D__chunk_cinfo_cache_update(&io_info->dset->shared->cache.chunk.last, &udata);
             } /* end if */
 
             /* Set up the storage address information for this chunk */
@@ -1909,7 +1915,7 @@ H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
             HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "chunked write failed")
 
         /* Release the cache lock on the chunk. */
-        if(chunk && H5D_chunk_unlock(io_info, &udata, TRUE, chunk, dst_accessed_bytes) < 0)
+        if(chunk && H5D__chunk_unlock(io_info, &udata, TRUE, chunk, dst_accessed_bytes) < 0)
             HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to unlock raw data chunk")
 
         /* Advance to next chunk in list */
@@ -1918,11 +1924,11 @@ H5D_chunk_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_write() */
+} /* H5D__chunk_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_flush
+ * Function:	H5D__chunk_flush
  *
  * Purpose:	Writes all dirty chunks to disk and optionally preempts them
  *		from the cache.
@@ -1935,7 +1941,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_flush(H5D_t *dset, hid_t dxpl_id)
+H5D__chunk_flush(H5D_t *dset, hid_t dxpl_id)
 {
     H5D_dxpl_cache_t _dxpl_cache;       /* Data transfer property cache buffer */
     H5D_dxpl_cache_t *dxpl_cache = &_dxpl_cache;   /* Data transfer property cache */
@@ -1944,23 +1950,23 @@ H5D_chunk_flush(H5D_t *dset, hid_t dxpl_id)
     unsigned		nerrors = 0;    /* Count of any errors encountered when flushing chunks */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(dset);
 
     /* Flush any data caught in sieve buffer */
-    if(H5D_flush_sieve_buf(dset, dxpl_id) < 0)
+    if(H5D__flush_sieve_buf(dset, dxpl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTFLUSH, FAIL, "unable to flush sieve buffer")
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Loop over all entries in the chunk cache */
     for(ent = rdcc->head; ent; ent = next) {
 	next = ent->next;
-        if(H5D_chunk_flush_entry(dset, dxpl_id, dxpl_cache, ent, FALSE) < 0)
+        if(H5D__chunk_flush_entry(dset, dxpl_id, dxpl_cache, ent, FALSE) < 0)
             nerrors++;
     } /* end for */
     if(nerrors)
@@ -1968,11 +1974,11 @@ H5D_chunk_flush(H5D_t *dset, hid_t dxpl_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_flush() */
+} /* end H5D__chunk_flush() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_io_term
+ * Function:	H5D__chunk_io_term
  *
  * Purpose:	Destroy I/O operation information.
  *
@@ -1984,11 +1990,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_io_term(const H5D_chunk_map_t *fm)
+H5D__chunk_io_term(const H5D_chunk_map_t *fm)
 {
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Single element I/O vs. multiple element I/O cleanup */
     if(fm->use_single) {
@@ -2004,7 +2010,7 @@ H5D_chunk_io_term(const H5D_chunk_map_t *fm)
     else {
         /* Release the nodes on the list of selected chunks */
         if(fm->sel_chunks)
-            if(H5SL_free(fm->sel_chunks, H5D_free_chunk_info, NULL) < 0)
+            if(H5SL_free(fm->sel_chunks, H5D__free_chunk_info, NULL) < 0)
                 HGOTO_ERROR(H5E_PLIST, H5E_CANTNEXT, FAIL, "can't iterate over chunks")
     } /* end else */
 
@@ -2019,7 +2025,7 @@ H5D_chunk_io_term(const H5D_chunk_map_t *fm)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_io_term() */
+} /* end H5D__chunk_io_term() */
 
 
 /*-------------------------------------------------------------------------
@@ -2055,7 +2061,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_cinfo_cache_reset
+ * Function:	H5D__chunk_cinfo_cache_reset
  *
  * Purpose:	Reset the cached chunk info
  *
@@ -2067,9 +2073,9 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_cinfo_cache_reset(H5D_chunk_cached_t *last)
+H5D__chunk_cinfo_cache_reset(H5D_chunk_cached_t *last)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Sanity check */
     HDassert(last);
@@ -2078,11 +2084,11 @@ H5D_chunk_cinfo_cache_reset(H5D_chunk_cached_t *last)
     last->valid = FALSE;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* H5D_chunk_cinfo_cache_reset() */
+} /* H5D__chunk_cinfo_cache_reset() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_cinfo_cache_update
+ * Function:	H5D__chunk_cinfo_cache_update
  *
  * Purpose:	Update the cached chunk info
  *
@@ -2094,11 +2100,11 @@ H5D_chunk_cinfo_cache_reset(H5D_chunk_cached_t *last)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_cinfo_cache_update(H5D_chunk_cached_t *last, const H5D_chunk_ud_t *udata)
+H5D__chunk_cinfo_cache_update(H5D_chunk_cached_t *last, const H5D_chunk_ud_t *udata)
 {
     unsigned    u;                              /* Local index variable */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(last);
@@ -2118,11 +2124,11 @@ H5D_chunk_cinfo_cache_update(H5D_chunk_cached_t *last, const H5D_chunk_ud_t *uda
     last->valid = TRUE;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* H5D_chunk_cinfo_cache_update() */
+} /* H5D__chunk_cinfo_cache_update() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_cinfo_cache_found
+ * Function:	H5D__chunk_cinfo_cache_found
  *
  * Purpose:	Look for chunk info in cache
  *
@@ -2134,11 +2140,11 @@ H5D_chunk_cinfo_cache_update(H5D_chunk_cached_t *last, const H5D_chunk_ud_t *uda
  *-------------------------------------------------------------------------
  */
 static hbool_t
-H5D_chunk_cinfo_cache_found(const H5D_chunk_cached_t *last, H5D_chunk_ud_t *udata)
+H5D__chunk_cinfo_cache_found(const H5D_chunk_cached_t *last, H5D_chunk_ud_t *udata)
 {
     hbool_t ret_value = FALSE;          /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(last);
@@ -2167,11 +2173,11 @@ H5D_chunk_cinfo_cache_found(const H5D_chunk_cached_t *last, H5D_chunk_ud_t *udat
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_cinfo_cache_found() */
+} /* H5D__chunk_cinfo_cache_found() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_create
+ * Function:	H5D__chunk_create
  *
  * Purpose:	Creates a new chunked storage index and initializes the
  *		layout information with information about the storage.  The
@@ -2186,12 +2192,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id)
+H5D__chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id)
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dset);
@@ -2219,11 +2225,11 @@ H5D_chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_create() */
+} /* end H5D__chunk_create() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_lookup
+ * Function:	H5D__chunk_lookup
  *
  * Purpose:	Loops up a chunk in cache and on disk, and retrieves
  *              information about that chunk.
@@ -2236,7 +2242,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_lookup(const H5D_t *dset, hid_t dxpl_id, const hsize_t *chunk_offset,
+H5D__chunk_lookup(const H5D_t *dset, hid_t dxpl_id, const hsize_t *chunk_offset,
     hsize_t chunk_idx, H5D_chunk_ud_t *udata)
 {
     H5D_rdcc_ent_t  *ent = NULL;        /* Cache entry */
@@ -2244,7 +2250,7 @@ H5D_chunk_lookup(const H5D_t *dset, hid_t dxpl_id, const hsize_t *chunk_offset,
     unsigned        u;                  /* Counter */
     herr_t	ret_value = SUCCEED;	/* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     HDassert(dset);
     HDassert(dset->shared->layout.u.chunk.ndims > 0);
@@ -2284,7 +2290,7 @@ H5D_chunk_lookup(const H5D_t *dset, hid_t dxpl_id, const hsize_t *chunk_offset,
         udata->idx_hint = UINT_MAX;
 
         /* Check for cached information */
-        if(!H5D_chunk_cinfo_cache_found(&dset->shared->cache.chunk.last, udata)) {
+        if(!H5D__chunk_cinfo_cache_found(&dset->shared->cache.chunk.last, udata)) {
             H5D_chk_idx_info_t idx_info;        /* Chunked index info */
 
             /* Compose chunked index info struct */
@@ -2299,17 +2305,17 @@ H5D_chunk_lookup(const H5D_t *dset, hid_t dxpl_id, const hsize_t *chunk_offset,
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't query chunk address")
 
             /* Cache the information retrieved */
-            H5D_chunk_cinfo_cache_update(&dset->shared->cache.chunk.last, udata);
+            H5D__chunk_cinfo_cache_update(&dset->shared->cache.chunk.last, udata);
         } /* end if */
     } /* end else */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_lookup() */
+} /* H5D__chunk_lookup() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_flush_entry
+ * Function:	H5D__chunk_flush_entry
  *
  * Purpose:	Writes a chunk to disk.  If RESET is non-zero then the
  *		entry is cleared -- it's slightly faster to flush a chunk if
@@ -2324,14 +2330,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_flush_entry(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *dxpl_cache,
+H5D__chunk_flush_entry(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *dxpl_cache,
     H5D_rdcc_ent_t *ent, hbool_t reset)
 {
     void	*buf = NULL;	        /* Temporary buffer		*/
     hbool_t	point_of_no_return = FALSE;
     herr_t	ret_value = SUCCEED;	/* Return value			*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(dset);
     HDassert(dset->shared);
@@ -2427,7 +2433,7 @@ H5D_chunk_flush_entry(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *
             HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to write raw data to file")
 
         /* Cache the chunk's info, in case it's accessed again shortly */
-        H5D_chunk_cinfo_cache_update(&dset->shared->cache.chunk.last, &udata);
+        H5D__chunk_cinfo_cache_update(&dset->shared->cache.chunk.last, &udata);
 
         /* Mark cache entry as clean */
         ent->dirty = FALSE;
@@ -2442,7 +2448,7 @@ H5D_chunk_flush_entry(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *
         if(buf == ent->chunk)
             buf = NULL;
         if(ent->chunk != NULL)
-            ent->chunk = (uint8_t *)H5D_chunk_xfree(ent->chunk, &(dset->shared->dcpl_cache.pline));
+            ent->chunk = (uint8_t *)H5D__chunk_xfree(ent->chunk, &(dset->shared->dcpl_cache.pline));
     } /* end if */
 
 done:
@@ -2458,15 +2464,15 @@ done:
      */
     if(ret_value < 0 && point_of_no_return) {
         if(ent->chunk)
-            ent->chunk = (uint8_t *)H5D_chunk_xfree(ent->chunk, &(dset->shared->dcpl_cache.pline));
+            ent->chunk = (uint8_t *)H5D__chunk_xfree(ent->chunk, &(dset->shared->dcpl_cache.pline));
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_flush_entry() */
+} /* end H5D__chunk_flush_entry() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_cache_evict
+ * Function:    H5D__chunk_cache_evict
  *
  * Purpose:     Preempts the specified entry from the cache, flushing it to
  *              disk if necessary.
@@ -2479,13 +2485,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *dxpl_cache,
+H5D__chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *dxpl_cache,
     H5D_rdcc_ent_t *ent, hbool_t flush)
 {
     H5D_rdcc_t *rdcc = &(dset->shared->cache.chunk);
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(dset);
     HDassert(dxpl_cache);
@@ -2495,13 +2501,13 @@ H5D_chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *
 
     if(flush) {
 	/* Flush */
-	if(H5D_chunk_flush_entry(dset, dxpl_id, dxpl_cache, ent, TRUE) < 0)
+	if(H5D__chunk_flush_entry(dset, dxpl_id, dxpl_cache, ent, TRUE) < 0)
 	    HDONE_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "cannot flush indexed storage buffer")
     } /* end if */
     else {
         /* Don't flush, just free chunk */
 	if(ent->chunk != NULL)
-	    ent->chunk = (uint8_t *)H5D_chunk_xfree(ent->chunk, &(dset->shared->dcpl_cache.pline));
+	    ent->chunk = (uint8_t *)H5D__chunk_xfree(ent->chunk, &(dset->shared->dcpl_cache.pline));
     } /* end else */
 
     /* Unlink from list */
@@ -2525,11 +2531,11 @@ H5D_chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *
     ent = H5FL_FREE(H5D_rdcc_ent_t, ent);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_cache_evict() */
+} /* end H5D__chunk_cache_evict() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_cache_prune
+ * Function:	H5D__chunk_cache_prune
  *
  * Purpose:	Prune the cache by preempting some things until the cache has
  *		room for something which is SIZE bytes.  Only unlocked
@@ -2543,7 +2549,7 @@ H5D_chunk_cache_evict(const H5D_t *dset, hid_t dxpl_id, const H5D_dxpl_cache_t *
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_cache_prune(const H5D_t *dset, hid_t dxpl_id,
+H5D__chunk_cache_prune(const H5D_t *dset, hid_t dxpl_id,
     const H5D_dxpl_cache_t *dxpl_cache, size_t size)
 {
     const H5D_rdcc_t	*rdcc = &(dset->shared->cache.chunk);
@@ -2555,7 +2561,7 @@ H5D_chunk_cache_prune(const H5D_t *dset, hid_t dxpl_id,
     int		nerrors = 0;            /* Accumulated error count during preemptions */
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /*
      * Preemption is accomplished by having multiple pointers (currently two)
@@ -2616,7 +2622,7 @@ H5D_chunk_cache_prune(const H5D_t *dset, hid_t dxpl_id,
 		    if(n[j] == cur)
                         n[j] = cur->next;
 		} /* end for */
-		if(H5D_chunk_cache_evict(dset, dxpl_id, dxpl_cache, cur, TRUE) < 0)
+		if(H5D__chunk_cache_evict(dset, dxpl_id, dxpl_cache, cur, TRUE) < 0)
                     nerrors++;
 	    } /* end if */
 	} /* end for */
@@ -2633,17 +2639,17 @@ H5D_chunk_cache_prune(const H5D_t *dset, hid_t dxpl_id,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_cache_prune() */
+} /* end H5D__chunk_cache_prune() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_lock
+ * Function:	H5D__chunk_lock
  *
  * Purpose:	Return a pointer to a dataset chunk.  The pointer points
  *		directly into the chunk cache and should not be freed
  *		by the caller but will be valid until it is unlocked.  The
  *		input value IDX_HINT is used to speed up cache lookups and
- *		it's output value should be given to H5D_chunk_unlock().
+ *		it's output value should be given to H5D__chunk_unlock().
  *		IDX_HINT is ignored if it is out of range, and if it points
  *		to the wrong entry then we fall back to the normal search
  *		method.
@@ -2664,11 +2670,11 @@ done:
  *-------------------------------------------------------------------------
  */
 void *
-H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
+H5D__chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
     hbool_t relax)
 {
     H5D_t *dset = io_info->dset;                /* Local pointer to the dataset info */
-    const H5O_pline_t   *pline = &(dset->shared->dcpl_cache.pline); /* I/O pipeline info - always equal to the pline passed to H5D_chunk_alloc */
+    const H5O_pline_t   *pline = &(dset->shared->dcpl_cache.pline); /* I/O pipeline info - always equal to the pline passed to H5D__chunk_alloc */
     const H5O_layout_t  *layout = &(dset->shared->layout); /* Dataset layout */
     const H5O_fill_t    *fill = &(dset->shared->dcpl_cache.fill); /* Fill value info */
     H5D_fill_buf_info_t fb_info;                /* Dataset's fill buffer info */
@@ -2681,7 +2687,7 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
     unsigned		u;			/*counters		*/
     void		*ret_value;	        /*return value		*/
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(io_info);
     HDassert(io_info->dxpl_cache);
@@ -2726,7 +2732,7 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
         /* Still save the chunk address so the cache stays consistent */
         chunk_addr = udata->addr;
 
-        if(NULL == (chunk = H5D_chunk_alloc(chunk_size, pline)))
+        if(NULL == (chunk = H5D__chunk_alloc(chunk_size, pline)))
             HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for raw data chunk")
 
         /* In the case that some dataset functions look through this data,
@@ -2749,7 +2755,7 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
             /* Chunk size on disk isn't [likely] the same size as the final chunk
              * size in memory, so allocate memory big enough. */
             H5_ASSIGN_OVERFLOW(chunk_alloc, udata->nbytes, uint32_t, size_t);
-            if(NULL == (chunk = H5D_chunk_alloc(chunk_alloc, pline)))
+            if(NULL == (chunk = H5D__chunk_alloc(chunk_alloc, pline)))
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for raw data chunk")
             if(H5F_block_read(dset->oloc.file, H5FD_MEM_DRAW, chunk_addr, chunk_alloc, io_info->dxpl_id, chunk) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "unable to read raw data chunk")
@@ -2772,7 +2778,7 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
 
             /* Chunk size on disk isn't [likely] the same size as the final chunk
              * size in memory, so allocate memory big enough. */
-            if(NULL == (chunk = H5D_chunk_alloc(chunk_size, pline)))
+            if(NULL == (chunk = H5D__chunk_alloc(chunk_size, pline)))
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for raw data chunk")
 
             if(H5P_is_fill_value_defined(fill, &fill_status) < 0)
@@ -2787,7 +2793,7 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
 
                 /* Initialize the fill value buffer */
                 /* (use the compact dataset storage buffer as the fill value buffer) */
-                if(H5D_fill_init(&fb_info, chunk, NULL, NULL, NULL, NULL,
+                if(H5D__fill_init(&fb_info, chunk, NULL, NULL, NULL, NULL,
                         &dset->shared->dcpl_cache.fill, dset->shared->type,
                         dset->shared->type_id, (size_t)0, chunk_size, io_info->dxpl_id) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "can't initialize fill buffer info")
@@ -2796,7 +2802,7 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
                 /* Check for VL datatype & non-default fill value */
                 if(fb_info.has_vlen_fill_type)
                     /* Fill the buffer with VL datatype fill values */
-                    if(H5D_fill_refill_vl(&fb_info, fb_info.elmts_per_buf, io_info->dxpl_id) < 0)
+                    if(H5D__fill_refill_vl(&fb_info, fb_info.elmts_per_buf, io_info->dxpl_id) < 0)
                         HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, NULL, "can't refill fill value buffer")
             } /* end if */
             else
@@ -2839,10 +2845,10 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
         if(!ent || !ent->locked) {
             /* Preempt enough things from the cache to make room */
             if(ent) {
-                if(H5D_chunk_cache_evict(io_info->dset, io_info->dxpl_id, io_info->dxpl_cache, ent, TRUE) < 0)
+                if(H5D__chunk_cache_evict(io_info->dset, io_info->dxpl_id, io_info->dxpl_cache, ent, TRUE) < 0)
                     HGOTO_ERROR(H5E_IO, H5E_CANTINIT, NULL, "unable to preempt chunk from cache")
             } /* end if */
-            if(H5D_chunk_cache_prune(io_info->dset, io_info->dxpl_id, io_info->dxpl_cache, chunk_size) < 0)
+            if(H5D__chunk_cache_prune(io_info->dset, io_info->dxpl_id, io_info->dxpl_cache, chunk_size) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_CANTINIT, NULL, "unable to preempt chunk(s) from cache")
 
             /* Create a new entry */
@@ -2903,23 +2909,23 @@ H5D_chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
 
 done:
     /* Release the fill buffer info, if it's been initialized */
-    if(fb_info_init && H5D_fill_term(&fb_info) < 0)
+    if(fb_info_init && H5D__fill_term(&fb_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, NULL, "Can't release fill buffer info")
 
     /* Release the chunk allocated, on error */
     if(!ret_value)
         if(chunk)
-            chunk = H5D_chunk_xfree(chunk, pline);
+            chunk = H5D__chunk_xfree(chunk, pline);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_lock() */
+} /* end H5D__chunk_lock() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_unlock
+ * Function:	H5D__chunk_unlock
  *
  * Purpose:	Unlocks a previously locked chunk. The LAYOUT, COMP, and
- *		OFFSET arguments should be the same as for H5D_chunk_lock().
+ *		OFFSET arguments should be the same as for H5D__chunk_lock().
  *		The DIRTY argument should be set to non-zero if the chunk has
  *		been modified since it was locked. The IDX_HINT argument is
  *		the returned index hint from the lock operation and BUF is
@@ -2938,14 +2944,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_unlock(const H5D_io_info_t *io_info, const H5D_chunk_ud_t *udata,
+H5D__chunk_unlock(const H5D_io_info_t *io_info, const H5D_chunk_ud_t *udata,
     hbool_t dirty, void *chunk, uint32_t naccessed)
 {
     const H5O_layout_t *layout = &(io_info->dset->shared->layout); /* Dataset layout */
     const H5D_rdcc_t	*rdcc = &(io_info->dset->shared->cache.chunk);
     herr_t              ret_value = SUCCEED;      /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(io_info);
     HDassert(udata);
@@ -2967,12 +2973,12 @@ H5D_chunk_unlock(const H5D_io_info_t *io_info, const H5D_chunk_ud_t *udata,
             fake_ent.chunk_addr = udata->addr;
             fake_ent.chunk = (uint8_t *)chunk;
 
-            if(H5D_chunk_flush_entry(io_info->dset, io_info->dxpl_id, io_info->dxpl_cache, &fake_ent, TRUE) < 0)
+            if(H5D__chunk_flush_entry(io_info->dset, io_info->dxpl_id, io_info->dxpl_cache, &fake_ent, TRUE) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "cannot flush indexed storage buffer")
         } /* end if */
         else {
             if(chunk)
-                chunk = H5D_chunk_xfree(chunk, &(io_info->dset->shared->dcpl_cache.pline));
+                chunk = H5D__chunk_xfree(chunk, &(io_info->dset->shared->dcpl_cache.pline));
         } /* end else */
     } /* end if */
     else {
@@ -2999,11 +3005,11 @@ H5D_chunk_unlock(const H5D_io_info_t *io_info, const H5D_chunk_ud_t *udata,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_unlock() */
+} /* end H5D__chunk_unlock() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_allocated_cb
+ * Function:	H5D__chunk_allocated_cb
  *
  * Purpose:	Simply counts the number of chunks for a dataset.
  *
@@ -3017,20 +3023,20 @@ done:
  */
 /* ARGSUSED */
 static int
-H5D_chunk_allocated_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
+H5D__chunk_allocated_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 {
     hsize_t *nbytes = (hsize_t *)_udata;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     *(hsize_t *)nbytes += chunk_rec->nbytes;
 
     FUNC_LEAVE_NOAPI(H5_ITER_CONT)
-} /* H5D_chunk_allocated_cb() */
+} /* H5D__chunk_allocated_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_allocated
+ * Function:	H5D__chunk_allocated
  *
  * Purpose:	Return the number of bytes allocated in the file for storage
  *		of raw data in the chunked dataset
@@ -3044,7 +3050,7 @@ H5D_chunk_allocated_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes)
+H5D__chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes)
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     const H5D_rdcc_t   *rdcc = &(dset->shared->cache.chunk);	/* Raw data chunk cache */
@@ -3054,19 +3060,19 @@ H5D_chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes)
     hsize_t chunk_bytes = 0;            /* Number of bytes allocated for chunks */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(dset);
     HDassert(dset->shared);
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Search for cached chunks that haven't been written out */
     for(ent = rdcc->head; ent; ent = ent->next) {
         /* Flush the chunk out to disk, to make certain the size is correct later */
-        if(H5D_chunk_flush_entry(dset, dxpl_id, dxpl_cache, ent, FALSE) < 0)
+        if(H5D__chunk_flush_entry(dset, dxpl_id, dxpl_cache, ent, FALSE) < 0)
             HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "cannot flush indexed storage buffer")
     } /* end for */
 
@@ -3078,7 +3084,7 @@ H5D_chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes)
     idx_info.storage = &dset->shared->layout.storage.u.chunk;
 
     /* Iterate over the chunks */
-    if((dset->shared->layout.storage.u.chunk.ops->iterate)(&idx_info, H5D_chunk_allocated_cb, &chunk_bytes) < 0)
+    if((dset->shared->layout.storage.u.chunk.ops->iterate)(&idx_info, H5D__chunk_allocated_cb, &chunk_bytes) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve allocated chunk information from index")
 
     /* Set number of bytes for caller */
@@ -3086,11 +3092,11 @@ H5D_chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_allocated() */
+} /* end H5D__chunk_allocated() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_allocate
+ * Function:	H5D__chunk_allocate
  *
  * Purpose:	Allocate file space for all chunks that are not allocated yet.
  *		Return SUCCEED if all needed allocation succeed, otherwise
@@ -3104,7 +3110,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
+H5D__chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
     hsize_t old_dim[])
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
@@ -3138,7 +3144,7 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
     hid_t       data_dxpl_id;           /* DXPL ID to use for raw data I/O operations */
     herr_t	ret_value = SUCCEED;	/* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dset && H5D_CHUNKED == layout->type);
@@ -3158,7 +3164,7 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
     for(op_dim=0; op_dim<space_ndims; op_dim++)
         if(space_dim[op_dim] == 0) {
             /* Reset any cached chunk info for this dataset */
-            H5D_chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
+            H5D__chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
             HGOTO_DONE(SUCCEED)
         } /* end if */
 
@@ -3188,7 +3194,7 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
 #endif  /* H5_HAVE_PARALLEL */
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(data_dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(data_dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Get original chunk size */
@@ -3213,8 +3219,8 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
         /* Initialize the fill value buffer */
         /* (delay allocating fill buffer for VL datatypes until refilling) */
         /* (casting away const OK - QAK) */
-        if(H5D_fill_init(&fb_info, NULL, (H5MM_allocate_t)H5D_chunk_alloc,
-                (void *)pline, (H5MM_free_t)H5D_chunk_xfree, (void *)pline,
+        if(H5D__fill_init(&fb_info, NULL, (H5MM_allocate_t)H5D__chunk_alloc,
+                (void *)pline, (H5MM_free_t)H5D__chunk_xfree, (void *)pline,
                 &dset->shared->dcpl_cache.fill, dset->shared->type,
                 dset->shared->type_id, (size_t)0, orig_chunk_size, data_dxpl_id) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't initialize fill buffer info")
@@ -3303,7 +3309,7 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
                         &chunk_idx) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't get chunk index")
 
-                if(H5D_chunk_lookup(dset, dxpl_id, chunk_offset, chunk_idx,
+                if(H5D__chunk_lookup(dset, dxpl_id, chunk_offset, chunk_idx,
                         &udata) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk address")
 
@@ -3332,14 +3338,14 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
                  * possible (though ill-advised) for the filter to shrink the
                  * buffer. */
                 if(fb_info.fill_buf_size < orig_chunk_size) {
-                    if(NULL == (fb_info.fill_buf = H5D_chunk_realloc(
+                    if(NULL == (fb_info.fill_buf = H5D__chunk_realloc(
                             fb_info.fill_buf, orig_chunk_size, pline)))
                         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory reallocation failed for raw data chunk")
                     fb_info.fill_buf_size = orig_chunk_size;
                 } /* end if */
 
                 /* Fill the buffer with VL datatype fill values */
-                if(H5D_fill_refill_vl(&fb_info, fb_info.elmts_per_buf, data_dxpl_id) < 0)
+                if(H5D__fill_refill_vl(&fb_info, fb_info.elmts_per_buf, data_dxpl_id) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "can't refill fill value buffer")
 
                 /* Check if there are filters which need to be applied to the chunk */
@@ -3441,19 +3447,19 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
 #endif /* H5_HAVE_PARALLEL */
 
     /* Reset any cached chunk info for this dataset */
-    H5D_chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
+    H5D__chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
 
 done:
     /* Release the fill buffer info, if it's been initialized */
-    if(fb_info_init && H5D_fill_term(&fb_info) < 0)
+    if(fb_info_init && H5D__fill_term(&fb_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release fill buffer info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_allocate() */
+} /* end H5D__chunk_allocate() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_prune_fill
+ * Function:	H5D__chunk_prune_fill
  *
  * Purpose:	Write the fill value to the parts of the chunk that are no
  *              longer part of the dataspace
@@ -3466,7 +3472,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
+H5D__chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
 {
     const H5D_io_info_t *io_info = udata->io_info; /* Local pointer to I/O info */
     H5D_t       *dset = io_info->dset;  /* Local pointer to the dataset info */
@@ -3484,14 +3490,14 @@ H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
     unsigned    u;                      /* Local index variable */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get the chunk's size */
     HDassert(layout->u.chunk.size > 0);
     H5_ASSIGN_OVERFLOW(chunk_size, layout->u.chunk.size, uint32_t, size_t);
 
     /* Get the info for the chunk in the file */
-    if(H5D_chunk_lookup(dset, io_info->dxpl_id, chunk_offset,
+    if(H5D__chunk_lookup(dset, io_info->dxpl_id, chunk_offset,
             io_info->store->chunk.index, &chk_udata) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk address")
 
@@ -3503,7 +3509,7 @@ H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
     /* Initialize the fill value buffer, if necessary */
     if(!udata->fb_info_init) {
         H5_CHECK_OVERFLOW(udata->elmts_per_chunk, uint32_t, size_t);
-        if(H5D_fill_init(&udata->fb_info, NULL, NULL, NULL, NULL, NULL,
+        if(H5D__fill_init(&udata->fb_info, NULL, NULL, NULL, NULL, NULL,
                 &dset->shared->dcpl_cache.fill,
                 dset->shared->type, dset->shared->type_id, (size_t)udata->elmts_per_chunk,
                 chunk_size, io_info->dxpl_id) < 0)
@@ -3527,7 +3533,7 @@ H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTSELECT, FAIL, "unable to select hyperslab")
 
     /* Lock the chunk into the cache, to get a pointer to the chunk buffer */
-    if(NULL == (chunk = (void *)H5D_chunk_lock(io_info, &chk_udata, FALSE)))
+    if(NULL == (chunk = (void *)H5D__chunk_lock(io_info, &chk_udata, FALSE)))
         HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "unable to lock raw data chunk")
 
 
@@ -3544,7 +3550,7 @@ H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
     /* Check for VL datatype & non-default fill value */
     if(udata->fb_info.has_vlen_fill_type)
         /* Re-fill the buffer to use for this I/O operation */
-        if(H5D_fill_refill_vl(&udata->fb_info, (size_t)sel_nelmts, io_info->dxpl_id) < 0)
+        if(H5D__fill_refill_vl(&udata->fb_info, (size_t)sel_nelmts, io_info->dxpl_id) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "can't refill fill value buffer")
 
     /* Create a selection iterator for scattering the elements to memory buffer */
@@ -3553,7 +3559,7 @@ H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
     chunk_iter_init = TRUE;
 
     /* Scatter the data into memory */
-    if(H5D_scatter_mem(udata->fb_info.fill_buf, udata->chunk_space, &chunk_iter, (size_t)sel_nelmts, io_info->dxpl_cache, chunk/*out*/) < 0)
+    if(H5D__scatter_mem(udata->fb_info.fill_buf, udata->chunk_space, &chunk_iter, (size_t)sel_nelmts, io_info->dxpl_cache, chunk/*out*/) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "scatter failed")
 
 
@@ -3563,7 +3569,7 @@ H5D_chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
     bytes_accessed = (uint32_t)sel_nelmts * layout->u.chunk.dim[rank];
 
     /* Release lock on chunk */
-    if(H5D_chunk_unlock(io_info, &chk_udata, TRUE, chunk, bytes_accessed) < 0)
+    if(H5D__chunk_unlock(io_info, &chk_udata, TRUE, chunk, bytes_accessed) < 0)
         HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to unlock raw data chunk")
 
 done:
@@ -3572,11 +3578,11 @@ done:
         HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release selection iterator")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_prune_fill */
+} /* H5D__chunk_prune_fill */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_prune_by_extent
+ * Function:	H5D__chunk_prune_by_extent
  *
  * Purpose:	This function searches for chunks that are no longer necessary
  *              both in the raw data cache and in the chunk index.
@@ -3675,7 +3681,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
+H5D__chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
 {
     hsize_t                 min_mod_chunk_off[H5O_LAYOUT_NDIMS]; /* Offset of first chunk to modify in each dimension */
     hsize_t                 max_mod_chunk_off[H5O_LAYOUT_NDIMS]; /* Offset of last chunk to modify in each dimension */
@@ -3709,7 +3715,7 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
     int                     i;	        /* Local index variable */
     herr_t                  ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dset && H5D_CHUNKED == layout->type);
@@ -3717,7 +3723,7 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
     HDassert(dxpl_cache);
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Go get the rank & dimensions (including the element size) */
@@ -3733,7 +3739,7 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
     for(op_dim=0; op_dim<space_ndims; op_dim++)
         if(old_dim[op_dim] == 0) {
             /* Reset any cached chunk info for this dataset */
-            H5D_chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
+            H5D__chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
             HGOTO_DONE(SUCCEED)
         } /* end if */
 
@@ -3792,7 +3798,9 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
     /*
      * Determine the chunks which need to be filled or removed
      */
-    for(op_dim=0; op_dim<space_ndims; op_dim++) {
+    HDmemset(min_mod_chunk_off, 0, sizeof(min_mod_chunk_off));
+    HDmemset(max_mod_chunk_off, 0, sizeof(max_mod_chunk_off));
+    for(op_dim = 0; op_dim < space_ndims; op_dim++) {
         /* Calculate the largest offset of chunks that might need to be
          * modified in this dimension */
         max_mod_chunk_off[op_dim] = chunk_dim[op_dim] * ((old_dim[op_dim] - 1)
@@ -3880,7 +3888,7 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
                 HDassert(chunk_offset[op_dim] == min_mod_chunk_off[op_dim]);
 
                 /* Fill the unused parts of the chunk */
-                if(H5D_chunk_prune_fill(&udata) < 0)
+                if(H5D__chunk_prune_fill(&udata) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to write fill value")
             } /* end if */
             else {
@@ -3899,14 +3907,14 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
 #endif /* NDEBUG */
 
                 /* Check if the chunk exists in cache or on disk */
-                if(H5D_chunk_lookup(dset, dxpl_id, chunk_offset,
+                if(H5D__chunk_lookup(dset, dxpl_id, chunk_offset,
                         chk_io_info.store->chunk.index, &chk_udata) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk")
 
                 /* Evict the entry from the cache if present, but do not flush
                  * it to disk */
                 if(UINT_MAX != chk_udata.idx_hint) {
-                    if(H5D_chunk_cache_evict(dset, dxpl_id, dxpl_cache,
+                    if(H5D__chunk_cache_evict(dset, dxpl_id, dxpl_cache,
                             rdcc->slot[chk_udata.idx_hint], FALSE) < 0)
                         HGOTO_ERROR(H5E_DATASET, H5E_CANTREMOVE, FAIL, "unable to evict chunk")
                 } /* end if */
@@ -3971,24 +3979,24 @@ H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
     } /* end for(op_dim=0...) */
 
     /* Reset any cached chunk info for this dataset */
-    H5D_chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
+    H5D__chunk_cinfo_cache_reset(&dset->shared->cache.chunk.last);
 
 done:
     /* Release resources */
     if(chunk_space && H5S_close(chunk_space) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to release dataspace")
     if(udata_init) {
-        if(udata.fb_info_init && H5D_fill_term(&udata.fb_info) < 0)
+        if(udata.fb_info_init && H5D__fill_term(&udata.fb_info) < 0)
             HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release fill buffer info")
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_prune_by_extent() */
+} /* end H5D__chunk_prune_by_extent() */
 
 #ifdef H5_HAVE_PARALLEL
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_addrmap_cb
+ * Function:	H5D__chunk_addrmap_cb
  *
  * Purpose:     Callback when obtaining the chunk addresses for all existing chunks
  *
@@ -4001,14 +4009,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5D_chunk_addrmap_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
+H5D__chunk_addrmap_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 {
     H5D_chunk_it_ud2_t	*udata = (H5D_chunk_it_ud2_t *)_udata;  /* User data for callback */
     unsigned       rank = udata->common.layout->ndims - 1;    /* # of dimensions of dataset */
     hsize_t        chunk_index;
     int            ret_value = H5_ITER_CONT;     /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Compute the index for this chunk */
     if(H5V_chunk_index(rank, chunk_rec->offset, udata->common.layout->dim, udata->common.layout->down_chunks, &chunk_index) < 0)
@@ -4019,11 +4027,11 @@ H5D_chunk_addrmap_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_chunk_addrmap_cb() */
+} /* H5D__chunk_addrmap_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_addrmap
+ * Function:	H5D__chunk_addrmap
  *
  * Purpose:     Obtain the chunk addresses for all existing chunks
  *
@@ -4036,14 +4044,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[])
+H5D__chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[])
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     H5D_t *dset = io_info->dset;        /* Local pointer to dataset info */
     H5D_chunk_it_ud2_t udata;          	/* User data for iteration callback */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(dset);
     HDassert(dset->shared);
@@ -4064,17 +4072,17 @@ H5D_chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[])
     idx_info.storage = &dset->shared->layout.storage.u.chunk;
 
     /* Iterate over chunks to build mapping of chunk addresses */
-    if((dset->shared->layout.storage.u.chunk.ops->iterate)(&idx_info, H5D_chunk_addrmap_cb, &udata) < 0)
+    if((dset->shared->layout.storage.u.chunk.ops->iterate)(&idx_info, H5D__chunk_addrmap_cb, &udata) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to iterate over chunk index to build address map")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_addrmap() */
+} /* end H5D__chunk_addrmap() */
 #endif /* H5_HAVE_PARALLEL */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_delete
+ * Function:	H5D__chunk_delete
  *
  * Purpose:	Delete raw data storage for entire dataset (i.e. all chunks)
  *
@@ -4087,7 +4095,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5O_storage_t *storage)
+H5D__chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5O_storage_t *storage)
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     H5O_layout_t layout;                /* Dataset layout  message */
@@ -4097,7 +4105,7 @@ H5D_chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5O_storage_t *storage)
     htri_t	exists;                 /* Flag if header message of interest exists */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(f);
@@ -4147,11 +4155,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CANTRESET, FAIL, "unable to reset layout message")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_delete() */
+} /* end H5D__chunk_delete() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_update_cache
+ * Function:	H5D__chunk_update_cache
  *
  * Purpose:	Update any cached chunks index values after the dataspace
  *              size has changed
@@ -4165,7 +4173,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
+H5D__chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
 {
     H5D_rdcc_t         *rdcc = &(dset->shared->cache.chunk);	/*raw data chunk cache */
     H5D_rdcc_ent_t     *ent, *next;	/*cache entry  */
@@ -4175,7 +4183,7 @@ H5D_chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
     unsigned            rank;	        /*current # of dimensions */
     herr_t              ret_value = SUCCEED;      /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dset && H5D_CHUNKED == dset->shared->layout.type);
@@ -4190,7 +4198,7 @@ H5D_chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
         HGOTO_DONE(SUCCEED)
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Recompute the index for each cached chunk that is in a dataset */
@@ -4220,7 +4228,7 @@ H5D_chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
                     next = old_ent->next;
 
                 /* Remove the old entry from the cache */
-                if(H5D_chunk_cache_evict(dset, dxpl_id, dxpl_cache, old_ent, TRUE) < 0)
+                if(H5D__chunk_cache_evict(dset, dxpl_id, dxpl_cache, old_ent, TRUE) < 0)
                     HGOTO_ERROR(H5E_IO, H5E_CANTFLUSH, FAIL, "unable to flush one or more raw data chunks")
             } /* end if */
 
@@ -4234,11 +4242,11 @@ H5D_chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_update_cache() */
+} /* end H5D__chunk_update_cache() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_copy_cb
+ * Function:    H5D__chunk_copy_cb
  *
  * Purpose:     Copy chunked raw data from source file and insert to the
  *              index in the destination file
@@ -4251,7 +4259,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5D_chunk_copy_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
+H5D__chunk_copy_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 {
     H5D_chunk_it_ud3_t      *udata = (H5D_chunk_it_ud3_t *)_udata;       /* User data for callback */
     H5D_chunk_ud_t          udata_dst;                  /* User data about new destination chunk */
@@ -4271,7 +4279,7 @@ H5D_chunk_copy_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 
     int                     ret_value = H5_ITER_CONT;   /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get 'size_t' local value for number of bytes in chunk */
     H5_ASSIGN_OVERFLOW(nbytes, chunk_rec->nbytes, uint32_t, size_t);
@@ -4408,11 +4416,11 @@ H5D_chunk_copy_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_copy_cb() */
+} /* end H5D__chunk_copy_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_copy
+ * Function:	H5D__chunk_copy
  *
  * Purpose:	Copy chunked storage from SRC file to DST file.
  *
@@ -4425,7 +4433,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
+H5D__chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
     H5O_layout_chunk_t *layout_src, H5F_t *f_dst, H5O_storage_chunk_t *storage_dst,
     const H5S_extent_t *ds_extent_src, const H5T_t *dt_src,
     const H5O_pline_t *pline_src, H5O_copy_t *cpy_info, hid_t dxpl_id)
@@ -4451,7 +4459,7 @@ H5D_chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
     hbool_t     copy_setup_done = FALSE;        /* Indicate that 'copy setup' is done */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(f_src);
@@ -4486,7 +4494,7 @@ H5D_chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
         H5_ASSIGN_OVERFLOW(ndims, sndims, int, unsigned);
 
         /* Set the source layout chunk information */
-        if(H5D_chunk_set_info_real(layout_src, ndims, curr_dims) < 0)
+        if(H5D__chunk_set_info_real(layout_src, ndims, curr_dims) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "can't set layout's chunk info")
     } /* end block */
 
@@ -4637,7 +4645,7 @@ H5D_chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
     udata.cpy_info = cpy_info;
 
     /* Iterate over chunks to copy data */
-    if((storage_src->ops->iterate)(&idx_info_src, H5D_chunk_copy_cb, &udata) < 0)
+    if((storage_src->ops->iterate)(&idx_info_src, H5D__chunk_copy_cb, &udata) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_BADITER, FAIL, "unable to iterate over chunk index to copy data")
 
     /* I/O buffers may have been re-allocated */
@@ -4666,11 +4674,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CANTRELEASE, FAIL, "unable to shut down index copying info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_copy() */
+} /* end H5D__chunk_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_bh_info
+ * Function:    H5D__chunk_bh_info
  *
  * Purpose:     Retrieve the amount of index storage for chunked dataset
  *
@@ -4683,13 +4691,13 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_bh_info(H5F_t *f, hid_t dxpl_id, H5O_layout_t *layout,
+H5D__chunk_bh_info(H5F_t *f, hid_t dxpl_id, H5O_layout_t *layout,
     const H5O_pline_t *pline, hsize_t *index_size)
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(f);
@@ -4710,11 +4718,11 @@ H5D_chunk_bh_info(H5F_t *f, hid_t dxpl_id, H5O_layout_t *layout,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_bh_info() */
+} /* end H5D__chunk_bh_info() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_iter_dump
+ * Function:	H5D__chunk_dump_index_cb
  *
  * Purpose:	If the UDATA.STREAM member is non-null then debugging
  *              information is written to that stream.
@@ -4730,11 +4738,11 @@ done:
  */
 /* ARGSUSED */
 static int
-H5D_chunk_dump_index_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
+H5D__chunk_dump_index_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
 {
     H5D_chunk_it_ud4_t	*udata = (H5D_chunk_it_ud4_t *)_udata;  /* User data from caller */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     if(udata->stream) {
         unsigned u;     /* Local index variable */
@@ -4756,11 +4764,11 @@ H5D_chunk_dump_index_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
     } /* end if */
 
     FUNC_LEAVE_NOAPI(H5_ITER_CONT)
-} /* H5D_chunk_dump_index_cb() */
+} /* H5D__chunk_dump_index_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_dump_index
+ * Function:	H5D__chunk_dump_index
  *
  * Purpose:	Prints information about the storage index to the specified
  *		stream.
@@ -4774,11 +4782,11 @@ H5D_chunk_dump_index_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_dump_index(H5D_t *dset, hid_t dxpl_id, FILE *stream)
+H5D__chunk_dump_index(H5D_t *dset, hid_t dxpl_id, FILE *stream)
 {
     herr_t ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(dset);
@@ -4805,17 +4813,17 @@ H5D_chunk_dump_index(H5D_t *dset, hid_t dxpl_id, FILE *stream)
         udata.ndims = dset->shared->layout.u.chunk.ndims;
 
         /* Iterate over index and dump chunk info */
-        if((dset->shared->layout.storage.u.chunk.ops->iterate)(&idx_info, H5D_chunk_dump_index_cb, &udata) < 0)
+        if((dset->shared->layout.storage.u.chunk.ops->iterate)(&idx_info, H5D__chunk_dump_index_cb, &udata) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_BADITER, FAIL, "unable to iterate over chunk index to dump chunk info")
     } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_dump_index() */
+} /* end H5D__chunk_dump_index() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_dest
+ * Function:	H5D__chunk_dest
  *
  * Purpose:	Destroy the entire chunk cache by flushing dirty entries,
  *		preempting all entries, and freeing the cache itself.
@@ -4828,7 +4836,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset)
+H5D__chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset)
 {
     H5D_chk_idx_info_t idx_info;        /* Chunked index info */
     H5D_dxpl_cache_t _dxpl_cache;       /* Data transfer property cache buffer */
@@ -4838,19 +4846,19 @@ H5D_chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset)
     int		nerrors = 0;            /* Accumulated count of errors */
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(f);
     HDassert(dset);
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Flush all the cached chunks */
     for(ent = rdcc->head; ent; ent = next) {
 	next = ent->next;
-	if(H5D_chunk_cache_evict(dset, dxpl_id, dxpl_cache, ent, TRUE) < 0)
+	if(H5D__chunk_cache_evict(dset, dxpl_id, dxpl_cache, ent, TRUE) < 0)
 	    nerrors++;
     } /* end for */
     
@@ -4876,12 +4884,12 @@ H5D_chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_dest() */
+} /* end H5D__chunk_dest() */
 
 #ifdef H5D_CHUNK_DEBUG
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_chunk_stats
+ * Function:	H5D__chunk_stats
  *
  * Purpose:	Print raw data cache statistics to the debug stream.  If
  *		HEADERS is non-zero then print table column headers,
@@ -4895,14 +4903,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_stats(const H5D_t *dset, hbool_t headers)
+H5D__chunk_stats(const H5D_t *dset, hbool_t headers)
 {
     H5D_rdcc_t	*rdcc = &(dset->shared->cache.chunk);
     double	miss_rate;
     char	ascii[32];
     herr_t      ret_value=SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOERR(FAIL)
+    FUNC_ENTER_PACKAGE_NOERR
 
     if (!H5DEBUG(AC))
         HGOTO_DONE(SUCCEED)
@@ -4939,12 +4947,12 @@ H5D_chunk_stats(const H5D_t *dset, hbool_t headers)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_stats() */
+} /* end H5D__chunk_stats() */
 #endif /* H5D_CHUNK_DEBUG */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_nonexistent_readvv_cb
+ * Function:	H5D__nonexistent_readvv_cb
  *
  * Purpose:	Callback operation for performing fill value I/O operation
  *              on memory buffer.
@@ -4962,7 +4970,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_nonexistent_readvv_cb(hsize_t UNUSED dst_off, hsize_t src_off, size_t len,
+H5D__nonexistent_readvv_cb(hsize_t UNUSED dst_off, hsize_t src_off, size_t len,
     void *_udata)
 {
     H5D_chunk_readvv_ud_t *udata = (H5D_chunk_readvv_ud_t *)_udata; /* User data for H5V_opvv() operator */
@@ -4970,30 +4978,30 @@ H5D_nonexistent_readvv_cb(hsize_t UNUSED dst_off, hsize_t src_off, size_t len,
     hbool_t fb_info_init = FALSE;   /* Whether the fill value buffer has been initialized */
     herr_t ret_value = SUCCEED;     /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Initialize the fill value buffer */
-    if(H5D_fill_init(&fb_info, (udata->rbuf + src_off), NULL, NULL, NULL, NULL,
+    if(H5D__fill_init(&fb_info, (udata->rbuf + src_off), NULL, NULL, NULL, NULL,
             &udata->dset->shared->dcpl_cache.fill, udata->dset->shared->type,
             udata->dset->shared->type_id, (size_t)0, len, udata->dxpl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't initialize fill buffer info")
     fb_info_init = TRUE;
 
     /* Check for VL datatype & fill the buffer with VL datatype fill values */
-    if(fb_info.has_vlen_fill_type && H5D_fill_refill_vl(&fb_info, fb_info.elmts_per_buf, udata->dxpl_id) < 0)
+    if(fb_info.has_vlen_fill_type && H5D__fill_refill_vl(&fb_info, fb_info.elmts_per_buf, udata->dxpl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "can't refill fill value buffer")
 
 done:
     /* Release the fill buffer info, if it's been initialized */
-    if(fb_info_init && H5D_fill_term(&fb_info) < 0)
+    if(fb_info_init && H5D__fill_term(&fb_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release fill buffer info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_nonexistent_readvv_cb() */
+} /* H5D__nonexistent_readvv_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_nonexistent_readvv
+ * Function:	H5D__nonexistent_readvv
  *
  * Purpose:	When the chunk doesn't exist on disk and the chunk is bigger
  *              than the cache size, performs fill value I/O operation on
@@ -5013,14 +5021,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_nonexistent_readvv(const H5D_io_info_t *io_info,
+H5D__nonexistent_readvv(const H5D_io_info_t *io_info,
     size_t chunk_max_nseq, size_t *chunk_curr_seq, size_t chunk_len_arr[], hsize_t chunk_off_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_off_arr[])
 {
     H5D_chunk_readvv_ud_t udata;        /* User data for H5V_opvv() operator */
     ssize_t ret_value;                  /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(io_info);
@@ -5039,10 +5047,10 @@ H5D_nonexistent_readvv(const H5D_io_info_t *io_info,
     /* Call generic sequence operation routine */
     if((ret_value = H5V_opvv(chunk_max_nseq, chunk_curr_seq, chunk_len_arr, chunk_off_arr,
             mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-            H5D_nonexistent_readvv_cb, &udata)) < 0)
+            H5D__nonexistent_readvv_cb, &udata)) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized fill value init")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_nonexistent_readvv() */
+} /* H5D__nonexistent_readvv() */
 
diff --git a/src/H5Dcompact.c b/src/H5Dcompact.c
index 33a0dd6..c692c2b 100644
--- a/src/H5Dcompact.c
+++ b/src/H5Dcompact.c
@@ -58,18 +58,18 @@
 /********************/
 
 /* Layout operation callbacks */
-static herr_t H5D_compact_construct(H5F_t *f, H5D_t *dset);
-static hbool_t H5D_compact_is_space_alloc(const H5O_storage_t *storage);
-static herr_t H5D_compact_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+static herr_t H5D__compact_construct(H5F_t *f, H5D_t *dset);
+static hbool_t H5D__compact_is_space_alloc(const H5O_storage_t *storage);
+static herr_t H5D__compact_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *cm);
-static ssize_t H5D_compact_readvv(const H5D_io_info_t *io_info,
+static ssize_t H5D__compact_readvv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_size_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_size_arr[], hsize_t mem_offset_arr[]);
-static ssize_t H5D_compact_writevv(const H5D_io_info_t *io_info,
+static ssize_t H5D__compact_writevv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_size_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_size_arr[], hsize_t mem_offset_arr[]);
-static herr_t H5D_compact_flush(H5D_t *dset, hid_t dxpl_id);
+static herr_t H5D__compact_flush(H5D_t *dset, hid_t dxpl_id);
 
 
 /*********************/
@@ -78,19 +78,19 @@ static herr_t H5D_compact_flush(H5D_t *dset, hid_t dxpl_id);
 
 /* Compact storage layout I/O ops */
 const H5D_layout_ops_t H5D_LOPS_COMPACT[1] = {{
-    H5D_compact_construct,
+    H5D__compact_construct,
     NULL,
-    H5D_compact_is_space_alloc,
-    H5D_compact_io_init,
-    H5D_contig_read,
-    H5D_contig_write,
+    H5D__compact_is_space_alloc,
+    H5D__compact_io_init,
+    H5D__contig_read,
+    H5D__contig_write,
 #ifdef H5_HAVE_PARALLEL
     NULL,
     NULL,
 #endif /* H5_HAVE_PARALLEL */
-    H5D_compact_readvv,
-    H5D_compact_writevv,
-    H5D_compact_flush,
+    H5D__compact_readvv,
+    H5D__compact_writevv,
+    H5D__compact_flush,
     NULL
 }};
 
@@ -105,7 +105,7 @@ H5FL_BLK_EXTERN(type_conv);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compact_fill
+ * Function:	H5D__compact_fill
  *
  * Purpose:	Write fill values to a compactly stored dataset.
  *
@@ -117,13 +117,13 @@ H5FL_BLK_EXTERN(type_conv);
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_compact_fill(H5D_t *dset, hid_t dxpl_id)
+H5D__compact_fill(H5D_t *dset, hid_t dxpl_id)
 {
     H5D_fill_buf_info_t fb_info;        /* Dataset's fill buffer info */
     hbool_t     fb_info_init = FALSE;   /* Whether the fill value buffer has been initialized */
     herr_t	ret_value = SUCCEED;	/* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(TRUE == H5P_isa_class(dxpl_id, H5P_DATASET_XFER));
@@ -134,7 +134,7 @@ H5D_compact_fill(H5D_t *dset, hid_t dxpl_id)
 
     /* Initialize the fill value buffer */
     /* (use the compact dataset storage buffer as the fill value buffer) */
-    if(H5D_fill_init(&fb_info, dset->shared->layout.storage.u.compact.buf,
+    if(H5D__fill_init(&fb_info, dset->shared->layout.storage.u.compact.buf,
             NULL, NULL, NULL, NULL,
             &dset->shared->dcpl_cache.fill, dset->shared->type,
             dset->shared->type_id, (size_t)0, dset->shared->layout.storage.u.compact.size, dxpl_id) < 0)
@@ -144,20 +144,20 @@ H5D_compact_fill(H5D_t *dset, hid_t dxpl_id)
     /* Check for VL datatype & non-default fill value */
     if(fb_info.has_vlen_fill_type)
         /* Fill the buffer with VL datatype fill values */
-        if(H5D_fill_refill_vl(&fb_info, fb_info.elmts_per_buf, dxpl_id) < 0)
+        if(H5D__fill_refill_vl(&fb_info, fb_info.elmts_per_buf, dxpl_id) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "can't refill fill value buffer")
 
 done:
     /* Release the fill buffer info, if it's been initialized */
-    if(fb_info_init && H5D_fill_term(&fb_info) < 0)
+    if(fb_info_init && H5D__fill_term(&fb_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release fill buffer info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_compact_fill() */
+} /* end H5D__compact_fill() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compact_construct
+ * Function:	H5D__compact_construct
  *
  * Purpose:	Constructs new compact layout information for dataset
  *
@@ -169,7 +169,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_compact_construct(H5F_t *f, H5D_t *dset)
+H5D__compact_construct(H5F_t *f, H5D_t *dset)
 {
     hssize_t stmp_size;         /* Temporary holder for raw data size */
     hsize_t tmp_size;           /* Temporary holder for raw data size */
@@ -180,7 +180,7 @@ H5D_compact_construct(H5F_t *f, H5D_t *dset)
     int i;                              /* Local index variable */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(f);
@@ -207,17 +207,17 @@ H5D_compact_construct(H5F_t *f, H5D_t *dset)
     /* Verify data size is smaller than maximum header message size
      * (64KB) minus other layout message fields.
      */
-    max_comp_data_size = H5O_MESG_MAX_SIZE - H5D_layout_meta_size(f, &(dset->shared->layout), FALSE);
+    max_comp_data_size = H5O_MESG_MAX_SIZE - H5D__layout_meta_size(f, &(dset->shared->layout), FALSE);
     if(dset->shared->layout.storage.u.compact.size > max_comp_data_size)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "compact dataset size is bigger than header message maximum size")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_compact_construct() */
+} /* end H5D__compact_construct() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compact_is_space_alloc
+ * Function:	H5D__compact_is_space_alloc
  *
  * Purpose:	Query if space is allocated for layout
  *
@@ -229,20 +229,20 @@ done:
  *-------------------------------------------------------------------------
  */
 static hbool_t
-H5D_compact_is_space_alloc(const H5O_storage_t UNUSED *storage)
+H5D__compact_is_space_alloc(const H5O_storage_t UNUSED *storage)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity checks */
     HDassert(storage);
 
     /* Compact storage is currently always allocated */
     FUNC_LEAVE_NOAPI(TRUE)
-} /* end H5D_compact_is_space_alloc() */
+} /* end H5D__compact_is_space_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compact_io_init
+ * Function:	H5D__compact_io_init
  *
  * Purpose:	Performs initialization before any sort of I/O on the raw data
  *
@@ -254,21 +254,21 @@ H5D_compact_is_space_alloc(const H5O_storage_t UNUSED *storage)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_compact_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
+H5D__compact_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t UNUSED *cm)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     io_info->store->compact.buf = io_info->dset->shared->layout.storage.u.compact.buf;
     io_info->store->compact.dirty = &io_info->dset->shared->layout.storage.u.compact.dirty;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_compact_io_init() */
+} /* end H5D__compact_io_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_compact_readvv
+ * Function:    H5D__compact_readvv
  *
  * Purpose:     Reads some data vectors from a dataset into a buffer.
  *              The data is in compact dataset.  The address is relative
@@ -286,13 +286,13 @@ H5D_compact_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_compact_readvv(const H5D_io_info_t *io_info,
+H5D__compact_readvv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_size_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_size_arr[], hsize_t mem_offset_arr[])
 {
     ssize_t ret_value;                  /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(io_info);
 
@@ -302,11 +302,11 @@ H5D_compact_readvv(const H5D_io_info_t *io_info,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_compact_readvv() */
+}   /* end H5D__compact_readvv() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_compact_writevv
+ * Function:    H5D__compact_writevv
  *
  * Purpose:     Writes some data vectors from a dataset into a buffer.
  *              The data is in compact dataset.  The address is relative
@@ -327,13 +327,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_compact_writevv(const H5D_io_info_t *io_info,
+H5D__compact_writevv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_size_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_size_arr[], hsize_t mem_offset_arr[])
 {
     ssize_t ret_value;                  /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(io_info);
 
@@ -346,11 +346,11 @@ H5D_compact_writevv(const H5D_io_info_t *io_info,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_compact_writevv() */
+}   /* end H5D__compact_writevv() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compact_flush
+ * Function:	H5D__compact_flush
  *
  * Purpose:	Writes dirty compact data to object header
  *
@@ -362,11 +362,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_compact_flush(H5D_t *dset, hid_t dxpl_id)
+H5D__compact_flush(H5D_t *dset, hid_t dxpl_id)
 {
     herr_t ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(dset);
@@ -380,11 +380,11 @@ H5D_compact_flush(H5D_t *dset, hid_t dxpl_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_compact_flush() */
+} /* end H5D__compact_flush() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_compact_copy
+ * Function:    H5D__compact_copy
  *
  * Purpose:     Copy compact storage raw data from SRC file to DST file.
  *
@@ -396,7 +396,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst,
+H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst,
     H5O_storage_compact_t *storage_dst, H5T_t *dt_src, H5O_copy_t *cpy_info,
     hid_t dxpl_id)
 {
@@ -409,7 +409,7 @@ H5D_compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst,
     hid_t       buf_sid = -1;           /* ID for buffer dataspace */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(f_src);
@@ -574,5 +574,5 @@ done:
         bkg = H5FL_BLK_FREE(type_conv, bkg);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_compact_copy() */
+} /* end H5D__compact_copy() */
 
diff --git a/src/H5Dcontig.c b/src/H5Dcontig.c
index cafa4a4..98743ac 100644
--- a/src/H5Dcontig.c
+++ b/src/H5Dcontig.c
@@ -95,20 +95,20 @@ typedef struct H5D_contig_writevv_ud_t {
 /********************/
 
 /* Layout operation callbacks */
-static herr_t H5D_contig_construct(H5F_t *f, H5D_t *dset);
-static herr_t H5D_contig_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+static herr_t H5D__contig_construct(H5F_t *f, H5D_t *dset);
+static herr_t H5D__contig_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *cm);
-static ssize_t H5D_contig_readvv(const H5D_io_info_t *io_info,
+static ssize_t H5D__contig_readvv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
-static ssize_t H5D_contig_writevv(const H5D_io_info_t *io_info,
+static ssize_t H5D__contig_writevv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
-static herr_t H5D_contig_flush(H5D_t *dset, hid_t dxpl_id);
+static herr_t H5D__contig_flush(H5D_t *dset, hid_t dxpl_id);
 
 /* Helper routines */
-static herr_t H5D_contig_write_one(H5D_io_info_t *io_info, hsize_t offset,
+static herr_t H5D__contig_write_one(H5D_io_info_t *io_info, hsize_t offset,
     size_t size);
 
 
@@ -118,19 +118,19 @@ static herr_t H5D_contig_write_one(H5D_io_info_t *io_info, hsize_t offset,
 
 /* Contiguous storage layout I/O ops */
 const H5D_layout_ops_t H5D_LOPS_CONTIG[1] = {{
-    H5D_contig_construct,
+    H5D__contig_construct,
     NULL,
-    H5D_contig_is_space_alloc,
-    H5D_contig_io_init,
-    H5D_contig_read,
-    H5D_contig_write,
+    H5D__contig_is_space_alloc,
+    H5D__contig_io_init,
+    H5D__contig_read,
+    H5D__contig_write,
 #ifdef H5_HAVE_PARALLEL
-    H5D_contig_collective_read,
-    H5D_contig_collective_write,
+    H5D__contig_collective_read,
+    H5D__contig_collective_write,
 #endif /* H5_HAVE_PARALLEL */
-    H5D_contig_readvv,
-    H5D_contig_writevv,
-    H5D_contig_flush,
+    H5D__contig_readvv,
+    H5D__contig_writevv,
+    H5D__contig_flush,
     NULL
 }};
 
@@ -148,7 +148,7 @@ H5FL_BLK_EXTERN(type_conv);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_alloc
+ * Function:	H5D__contig_alloc
  *
  * Purpose:	Allocate file space for a contiguously stored dataset
  *
@@ -160,11 +160,11 @@ H5FL_BLK_EXTERN(type_conv);
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_alloc(H5F_t *f, hid_t dxpl_id, H5O_storage_contig_t *storage /*out */ )
+H5D__contig_alloc(H5F_t *f, hid_t dxpl_id, H5O_storage_contig_t *storage /*out */ )
 {
     herr_t ret_value = SUCCEED;   /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(f);
@@ -176,11 +176,11 @@ H5D_contig_alloc(H5F_t *f, hid_t dxpl_id, H5O_storage_contig_t *storage /*out */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_alloc */
+} /* end H5D__contig_alloc */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_fill
+ * Function:	H5D__contig_fill
  *
  * Purpose:	Write fill values to a contiguously stored dataset.
  *
@@ -192,7 +192,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
+H5D__contig_fill(H5D_t *dset, hid_t dxpl_id)
 {
     H5D_io_info_t ioinfo;       /* Dataset I/O info */
     H5D_storage_t store;        /* Union of storage info for dataset */
@@ -213,7 +213,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
     hid_t       my_dxpl_id;     /* DXPL ID to use for this operation */
     herr_t	ret_value = SUCCEED;	/* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(TRUE == H5P_isa_class(dxpl_id, H5P_DATASET_XFER));
@@ -249,7 +249,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
 #endif  /* H5_HAVE_PARALLEL */
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(my_dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(my_dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Initialize storage info for this dataset */
@@ -262,7 +262,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
     H5_ASSIGN_OVERFLOW(npoints, snpoints, hssize_t, size_t);
 
     /* Initialize the fill value buffer */
-    if(H5D_fill_init(&fb_info, NULL, NULL, NULL, NULL, NULL,
+    if(H5D__fill_init(&fb_info, NULL, NULL, NULL, NULL, NULL,
             &dset->shared->dcpl_cache.fill,
             dset->shared->type, dset->shared->type_id, npoints,
             dxpl_cache->max_temp_buf, my_dxpl_id) < 0)
@@ -293,7 +293,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
         /* Check for VL datatype & non-default fill value */
         if(fb_info.has_vlen_fill_type)
             /* Re-fill the buffer to use for this I/O operation */
-            if(H5D_fill_refill_vl(&fb_info, curr_points, my_dxpl_id) < 0)
+            if(H5D__fill_refill_vl(&fb_info, curr_points, my_dxpl_id) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "can't refill fill value buffer")
 
 #ifdef H5_HAVE_PARALLEL
@@ -302,7 +302,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
                 /* Write the chunks out from only one process */
                 /* !! Use the internal "independent" DXPL!! -QAK */
                 if(H5_PAR_META_WRITE == mpi_rank)
-                    if(H5D_contig_write_one(&ioinfo, offset, size) < 0)
+                    if(H5D__contig_write_one(&ioinfo, offset, size) < 0)
                         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset")
 
                 /* Indicate that blocks are being written */
@@ -311,7 +311,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
             else {
 #endif /* H5_HAVE_PARALLEL */
                 H5_CHECK_OVERFLOW(size, size_t, hsize_t);
-                if(H5D_contig_write_one(&ioinfo, offset, size) < 0)
+                if(H5D__contig_write_one(&ioinfo, offset, size) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset")
 #ifdef H5_HAVE_PARALLEL
             } /* end else */
@@ -336,15 +336,15 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
 
 done:
     /* Release the fill buffer info, if it's been initialized */
-    if(fb_info_init && H5D_fill_term(&fb_info) < 0)
+    if(fb_info_init && H5D__fill_term(&fb_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release fill buffer info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_fill() */
+} /* end H5D__contig_fill() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_delete
+ * Function:	H5D__contig_delete
  *
  * Purpose:	Delete the file space for a contiguously stored dataset
  *
@@ -356,11 +356,11 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_delete(H5F_t *f, hid_t dxpl_id, const H5O_storage_t *storage)
+H5D__contig_delete(H5F_t *f, hid_t dxpl_id, const H5O_storage_t *storage)
 {
     herr_t ret_value = SUCCEED;   /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(f);
@@ -372,36 +372,11 @@ H5D_contig_delete(H5F_t *f, hid_t dxpl_id, const H5O_storage_t *storage)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_delete */
+} /* end H5D__contig_delete */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_get_addr
- *
- * Purpose:	Get the offset of the contiguous data on disk
- *
- * Return:	Non-negative on success/Negative on failure
- *
- * Programmer:	Quincey Koziol
- *		June  2, 2004
- *
- *-------------------------------------------------------------------------
- */
-haddr_t
-H5D_contig_get_addr(const H5D_t *dset)
-{
-    FUNC_ENTER_NOAPI_NOERR
-
-    /* check args */
-    HDassert(dset);
-    HDassert(dset->shared->layout.type == H5D_CONTIGUOUS);
-
-    FUNC_LEAVE_NOAPI(dset->shared->layout.storage.u.contig.addr)
-} /* end H5D_contig_get_addr() */
-
-
-/*-------------------------------------------------------------------------
- * Function:	H5D_contig_construct
+ * Function:	H5D__contig_construct
  *
  * Purpose:	Constructs new contiguous layout information for dataset
  *
@@ -414,19 +389,20 @@ H5D_contig_get_addr(const H5D_t *dset)
  */
 /* ARGSUSED */
 static herr_t
-H5D_contig_construct(H5F_t *f, H5D_t *dset)
+H5D__contig_construct(H5F_t *f, H5D_t *dset)
 {
     hssize_t snelmts;                   /* Temporary holder for number of elements in dataspace */
     hsize_t nelmts;                     /* Number of elements in dataspace */
     size_t dt_size;                     /* Size of datatype */
     hsize_t tmp_size;                   /* Temporary holder for raw data size */
+    size_t tmp_sieve_buf_size;          /* Temporary holder for sieve buffer size */
     hsize_t dim[H5O_LAYOUT_NDIMS];	/* Current size of data in elements */
     hsize_t max_dim[H5O_LAYOUT_NDIMS];  /* Maximum size of data in elements */
     int ndims;                          /* Rank of dataspace */
     int i;                              /* Local index variable */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(f);
@@ -464,16 +440,23 @@ H5D_contig_construct(H5F_t *f, H5D_t *dset)
     /* Assign the dataset's contiguous storage size */
     dset->shared->layout.storage.u.contig.size = tmp_size;
 
-    /* Get the sieve buffer size for this dataset */
-    dset->shared->cache.contig.sieve_buf_size = H5F_SIEVE_BUF_SIZE(f);
+    /* Get the sieve buffer size for the file */
+    tmp_sieve_buf_size = H5F_SIEVE_BUF_SIZE(f);
+
+    /* Adjust the sieve buffer size to the smaller one between the dataset size and the buffer size
+     * from the file access property. (SLU - 2012/3/30) */
+    if(tmp_size < tmp_sieve_buf_size)
+        dset->shared->cache.contig.sieve_buf_size = tmp_size;
+    else
+        dset->shared->cache.contig.sieve_buf_size = tmp_sieve_buf_size;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_construct() */
+} /* end H5D__contig_construct() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_is_space_alloc
+ * Function:	H5D__contig_is_space_alloc
  *
  * Purpose:	Query if space is allocated for layout
  *
@@ -485,11 +468,11 @@ done:
  *-------------------------------------------------------------------------
  */
 hbool_t
-H5D_contig_is_space_alloc(const H5O_storage_t *storage)
+H5D__contig_is_space_alloc(const H5O_storage_t *storage)
 {
     hbool_t ret_value;                  /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Sanity checks */
     HDassert(storage);
@@ -498,11 +481,11 @@ H5D_contig_is_space_alloc(const H5O_storage_t *storage)
     ret_value = (hbool_t)H5F_addr_defined(storage->u.contig.addr);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_is_space_alloc() */
+} /* end H5D__contig_is_space_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_io_init
+ * Function:	H5D__contig_io_init
  *
  * Purpose:	Performs initialization before any sort of I/O on the raw data
  *
@@ -514,21 +497,21 @@ H5D_contig_is_space_alloc(const H5O_storage_t *storage)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
+H5D__contig_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t UNUSED *cm)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     io_info->store->contig.dset_addr = io_info->dset->shared->layout.storage.u.contig.addr;
     io_info->store->contig.dset_size = io_info->dset->shared->layout.storage.u.contig.size;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_contig_io_init() */
+} /* end H5D__contig_io_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_read
+ * Function:	H5D__contig_read
  *
  * Purpose:	Read from a contiguous dataset.
  *
@@ -540,13 +523,13 @@ H5D_contig_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *t
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t UNUSED *fm)
 {
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(io_info);
@@ -561,11 +544,11 @@ H5D_contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_read() */
+} /* end H5D__contig_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_write
+ * Function:	H5D__contig_write
  *
  * Purpose:	Write to a contiguous dataset.
  *
@@ -577,13 +560,13 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t UNUSED *fm)
 {
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(io_info);
@@ -598,11 +581,11 @@ H5D_contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_write() */
+} /* end H5D__contig_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_write_one
+ * Function:	H5D__contig_write_one
  *
  * Purpose:	Writes some data from a dataset into a buffer.
  *		The data is contiguous.	 The address is relative to the base
@@ -616,7 +599,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_write_one(H5D_io_info_t *io_info, hsize_t offset, size_t size)
+H5D__contig_write_one(H5D_io_info_t *io_info, hsize_t offset, size_t size)
 {
     hsize_t dset_off = offset;  /* Offset in dataset */
     size_t dset_len = size;     /* Length in dataset */
@@ -626,23 +609,23 @@ H5D_contig_write_one(H5D_io_info_t *io_info, hsize_t offset, size_t size)
     size_t mem_curr_seq = 0;    /* "Current sequence" in memory */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(io_info);
 
-    if(H5D_contig_writevv(io_info, (size_t)1, &dset_curr_seq, &dset_len, &dset_off,
+    if(H5D__contig_writevv(io_info, (size_t)1, &dset_curr_seq, &dset_len, &dset_off,
             (size_t)1, &mem_curr_seq, &mem_len, &mem_off) < 0)
         HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "vector write failed")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_write_one() */
+}   /* end H5D__contig_write_one() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_readvv_sieve_cb
+ * Function:	H5D__contig_readvv_sieve_cb
  *
- * Purpose:	Callback operator for H5D_contig_readvv() with sieve buffer.
+ * Purpose:	Callback operator for H5D__contig_readvv() with sieve buffer.
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -652,7 +635,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_readvv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
+H5D__contig_readvv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
     void *_udata)
 {
     H5D_contig_readvv_sieve_ud_t *udata = (H5D_contig_readvv_sieve_ud_t *)_udata; /* User data for H5V_opvv() operator */
@@ -668,7 +651,7 @@ H5D_contig_readvv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
     hsize_t max_data;           /* Actual maximum size of data to cache */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Stash local copies of these value */
     if(dset_contig->sieve_buf != NULL) {
@@ -803,13 +786,13 @@ H5D_contig_readvv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_readvv_sieve_cb() */
+}   /* end H5D__contig_readvv_sieve_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_readvv_cb
+ * Function:	H5D__contig_readvv_cb
  *
- * Purpose:	Callback operator for H5D_contig_readvv() without sieve buffer.
+ * Purpose:	Callback operator for H5D__contig_readvv() without sieve buffer.
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -819,12 +802,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_readvv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
+H5D__contig_readvv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
 {
     H5D_contig_readvv_ud_t *udata = (H5D_contig_readvv_ud_t *)_udata; /* User data for H5V_opvv() operator */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Write data */
     if(H5F_block_read(udata->file, H5FD_MEM_DRAW, (udata->dset_addr + dst_off),
@@ -833,11 +816,11 @@ H5D_contig_readvv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_readvv_cb() */
+}   /* end H5D__contig_readvv_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_readvv
+ * Function:	H5D__contig_readvv
  *
  * Purpose:	Reads some data vectors from a dataset into a buffer.
  *		The data is contiguous.	 The address is the start of the dataset,
@@ -855,13 +838,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_contig_readvv(const H5D_io_info_t *io_info,
+H5D__contig_readvv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_off_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_off_arr[])
 {
     ssize_t ret_value;          /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(io_info);
@@ -886,7 +869,7 @@ H5D_contig_readvv(const H5D_io_info_t *io_info,
         /* Call generic sequence operation routine */
         if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
                 mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-                H5D_contig_readvv_sieve_cb, &udata)) < 0)
+                H5D__contig_readvv_sieve_cb, &udata)) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized sieve buffer read")
     } /* end if */
     else {
@@ -901,19 +884,19 @@ H5D_contig_readvv(const H5D_io_info_t *io_info,
         /* Call generic sequence operation routine */
         if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
                 mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-                H5D_contig_readvv_cb, &udata)) < 0)
+                H5D__contig_readvv_cb, &udata)) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized read")
     } /* end else */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_readvv() */
+}   /* end H5D__contig_readvv() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_writevv_sieve_cb
+ * Function:	H5D__contig_writevv_sieve_cb
  *
- * Purpose:	Callback operator for H5D_contig_writevv() with sieve buffer.
+ * Purpose:	Callback operator for H5D__contig_writevv() with sieve buffer.
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -923,7 +906,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_writevv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
+H5D__contig_writevv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
     void *_udata)
 {
     H5D_contig_writevv_sieve_ud_t *udata = (H5D_contig_writevv_sieve_ud_t *)_udata; /* User data for H5V_opvv() operator */
@@ -939,7 +922,7 @@ H5D_contig_writevv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
     hsize_t max_data;           /* Actual maximum size of data to cache */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Stash local copies of these values */
     if(dset_contig->sieve_buf != NULL) {
@@ -965,6 +948,7 @@ H5D_contig_writevv_sieve_cb(hsize_t dst_off, hsize_t src_off, size_t len,
             /* Allocate room for the data sieve buffer */
             if(NULL == (dset_contig->sieve_buf = H5FL_BLK_MALLOC(sieve_buf, dset_contig->sieve_buf_size)))
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "memory allocation failed")
+
 #ifdef H5_CLEAR_MEMORY
 if(dset_contig->sieve_size > len)
     HDmemset(dset_contig->sieve_buf + len, 0, (dset_contig->sieve_size - len));
@@ -1124,13 +1108,13 @@ if(dset_contig->sieve_size > len)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_writevv_sieve_cb() */
+}   /* end H5D__contig_writevv_sieve_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_writevv_cb
+ * Function:	H5D__contig_writevv_cb
  *
- * Purpose:	Callback operator for H5D_contig_writevv().
+ * Purpose:	Callback operator for H5D__contig_writevv().
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -1140,12 +1124,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_writevv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
+H5D__contig_writevv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
 {
     H5D_contig_writevv_ud_t *udata = (H5D_contig_writevv_ud_t *)_udata; /* User data for H5V_opvv() operator */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Write data */
     if(H5F_block_write(udata->file, H5FD_MEM_DRAW, (udata->dset_addr + dst_off), len, udata->dxpl_id, (udata->wbuf + src_off)) < 0)
@@ -1153,11 +1137,11 @@ H5D_contig_writevv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_writevv_cb() */
+}   /* end H5D__contig_writevv_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_writevv
+ * Function:	H5D__contig_writevv
  *
  * Purpose:	Writes some data vectors into a dataset from vectors into a
  *              buffer.  The address is the start of the dataset,
@@ -1175,13 +1159,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_contig_writevv(const H5D_io_info_t *io_info,
+H5D__contig_writevv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_off_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_off_arr[])
 {
     ssize_t ret_value;          /* Return value (Size of sequence in bytes) */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(io_info);
@@ -1206,7 +1190,7 @@ H5D_contig_writevv(const H5D_io_info_t *io_info,
         /* Call generic sequence operation routine */
         if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
                 mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-                H5D_contig_writevv_sieve_cb, &udata)) < 0)
+                H5D__contig_writevv_sieve_cb, &udata)) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized sieve buffer write")
     } /* end if */
     else {
@@ -1221,17 +1205,17 @@ H5D_contig_writevv(const H5D_io_info_t *io_info,
         /* Call generic sequence operation routine */
         if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
                 mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-                H5D_contig_writevv_cb, &udata)) < 0)
+                H5D__contig_writevv_cb, &udata)) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized read")
     } /* end else */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_contig_writevv() */
+}   /* end H5D__contig_writevv() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_flush
+ * Function:	H5D__contig_flush
  *
  * Purpose:	Writes all dirty data to disk.
  *
@@ -1243,26 +1227,26 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_contig_flush(H5D_t *dset, hid_t dxpl_id)
+H5D__contig_flush(H5D_t *dset, hid_t dxpl_id)
 {
     herr_t ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(dset);
 
     /* Flush any data in sieve buffer */
-    if(H5D_flush_sieve_buf(dset, dxpl_id) < 0)
+    if(H5D__flush_sieve_buf(dset, dxpl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTFLUSH, FAIL, "unable to flush sieve buffer")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_flush() */
+} /* end H5D__contig_flush() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_contig_copy
+ * Function:	H5D__contig_copy
  *
  * Purpose:	Copy contiguous storage raw data from SRC file to DST file.
  *
@@ -1274,7 +1258,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
+H5D__contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
     H5F_t *f_dst, H5O_storage_contig_t *storage_dst, H5T_t *dt_src,
     H5O_copy_t *cpy_info, hid_t dxpl_id)
 {
@@ -1306,7 +1290,7 @@ H5D_contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
     hbool_t     fix_ref = FALSE;        /* Flag to indicate that ref values should be fixed */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(f_src);
@@ -1316,7 +1300,7 @@ H5D_contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
     HDassert(dt_src);
 
     /* Allocate space for destination raw data */
-    if(H5D_contig_alloc(f_dst, dxpl_id, storage_dst) < 0)
+    if(H5D__contig_alloc(f_dst, dxpl_id, storage_dst) < 0)
         HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to allocate contiguous storage")
 
     /* Set up number of bytes to copy, and initial buffer size */
@@ -1523,5 +1507,5 @@ done:
         bkg = H5FL_BLK_FREE(type_conv, bkg);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_copy() */
+} /* end H5D__contig_copy() */
 
diff --git a/src/H5Ddbg.c b/src/H5Ddbg.c
index 9b27c9c..a7c6dc1 100644
--- a/src/H5Ddbg.c
+++ b/src/H5Ddbg.c
@@ -20,7 +20,7 @@
 #define H5D_PACKAGE		/*suppress error about including H5Dpkg	  */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5D_init_dbg_interface
+#define H5_INTERFACE_INIT_FUNC	H5D__init_dbg_interface
 
 
 /***********/
@@ -64,9 +64,9 @@
 
 /*--------------------------------------------------------------------------
 NAME
-   H5D_init_dbg_interface -- Initialize interface-specific information
+   H5D__init_dbg_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5D_init_dbg_interface()
+    herr_t H5D__init_dbg_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -75,12 +75,12 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5D_init_dbg_interface(void)
+H5D__init_dbg_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5D_init())
-} /* H5D_init_dbg_interface() */
+} /* H5D__init_dbg_interface() */
 
 
 /*-------------------------------------------------------------------------
@@ -113,7 +113,7 @@ H5Ddebug(hid_t dset_id)
 
     /* Print B-tree information */
     if(H5D_CHUNKED == dset->shared->layout.type)
-	(void)H5D_chunk_dump_index(dset, H5AC_dxpl_id, stdout);
+	(void)H5D__chunk_dump_index(dset, H5AC_dxpl_id, stdout);
     else if(H5D_CONTIGUOUS == dset->shared->layout.type)
 	HDfprintf(stdout, "    %-10s %a\n", "Address:", dset->shared->layout.storage.u.contig.addr);
 
diff --git a/src/H5Ddeprec.c b/src/H5Ddeprec.c
index 7e65149..1999550 100644
--- a/src/H5Ddeprec.c
+++ b/src/H5Ddeprec.c
@@ -34,7 +34,7 @@
 #define H5D_PACKAGE		/*suppress error about including H5Dpkg   */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5D_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5D__init_deprec_interface
 
 
 /***********/
@@ -66,7 +66,7 @@
 /********************/
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
-static herr_t H5D_extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id);
+static herr_t H5D__extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id);
 #endif /* H5_NO_DEPRECATED_SYMBOLS */
 
 
@@ -88,9 +88,9 @@ static herr_t H5D_extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id);
 
 /*--------------------------------------------------------------------------
 NAME
-   H5D_init_deprec_interface -- Initialize interface-specific information
+   H5D__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5D_init_deprec_interface()
+    herr_t H5D__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -99,12 +99,12 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5D_init_deprec_interface(void)
+H5D__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5D_init())
-} /* H5D_init_deprec_interface() */
+} /* H5D__init_deprec_interface() */
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 
@@ -293,7 +293,7 @@ H5Dextend(hid_t dset_id, const hsize_t size[])
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no size specified")
 
     /* Increase size */
-    if(H5D_extend(dset, size, H5AC_dxpl_id) < 0)
+    if(H5D__extend(dset, size, H5AC_dxpl_id) < 0)
 	HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to extend dataset")
 
 done:
@@ -302,7 +302,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_extend
+ * Function:	H5D__extend
  *
  * Purpose:	Increases the size of a dataset.
  *
@@ -314,7 +314,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id)
+H5D__extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id)
 {
     htri_t changed;                     /* Flag to indicate that the dataspace was successfully extended */
     H5S_t *space;                       /* Dataset's dataspace */
@@ -323,14 +323,14 @@ H5D_extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id)
     H5O_fill_t *fill;                   /* Dataset's fill value */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(dataset);
     HDassert(size);
 
     /* Check if the filters in the DCPL will need to encode, and if so, can they? */
-    if(H5D_check_filters(dataset) < 0)
+    if(H5D__check_filters(dataset) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't apply filters")
 
     /*
@@ -352,26 +352,26 @@ H5D_extend(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id)
     if(changed) {
         /* Update the index values for the cached chunks for this dataset */
         if(H5D_CHUNKED == dataset->shared->layout.type) {
-            if(H5D_chunk_set_info(dataset) < 0)
+            if(H5D__chunk_set_info(dataset) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "unable to update # of chunks")
-            if(H5D_chunk_update_cache(dataset, dxpl_id) < 0)
+            if(H5D__chunk_update_cache(dataset, dxpl_id) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to update cached chunk indices")
         } /* end if */
 
 	/* Allocate space for the new parts of the dataset, if appropriate */
         fill = &dataset->shared->dcpl_cache.fill;
         if(fill->alloc_time == H5D_ALLOC_TIME_EARLY)
-            if(H5D_alloc_storage(dataset, dxpl_id, H5D_ALLOC_EXTEND, FALSE,
+            if(H5D__alloc_storage(dataset, dxpl_id, H5D_ALLOC_EXTEND, FALSE,
                     curr_dims) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize dataset with fill value")
 
         /* Mark the dataspace as dirty, for later writing to the file */
-        if(H5D_mark(dataset, dxpl_id, H5D_MARK_SPACE) < 0)
+        if(H5D__mark(dataset, dxpl_id, H5D_MARK_SPACE) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "unable to mark dataspace as dirty")
     } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_extend() */
+} /* end H5D__extend() */
 #endif /* H5_NO_DEPRECATED_SYMBOLS */
 
diff --git a/src/H5Defl.c b/src/H5Defl.c
index 51e8813..c5cf8e2 100644
--- a/src/H5Defl.c
+++ b/src/H5Defl.c
@@ -63,21 +63,21 @@ typedef struct H5D_efl_writevv_ud_t {
 /********************/
 
 /* Layout operation callbacks */
-static herr_t H5D_efl_construct(H5F_t *f, H5D_t *dset);
-static herr_t H5D_efl_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+static herr_t H5D__efl_construct(H5F_t *f, H5D_t *dset);
+static herr_t H5D__efl_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *cm);
-static ssize_t H5D_efl_readvv(const H5D_io_info_t *io_info,
+static ssize_t H5D__efl_readvv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
-static ssize_t H5D_efl_writevv(const H5D_io_info_t *io_info,
+static ssize_t H5D__efl_writevv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
 
 /* Helper routines */
-static herr_t H5D_efl_read(const H5O_efl_t *efl, haddr_t addr, size_t size,
+static herr_t H5D__efl_read(const H5O_efl_t *efl, haddr_t addr, size_t size,
     uint8_t *buf);
-static herr_t H5D_efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size,
+static herr_t H5D__efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size,
     const uint8_t *buf);
 
 
@@ -87,18 +87,18 @@ static herr_t H5D_efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size,
 
 /* External File List (EFL) storage layout I/O ops */
 const H5D_layout_ops_t H5D_LOPS_EFL[1] = {{
-    H5D_efl_construct,
+    H5D__efl_construct,
     NULL,
-    H5D_efl_is_space_alloc,
-    H5D_efl_io_init,
-    H5D_contig_read,
-    H5D_contig_write,
+    H5D__efl_is_space_alloc,
+    H5D__efl_io_init,
+    H5D__contig_read,
+    H5D__contig_write,
 #ifdef H5_HAVE_PARALLEL
     NULL,
     NULL,
 #endif /* H5_HAVE_PARALLEL */
-    H5D_efl_readvv,
-    H5D_efl_writevv,
+    H5D__efl_readvv,
+    H5D__efl_writevv,
     NULL,
     NULL
 }};
@@ -111,7 +111,7 @@ const H5D_layout_ops_t H5D_LOPS_EFL[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_construct
+ * Function:	H5D__efl_construct
  *
  * Purpose:	Constructs new EFL layout information for dataset
  *
@@ -123,7 +123,7 @@ const H5D_layout_ops_t H5D_LOPS_EFL[1] = {{
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_efl_construct(H5F_t *f, H5D_t *dset)
+H5D__efl_construct(H5F_t *f, H5D_t *dset)
 {
     size_t dt_size;                     /* Size of datatype */
     hsize_t dim[H5O_LAYOUT_NDIMS];	/* Current size of data in elements */
@@ -136,7 +136,7 @@ H5D_efl_construct(H5F_t *f, H5D_t *dset)
     int i;                              /* Local index variable */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(f);
@@ -182,11 +182,11 @@ H5D_efl_construct(H5F_t *f, H5D_t *dset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_efl_construct() */
+} /* end H5D__efl_construct() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_is_space_alloc
+ * Function:	H5D__efl_is_space_alloc
  *
  * Purpose:	Query if space is allocated for layout
  *
@@ -198,20 +198,20 @@ done:
  *-------------------------------------------------------------------------
  */
 hbool_t
-H5D_efl_is_space_alloc(const H5O_storage_t UNUSED *storage)
+H5D__efl_is_space_alloc(const H5O_storage_t UNUSED *storage)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Sanity checks */
     HDassert(storage);
 
     /* EFL storage is currently always treated as allocated */
     FUNC_LEAVE_NOAPI(TRUE)
-} /* end H5D_efl_is_space_alloc() */
+} /* end H5D__efl_is_space_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_io_init
+ * Function:	H5D__efl_io_init
  *
  * Purpose:	Performs initialization before any sort of I/O on the raw data
  *
@@ -223,20 +223,20 @@ H5D_efl_is_space_alloc(const H5O_storage_t UNUSED *storage)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_efl_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
+H5D__efl_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t UNUSED *cm)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     HDmemcpy(&io_info->store->efl, &(io_info->dset->shared->dcpl_cache.efl), sizeof(H5O_efl_t));
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_efl_io_init() */
+} /* end H5D__efl_io_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_read
+ * Function:	H5D__efl_read
  *
  * Purpose:	Reads data from an external file list.  It is an error to
  *		read past the logical end of file, but reading past the end
@@ -254,7 +254,7 @@ H5D_efl_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_efl_read(const H5O_efl_t *efl, haddr_t addr, size_t size, uint8_t *buf)
+H5D__efl_read(const H5O_efl_t *efl, haddr_t addr, size_t size, uint8_t *buf)
 {
     int		fd = -1;
     size_t	to_read;
@@ -267,40 +267,40 @@ H5D_efl_read(const H5O_efl_t *efl, haddr_t addr, size_t size, uint8_t *buf)
     size_t      u;                      /* Local index variable */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
-    HDassert(efl && efl->nused>0);
+    HDassert(efl && efl->nused > 0);
     HDassert(H5F_addr_defined(addr));
     HDassert(size < SIZET_MAX);
     HDassert(buf || 0 == size);
 
     /* Find the first efl member from which to read */
     for (u=0, cur=0; u<efl->nused; u++) {
-	if (H5O_EFL_UNLIMITED==efl->slot[u].size || addr < cur+efl->slot[u].size) {
+	if(H5O_EFL_UNLIMITED == efl->slot[u].size || addr < cur + efl->slot[u].size) {
 	    skip = addr - cur;
 	    break;
-	}
+	} /* end if */
   	cur += efl->slot[u].size;
-    }
+    } /* end for */
 
     /* Read the data */
     while(size) {
         HDassert(buf);
-	if(u>=efl->nused)
+	if(u >= efl->nused)
 	    HGOTO_ERROR(H5E_EFL, H5E_OVERFLOW, FAIL, "read past logical end of file")
-	if(H5F_OVERFLOW_HSIZET2OFFT (efl->slot[u].offset + skip))
+	if(H5F_OVERFLOW_HSIZET2OFFT(efl->slot[u].offset + skip))
 	    HGOTO_ERROR(H5E_EFL, H5E_OVERFLOW, FAIL, "external file address overflowed")
 	if((fd = HDopen(efl->slot[u].name, O_RDONLY, 0)) < 0)
 	    HGOTO_ERROR(H5E_EFL, H5E_CANTOPENFILE, FAIL, "unable to open external raw data file")
 	if(HDlseek(fd, (off_t)(efl->slot[u].offset + skip), SEEK_SET) < 0)
 	    HGOTO_ERROR(H5E_EFL, H5E_SEEKERROR, FAIL, "unable to seek in external raw data file")
 #ifndef NDEBUG
-	tempto_read = MIN(efl->slot[u].size-skip,(hsize_t)size);
-        H5_CHECK_OVERFLOW(tempto_read,hsize_t,size_t);
+	tempto_read = MIN(efl->slot[u].size-skip, (hsize_t)size);
+        H5_CHECK_OVERFLOW(tempto_read, hsize_t, size_t);
 	to_read = (size_t)tempto_read;
 #else /* NDEBUG */
-	to_read = MIN((size_t)(efl->slot[u].size-skip), size);
+	to_read = MIN((size_t)(efl->slot[u].size - skip), size);
 #endif /* NDEBUG */
 	if((n = HDread(fd, buf, to_read)) < 0)
 	    HGOTO_ERROR(H5E_EFL, H5E_READERROR, FAIL, "read error in external raw data file")
@@ -312,18 +312,18 @@ H5D_efl_read(const H5O_efl_t *efl, haddr_t addr, size_t size, uint8_t *buf)
 	buf += to_read;
 	skip = 0;
 	u++;
-    }
+    } /* end while */
 
 done:
-    if (fd>=0)
-        HDclose (fd);
+    if(fd >= 0)
+        HDclose(fd);
 
     FUNC_LEAVE_NOAPI(ret_value)
-}
+} /* end H5D__efl_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_write
+ * Function:	H5D__efl_write
  *
  * Purpose:	Writes data to an external file list.  It is an error to
  *		write past the logical end of file, but writing past the end
@@ -341,7 +341,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size, const uint8_t *buf)
+H5D__efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size, const uint8_t *buf)
 {
     int		fd = -1;
     size_t	to_write;
@@ -353,7 +353,7 @@ H5D_efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size, const uint8_t *bu
     size_t	u;                      /* Local index variable */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(efl && efl->nused > 0);
@@ -377,7 +377,7 @@ H5D_efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size, const uint8_t *bu
 	    HGOTO_ERROR(H5E_EFL, H5E_OVERFLOW, FAIL, "write past logical end of file")
 	if(H5F_OVERFLOW_HSIZET2OFFT(efl->slot[u].offset + skip))
 	    HGOTO_ERROR(H5E_EFL, H5E_OVERFLOW, FAIL, "external file address overflowed")
-	if((fd = HDopen(efl->slot[u].name, O_CREAT|O_RDWR, 0666)) < 0) {
+	if((fd = HDopen(efl->slot[u].name, O_CREAT | O_RDWR, 0666)) < 0) {
 	    if(HDaccess(efl->slot[u].name, F_OK) < 0)
 		HGOTO_ERROR(H5E_EFL, H5E_CANTOPENFILE, FAIL, "external raw data file does not exist")
 	    else
@@ -392,7 +392,7 @@ H5D_efl_write(const H5O_efl_t *efl, haddr_t addr, size_t size, const uint8_t *bu
 #else /* NDEBUG */
 	to_write = MIN((size_t)(efl->slot[u].size - skip), size);
 #endif /* NDEBUG */
-	if((size_t)HDwrite(fd, buf, to_write)!=to_write)
+	if((size_t)HDwrite(fd, buf, to_write) != to_write)
 	    HGOTO_ERROR(H5E_EFL, H5E_READERROR, FAIL, "write error in external raw data file")
 	HDclose (fd);
 	fd = -1;
@@ -407,13 +407,13 @@ done:
         HDclose(fd);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_efl_write() */
+} /* end H5D__efl_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_readvv_cb
+ * Function:	H5D__efl_readvv_cb
  *
- * Purpose:	Callback operator for H5D_efl_readvv().
+ * Purpose:	Callback operator for H5D__efl_readvv().
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -423,24 +423,24 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_efl_readvv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
+H5D__efl_readvv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
 {
     H5D_efl_readvv_ud_t *udata = (H5D_efl_readvv_ud_t *)_udata; /* User data for H5V_opvv() operator */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Read data */
-    if(H5D_efl_read(udata->efl, dst_off, len, (udata->rbuf + src_off)) < 0)
+    if(H5D__efl_read(udata->efl, dst_off, len, (udata->rbuf + src_off)) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "EFL read failed")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_efl_readvv_cb() */
+} /* end H5D__efl_readvv_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_readvv
+ * Function:	H5D__efl_readvv
  *
  * Purpose:	Reads data from an external file list.  It is an error to
  *		read past the logical end of file, but reading past the end
@@ -455,14 +455,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_efl_readvv(const H5D_io_info_t *io_info,
+H5D__efl_readvv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_off_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_off_arr[])
 {
     H5D_efl_readvv_ud_t udata;  /* User data for H5V_opvv() operator */
     ssize_t ret_value;          /* Return value (Total size of sequence in bytes) */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(io_info);
@@ -482,18 +482,18 @@ H5D_efl_readvv(const H5D_io_info_t *io_info,
     /* Call generic sequence operation routine */
     if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
             mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-            H5D_efl_readvv_cb, &udata)) < 0)
+            H5D__efl_readvv_cb, &udata)) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized EFL read")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_efl_readvv() */
+} /* end H5D__efl_readvv() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_writevv_cb
+ * Function:	H5D__efl_writevv_cb
  *
- * Purpose:	Callback operator for H5D_efl_writevv().
+ * Purpose:	Callback operator for H5D__efl_writevv().
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -503,24 +503,24 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_efl_writevv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
+H5D__efl_writevv_cb(hsize_t dst_off, hsize_t src_off, size_t len, void *_udata)
 {
     H5D_efl_writevv_ud_t *udata = (H5D_efl_writevv_ud_t *)_udata; /* User data for H5V_opvv() operator */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Write data */
-    if(H5D_efl_write(udata->efl, dst_off, len, (udata->wbuf + src_off)) < 0)
+    if(H5D__efl_write(udata->efl, dst_off, len, (udata->wbuf + src_off)) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "EFL write failed")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_efl_writevv_cb() */
+} /* end H5D__efl_writevv_cb() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_efl_writevv
+ * Function:	H5D__efl_writevv
  *
  * Purpose:	Writes data to an external file list.  It is an error to
  *		write past the logical end of file, but writing past the end
@@ -535,14 +535,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static ssize_t
-H5D_efl_writevv(const H5D_io_info_t *io_info,
+H5D__efl_writevv(const H5D_io_info_t *io_info,
     size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_off_arr[],
     size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_off_arr[])
 {
     H5D_efl_writevv_ud_t udata;  /* User data for H5V_opvv() operator */
     ssize_t ret_value;          /* Return value (Total size of sequence in bytes) */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(io_info);
@@ -562,15 +562,15 @@ H5D_efl_writevv(const H5D_io_info_t *io_info,
     /* Call generic sequence operation routine */
     if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
             mem_max_nseq, mem_curr_seq, mem_len_arr, mem_off_arr,
-            H5D_efl_writevv_cb, &udata)) < 0)
+            H5D__efl_writevv_cb, &udata)) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized EFL write")
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_efl_writevv() */
+} /* end H5D__efl_writevv() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_efl_bh_size
+ * Function:    H5D__efl_bh_info
  *
  * Purpose:     Retrieve the amount of heap storage used for External File
  *		List message
@@ -583,11 +583,11 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_efl_bh_info(H5F_t *f, hid_t dxpl_id, H5O_efl_t *efl, hsize_t *heap_size)
+H5D__efl_bh_info(H5F_t *f, hid_t dxpl_id, H5O_efl_t *efl, hsize_t *heap_size)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(f);
@@ -601,4 +601,4 @@ H5D_efl_bh_info(H5F_t *f, hid_t dxpl_id, H5O_efl_t *efl, hsize_t *heap_size)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_bh_info() */
+} /* end H5D__efl_bh_info() */
diff --git a/src/H5Dfill.c b/src/H5Dfill.c
index c0a9766..2edb363 100644
--- a/src/H5Dfill.c
+++ b/src/H5Dfill.c
@@ -61,6 +61,8 @@
 /* Local Prototypes */
 /********************/
 
+static herr_t H5D__fill_release(H5D_fill_buf_info_t *fb_info);
+
 
 /*********************/
 /* Package Variables */
@@ -131,7 +133,7 @@ H5Dfill(const void *fill, hid_t fill_type_id, void *buf, hid_t buf_type_id, hid_
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a datatype")
 
     /* Fill the selection in the memory buffer */
-    if(H5D_fill(fill, fill_type, buf, buf_type, space, H5AC_dxpl_id) < 0)
+    if(H5D__fill(fill, fill_type, buf, buf_type, space, H5AC_dxpl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTENCODE, FAIL, "filling selection failed")
 
 done:
@@ -141,11 +143,11 @@ done:
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_fill
+    H5D__fill
  PURPOSE
     Fill a selection in memory with a value (internal version)
  USAGE
-    herr_t H5D_fill(fill, fill_type, buf, buf_type, space)
+    herr_t H5D__fill(fill, fill_type, buf, buf_type, space)
         const void *fill;       IN: Pointer to fill value to use
         H5T_t *fill_type;       IN: Datatype of the fill value
         void *buf;              IN/OUT: Memory buffer to fill selection within
@@ -168,7 +170,7 @@ done:
     on each element so that each of them has a copy of the VL data.
 --------------------------------------------------------------------------*/
 herr_t
-H5D_fill(const void *fill, const H5T_t *fill_type, void *buf,
+H5D__fill(const void *fill, const H5T_t *fill_type, void *buf,
     const H5T_t *buf_type, const H5S_t *space, hid_t dxpl_id)
 {
     H5WB_t  *elem_wb = NULL;    /* Wrapped buffer for element data */
@@ -181,7 +183,7 @@ H5D_fill(const void *fill, const H5T_t *fill_type, void *buf,
     size_t dst_type_size;       /* Size of destination type*/
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(fill_type);
@@ -267,7 +269,7 @@ H5D_fill(const void *fill, const H5T_t *fill_type, void *buf,
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "data type conversion failed")
 
             /* Fill the DXPL cache values for later use */
-            if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+            if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
             /* Create a selection iterator for scattering the elements to memory buffer */
@@ -275,7 +277,7 @@ H5D_fill(const void *fill, const H5T_t *fill_type, void *buf,
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize memory selection information")
 
             /* Scatter the data into memory */
-            if(H5D_scatter_mem(tmp_buf, space, &mem_iter, (size_t)nelmts, dxpl_cache, buf/*out*/) < 0) {
+            if(H5D__scatter_mem(tmp_buf, space, &mem_iter, (size_t)nelmts, dxpl_cache, buf/*out*/) < 0) {
                 H5S_SELECT_ITER_RELEASE(&mem_iter);
                 HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "scatter failed")
             } /* end if */
@@ -346,11 +348,11 @@ done:
         bkg_buf = H5FL_BLK_FREE(type_conv, bkg_buf);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_fill() */
+} /* H5D__fill() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_fill_init
+ * Function:	H5D__fill_init
  *
  * Purpose:	Initialize buffer filling operation
  *
@@ -362,7 +364,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
+H5D__fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
     H5MM_allocate_t alloc_func, void *alloc_info,
     H5MM_free_t free_func, void *free_info,
     const H5O_fill_t *fill, const H5T_t *dset_type, hid_t dset_type_id,
@@ -370,7 +372,7 @@ H5D_fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
 {
     herr_t	ret_value = SUCCEED;	/* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(fb_info);
@@ -541,15 +543,15 @@ H5D_fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
 done:
     /* Cleanup on error */
     if(ret_value < 0)
-        if(H5D_fill_term(fb_info) < 0)
+        if(H5D__fill_term(fb_info) < 0)
             HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "Can't release fill buffer info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_fill_init() */
+} /* end H5D__fill_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_fill_refill_vl
+ * Function:	H5D__fill_refill_vl
  *
  * Purpose:	Refill fill value buffer that contains VL-datatype fill values
  *
@@ -561,12 +563,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts, hid_t dxpl_id)
+H5D__fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts, hid_t dxpl_id)
 {
     herr_t	ret_value = SUCCEED;	/* Return value */
     void * buf = NULL;              /* Temporary fill buffer */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(fb_info);
@@ -626,11 +628,11 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_fill_refill_vl() */
+} /* end H5D__fill_refill_vl() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_fill_release
+ * Function:	H5D__fill_release
  *
  * Purpose:	Release fill value buffer
  *
@@ -641,10 +643,10 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-herr_t
-H5D_fill_release(H5D_fill_buf_info_t *fb_info)
+static herr_t
+H5D__fill_release(H5D_fill_buf_info_t *fb_info)
 {
-    FUNC_ENTER_NOAPI_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Check args */
     HDassert(fb_info);
@@ -664,11 +666,11 @@ H5D_fill_release(H5D_fill_buf_info_t *fb_info)
     } /* end if */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_fill_release() */
+} /* end H5D__fill_release() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_fill_term
+ * Function:	H5D__fill_term
  *
  * Purpose:	Release fill value buffer info
  *
@@ -680,15 +682,15 @@ H5D_fill_release(H5D_fill_buf_info_t *fb_info)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_fill_term(H5D_fill_buf_info_t *fb_info)
+H5D__fill_term(H5D_fill_buf_info_t *fb_info)
 {
-    FUNC_ENTER_NOAPI_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Check args */
     HDassert(fb_info);
 
     /* Free the buffer for fill values */
-    H5D_fill_release(fb_info);
+    H5D__fill_release(fb_info);
 
     /* Free other resources for vlen fill values */
     if(fb_info->has_vlen_fill_type) {
@@ -701,5 +703,5 @@ H5D_fill_term(H5D_fill_buf_info_t *fb_info)
     } /* end if */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_fill_term() */
+} /* end H5D__fill_term() */
 
diff --git a/src/H5Dint.c b/src/H5Dint.c
index a4499b2..7e5f3c1 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -20,7 +20,7 @@
 #define H5D_PACKAGE		/*suppress error about including H5Dpkg	  */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5D_init_interface
+#define H5_INTERFACE_INIT_FUNC	H5D__init_interface
 
 
 /***********/
@@ -57,17 +57,17 @@ typedef struct {
 /********************/
 
 /* General stuff */
-static herr_t H5D_init_storage(H5D_t *dataset, hbool_t full_overwrite,
-    hsize_t old_dim[], hid_t dxpl_id);
-static herr_t H5D_get_dxpl_cache_real(hid_t dxpl_id, H5D_dxpl_cache_t *cache);
-static H5D_shared_t *H5D_new(hid_t dcpl_id, hbool_t creating,
+static herr_t H5D__get_dxpl_cache_real(hid_t dxpl_id, H5D_dxpl_cache_t *cache);
+static H5D_shared_t *H5D__new(hid_t dcpl_id, hbool_t creating,
     hbool_t vl_type);
-static herr_t H5D_init_type(H5F_t *file, const H5D_t *dset, hid_t type_id,
+static herr_t H5D__init_type(H5F_t *file, const H5D_t *dset, hid_t type_id,
     const H5T_t *type);
-static herr_t H5D_init_space(H5F_t *file, const H5D_t *dset, const H5S_t *space);
-static herr_t H5D_update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset,
+static herr_t H5D__init_space(H5F_t *file, const H5D_t *dset, const H5S_t *space);
+static herr_t H5D__update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset,
     hid_t dapl_id);
-static herr_t H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id);
+static herr_t H5D__open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id);
+static herr_t H5D__init_storage(H5D_t *dataset, hbool_t full_overwrite,
+    hsize_t old_dim[], hid_t dxpl_id);
 
 
 /*********************/
@@ -106,6 +106,15 @@ H5FL_EXTERN(H5D_chunk_info_t);
 /* Define a static "default" dataset structure to use to initialize new datasets */
 static H5D_shared_t H5D_def_dset;
 
+/* Dataset ID class */
+static const H5I_class_t H5I_DATASET_CLS[1] = {{
+    H5I_DATASET,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5D_close       /* Callback routine for closing objects of this class */
+}};
+
 
 
 /*-------------------------------------------------------------------------
@@ -125,7 +134,7 @@ static H5D_shared_t H5D_def_dset;
 herr_t
 H5D_init(void)
 {
-    herr_t ret_value=SUCCEED;   /* Return value */
+    herr_t ret_value = SUCCEED;   /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
     /* FUNC_ENTER() does all the work */
@@ -137,9 +146,9 @@ done:
 
 /*--------------------------------------------------------------------------
 NAME
-   H5D_init_interface -- Initialize interface-specific information
+   H5D__init_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5D_init_interface()
+    herr_t H5D__init_interface()
 
 RETURNS
     Non-negative on success/Negative on failure
@@ -151,15 +160,15 @@ NOTES
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5D_init_interface(void)
+H5D__init_interface(void)
 {
     H5P_genplist_t *def_dcpl;               /* Default Dataset Creation Property list */
     herr_t          ret_value                = SUCCEED;   /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Initialize the atom group for the dataset IDs */
-    if(H5I_register_type(H5I_DATASET, (size_t)H5I_DATASETID_HASHSIZE, H5D_RESERVED_ATOMS, (H5I_free_t)H5D_close)<H5I_FILE)
+    if(H5I_register_type(H5I_DATASET_CLS) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
     /* Reset the "default dataset" information */
@@ -187,12 +196,12 @@ H5D_init_interface(void)
     HDmemset(&H5D_def_dxpl_cache, 0, sizeof(H5D_dxpl_cache_t));
 
     /* Get the default DXPL cache information */
-    if(H5D_get_dxpl_cache_real(H5P_DATASET_XFER_DEFAULT, &H5D_def_dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache_real(H5P_DATASET_XFER_DEFAULT, &H5D_def_dxpl_cache) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve default DXPL info")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_init_interface() */
+} /* end H5D__init_interface() */
 
 
 /*-------------------------------------------------------------------------
@@ -254,11 +263,11 @@ H5D_term_interface(void)
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_get_dxpl_cache_real
+    H5D__get_dxpl_cache_real
  PURPOSE
     Get all the values for the DXPL cache.
  USAGE
-    herr_t H5D_get_dxpl_cache_real(dxpl_id, cache)
+    herr_t H5D__get_dxpl_cache_real(dxpl_id, cache)
         hid_t dxpl_id;          IN: DXPL to query
         H5D_dxpl_cache_t *cache;IN/OUT: DXPL cache to fill with values
  RETURNS
@@ -272,12 +281,12 @@ H5D_term_interface(void)
  REVISION LOG
 --------------------------------------------------------------------------*/
 static herr_t
-H5D_get_dxpl_cache_real(hid_t dxpl_id, H5D_dxpl_cache_t *cache)
+H5D__get_dxpl_cache_real(hid_t dxpl_id, H5D_dxpl_cache_t *cache)
 {
     H5P_genplist_t *dx_plist;   /* Data transfer property list */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(cache);
@@ -332,16 +341,16 @@ H5D_get_dxpl_cache_real(hid_t dxpl_id, H5D_dxpl_cache_t *cache)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_get_dxpl_cache_real() */
+}   /* end H5D__get_dxpl_cache_real() */
 
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_get_dxpl_cache
+    H5D__get_dxpl_cache
  PURPOSE
     Get all the values for the DXPL cache.
  USAGE
-    herr_t H5D_get_dxpl_cache(dxpl_id, cache)
+    herr_t H5D__get_dxpl_cache(dxpl_id, cache)
         hid_t dxpl_id;          IN: DXPL to query
         H5D_dxpl_cache_t *cache;IN/OUT: DXPL cache to fill with values
  RETURNS
@@ -358,11 +367,11 @@ done:
  REVISION LOG
 --------------------------------------------------------------------------*/
 herr_t
-H5D_get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache)
+H5D__get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache)
 {
     herr_t ret_value=SUCCEED;   /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     assert(cache);
@@ -371,12 +380,12 @@ H5D_get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache)
     if(dxpl_id==H5P_DATASET_XFER_DEFAULT)
         *cache=&H5D_def_dxpl_cache;
     else
-        if(H5D_get_dxpl_cache_real(dxpl_id,*cache) < 0)
+        if(H5D__get_dxpl_cache_real(dxpl_id,*cache) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "Can't retrieve DXPL values")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_get_dxpl_cache() */
+}   /* H5D__get_dxpl_cache() */
 
 
 /*-------------------------------------------------------------------------
@@ -439,7 +448,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_get_space_status
+ * Function:    H5D__get_space_status
  *
  * Purpose:     Returns the status of data space allocation.
  *
@@ -453,7 +462,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id)
+H5D__get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id)
 {
     H5S_t      *space;              /* Dataset's dataspace */
     hsize_t     space_allocated;    /* The number of bytes allocated for chunks */
@@ -463,7 +472,7 @@ H5D_get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id)
     hsize_t     full_size;          /* The number of bytes in the dataset when fully populated */
     herr_t      ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     HDassert(dset);
 
@@ -488,7 +497,8 @@ H5D_get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id)
         HGOTO_ERROR(H5E_DATASET, H5E_OVERFLOW, FAIL, "size of dataset's storage overflowed")
 
     /* Difficult to error check, since the error value is 0 and 0 is a valid value... :-/ */
-    space_allocated = H5D_get_storage_size(dset, dxpl_id);
+    if(H5D__get_storage_size(dset, dxpl_id, &space_allocated) < 0)
+        HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get size of dataset's storage")
 
     /* Decide on how much of the space is allocated */
     if(space_allocated == 0)
@@ -504,11 +514,11 @@ H5D_get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_get_space_status() */
+} /* end H5D__get_space_status() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_new
+ * Function:	H5D__new
  *
  * Purpose:	Creates a new, empty dataset structure
  *
@@ -522,13 +532,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5D_shared_t *
-H5D_new(hid_t dcpl_id, hbool_t creating, hbool_t vl_type)
+H5D__new(hid_t dcpl_id, hbool_t creating, hbool_t vl_type)
 {
     H5D_shared_t    *new_dset = NULL;   /* New dataset object */
     H5P_genplist_t  *plist;             /* Property list created */
     H5D_shared_t    *ret_value;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Allocate new shared dataset structure */
     if(NULL == (new_dset = H5FL_MALLOC(H5D_shared_t)))
@@ -565,11 +575,11 @@ done:
         } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_new() */
+} /* end H5D__new() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_init_type
+ * Function:	H5D__init_type
  *
  * Purpose:	Copy a datatype for a dataset's use, performing all the
  *              necessary adjustments, etc.
@@ -583,14 +593,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_init_type(H5F_t *file, const H5D_t *dset, hid_t type_id, const H5T_t *type)
+H5D__init_type(H5F_t *file, const H5D_t *dset, hid_t type_id, const H5T_t *type)
 {
     htri_t relocatable;                 /* Flag whether the type is relocatable */
     htri_t immutable;                   /* Flag whether the type is immutable */
     hbool_t use_latest_format;          /* Flag indicating the newest file format should be used */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checking */
     HDassert(file);
@@ -639,11 +649,11 @@ H5D_init_type(H5F_t *file, const H5D_t *dset, hid_t type_id, const H5T_t *type)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_init_type() */
+} /* end H5D__init_type() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_init_space
+ * Function:	H5D__init_space
  *
  * Purpose:	Copy a dataspace for a dataset's use, performing all the
  *              necessary adjustments, etc.
@@ -657,12 +667,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_init_space(H5F_t *file, const H5D_t *dset, const H5S_t *space)
+H5D__init_space(H5F_t *file, const H5D_t *dset, const H5S_t *space)
 {
     hbool_t use_latest_format;          /* Flag indicating the newest file format should be used */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checking */
     HDassert(file);
@@ -687,11 +697,11 @@ H5D_init_space(H5F_t *file, const H5D_t *dset, const H5S_t *space)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_init_space() */
+} /* end H5D__init_space() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_update_oh_info
+ * Function:	H5D__update_oh_info
  *
  * Purpose:	Create and fill object header for dataset
  *
@@ -704,7 +714,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset, hid_t dapl_id)
+H5D__update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset, hid_t dapl_id)
 {
     H5O_t              *oh = NULL;      /* Pointer to dataset's object header */
     size_t              ohdr_size = H5D_MINHDR_SIZE;    /* Size of dataset's object header */
@@ -718,7 +728,7 @@ H5D_update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset, hid_t dapl_id)
     hbool_t             layout_init = FALSE;    /* Flag to indicate that chunk information was initialized */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checking */
     HDassert(file);
@@ -826,7 +836,7 @@ H5D_update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset, hid_t dapl_id)
     } /* end if */
 
     /* Update/create the layout (and I/O pipeline & EFL) messages */
-    if(H5D_layout_oh_create(file, dxpl_id, oh, dset, dapl_id) < 0)
+    if(H5D__layout_oh_create(file, dxpl_id, oh, dset, dapl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to update layout/pline/efl header message")
 
     /* Indicate that the layout information was initialized */
@@ -872,17 +882,17 @@ done:
     /* Error cleanup */
     if(ret_value < 0) {
         if(dset->shared->layout.type == H5D_CHUNKED && layout_init) {
-            if(H5D_chunk_dest(file, dxpl_id, dset) < 0)
+            if(H5D__chunk_dest(file, dxpl_id, dset) < 0)
                 HDONE_ERROR(H5E_DATASET, H5E_CANTRELEASE, FAIL, "unable to destroy chunk cache")
         } /* end if */
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_update_oh_info() */
+} /* end H5D__update_oh_info() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_create
+ * Function:	H5D__create
  *
  * Purpose:	Creates a new dataset with name NAME in file F and associates
  *		with it a datatype TYPE for each element as stored in the
@@ -902,7 +912,7 @@ done:
  *-------------------------------------------------------------------------
  */
 H5D_t *
-H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
+H5D__create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
     hid_t dapl_id, hid_t dxpl_id)
 {
     const H5T_t         *type;                  /* Datatype for dataset */
@@ -913,7 +923,7 @@ H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
     H5G_loc_t           dset_loc;               /* Dataset location */
     H5D_t		*ret_value;             /* Return value */
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(file);
@@ -948,15 +958,15 @@ H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
     H5G_loc_reset(&dset_loc);
 
     /* Initialize the shared dataset space */
-    if(NULL == (new_dset->shared = H5D_new(dcpl_id, TRUE, has_vl_type)))
+    if(NULL == (new_dset->shared = H5D__new(dcpl_id, TRUE, has_vl_type)))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
     /* Copy & initialize datatype for dataset */
-    if(H5D_init_type(file, new_dset, type_id, type) < 0)
+    if(H5D__init_type(file, new_dset, type_id, type) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "can't copy datatype")
 
     /* Copy & initialize dataspace for dataset */
-    if(H5D_init_space(file, new_dset, space) < 0)
+    if(H5D__init_space(file, new_dset, space) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "can't copy dataspace")
 
     /* Set the dataset's checked_filters flag to enable writing */
@@ -1026,7 +1036,7 @@ H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
         new_dset->shared->dcpl_cache.fill.alloc_time = H5D_ALLOC_TIME_EARLY;
 
     /* Set the dataset's I/O operations */
-    if(H5D_layout_set_io_ops(new_dset) < 0)
+    if(H5D__layout_set_io_ops(new_dset) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "unable to initialize I/O operations")
 
     /* Create the layout information for the new dataset */
@@ -1034,7 +1044,7 @@ H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "unable to construct layout information")
 
     /* Update the dataset's object header info. */
-    if(H5D_update_oh_info(file, dxpl_id, new_dset, dapl_id) < 0)
+    if(H5D__update_oh_info(file, dxpl_id, new_dset, dapl_id) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "can't update the metadata cache")
 
     /* Indicate that the layout information was initialized */
@@ -1054,7 +1064,7 @@ done:
     if(!ret_value && new_dset && new_dset->shared) {
         if(new_dset->shared) {
             if(new_dset->shared->layout.type == H5D_CHUNKED && layout_init) {
-                if(H5D_chunk_dest(file, dxpl_id, new_dset) < 0)
+                if(H5D__chunk_dest(file, dxpl_id, new_dset) < 0)
                     HDONE_ERROR(H5E_DATASET, H5E_CANTRELEASE, NULL, "unable to destroy chunk cache")
             } /* end if */
             if(new_dset->shared->space && H5S_close(new_dset->shared->space) < 0)
@@ -1080,7 +1090,7 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_create() */
+} /* end H5D__create() */
 
 
 /*
@@ -1128,7 +1138,7 @@ H5D_open(const H5G_loc_t *loc, hid_t dapl_id, hid_t dxpl_id)
         H5E_clear_stack(NULL);
 
         /* Open the dataset object */
-        if(H5D_open_oid(dataset, dapl_id, dxpl_id) < 0)
+        if(H5D__open_oid(dataset, dapl_id, dxpl_id) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_NOTFOUND, NULL, "not found")
 
         /* Add the dataset to the list of opened objects in the file */
@@ -1184,7 +1194,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_open_oid
+ * Function:	H5D__open_oid
  *
  * Purpose:	Opens a dataset for access.
  *
@@ -1196,7 +1206,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id)
+H5D__open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id)
 {
     H5P_genplist_t *plist;              /* Property list */
     H5O_fill_t *fill_prop;              /* Pointer to dataset's fill value info */
@@ -1204,13 +1214,13 @@ H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id)
     htri_t msg_exists;                  /* Whether a particular type of message exists */
     herr_t ret_value = SUCCEED;		/* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(dataset);
 
     /* (Set the 'vl_type' parameter to FALSE since it doesn't matter from here) */
-    if(NULL == (dataset->shared = H5D_new(H5P_DATASET_CREATE_DEFAULT, FALSE, FALSE)))
+    if(NULL == (dataset->shared = H5D__new(H5P_DATASET_CREATE_DEFAULT, FALSE, FALSE)))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
 
     /* Open the dataset object */
@@ -1236,7 +1246,7 @@ H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get dataset creation property list")
 
     /* Get the layout/pline/efl message information */
-    if(H5D_layout_oh_read(dataset, dxpl_id, dapl_id, plist) < 0)
+    if(H5D__layout_oh_read(dataset, dxpl_id, dapl_id, plist) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get layout/pline/efl info")
 
     /* Point at dataset's copy, to cache it for later */
@@ -1305,7 +1315,7 @@ H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id)
     if((H5F_INTENT(dataset->oloc.file) & H5F_ACC_RDWR)
             && !(*dataset->shared->layout.ops->is_space_alloc)(&dataset->shared->layout.storage)
             && IS_H5FD_MPI(dataset->oloc.file)) {
-        if(H5D_alloc_storage(dataset, dxpl_id, H5D_ALLOC_OPEN, FALSE, NULL) < 0)
+        if(H5D__alloc_storage(dataset, dxpl_id, H5D_ALLOC_OPEN, FALSE, NULL) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize file storage")
     } /* end if */
 
@@ -1330,7 +1340,7 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_open_oid() */
+} /* end H5D__open_oid() */
 
 
 /*-------------------------------------------------------------------------
@@ -1361,13 +1371,13 @@ H5D_close(H5D_t *dataset)
 
     /* Dump debugging info */
 #ifdef H5D_CHUNK_DEBUG
-    H5D_chunk_stats(dataset, FALSE);
+    H5D__chunk_stats(dataset, FALSE);
 #endif /* H5D_CHUNK_DEBUG */
 
     dataset->shared->fo_count--;
     if(dataset->shared->fo_count == 0) {
         /* Flush the dataset's information.  Continue to close even if it fails. */
-        if(H5D_flush_real(dataset, H5AC_dxpl_id) < 0)
+        if(H5D__flush_real(dataset, H5AC_dxpl_id) < 0)
             HDONE_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to flush cached dataset info")
 
         /* Free the data sieve buffer, if it's been allocated */
@@ -1404,7 +1414,7 @@ H5D_close(H5D_t *dataset)
 
                 /* Flush and destroy chunks in the cache. Continue to close even if 
                  * it fails. */
-                if(H5D_chunk_dest(dataset->oloc.file, H5AC_dxpl_id, dataset) < 0)
+                if(H5D__chunk_dest(dataset->oloc.file, H5AC_dxpl_id, dataset) < 0)
                     HDONE_ERROR(H5E_DATASET, H5E_CANTRELEASE, FAIL, "unable to destroy chunk cache")
                 break;
 
@@ -1557,7 +1567,7 @@ H5D_typeof(const H5D_t *dset)
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_alloc_storage
+ * Function:	H5D__alloc_storage
  *
  * Purpose:	Allocate storage for the raw data of a dataset.
  *
@@ -1569,7 +1579,7 @@ H5D_typeof(const H5D_t *dset)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_alloc,
+H5D__alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_alloc,
     hbool_t full_overwrite, hsize_t old_dim[])
 {
     H5F_t *f = dset->oloc.file;         /* The dataset's file pointer */
@@ -1578,7 +1588,7 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al
     hbool_t addr_set = FALSE;           /* Flag to indicate that the dataset's storage address was set */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(dset);
@@ -1598,7 +1608,7 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al
                     /* Check if we have a zero-sized dataset */
                     if(layout->storage.u.contig.size > 0) {
                         /* Reserve space in the file for the entire array */
-                        if(H5D_contig_alloc(f, dxpl_id, &layout->storage.u.contig/*out*/) < 0)
+                        if(H5D__contig_alloc(f, dxpl_id, &layout->storage.u.contig/*out*/) < 0)
                             HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to initialize contiguous storage")
 
                         /* Indicate that we should initialize storage space */
@@ -1615,7 +1625,7 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al
             case H5D_CHUNKED:
                 if(!(*dset->shared->layout.ops->is_space_alloc)(&dset->shared->layout.storage)) {
                     /* Create the root of the B-tree that describes chunked storage */
-                    if(H5D_chunk_create(dset /*in,out*/, dxpl_id) < 0)
+                    if(H5D__chunk_create(dset /*in,out*/, dxpl_id) < 0)
                         HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to initialize chunked storage")
 
                     /* Indicate that we set the storage addr */
@@ -1679,7 +1689,7 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al
                  * this is icky. -QAK
                  */
                 if(!(dset->shared->dcpl_cache.fill.alloc_time == H5D_ALLOC_TIME_INCR && time_alloc == H5D_ALLOC_WRITE))
-                    if(H5D_init_storage(dset, full_overwrite, old_dim, dxpl_id) < 0)
+                    if(H5D__init_storage(dset, full_overwrite, old_dim, dxpl_id) < 0)
                         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize dataset with fill value")
             } /* end if */
             else {
@@ -1693,7 +1703,7 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al
                  * the fill value _is_ set, do that now */
                 if(dset->shared->dcpl_cache.fill.fill_time == H5D_FILL_TIME_ALLOC ||
                         (dset->shared->dcpl_cache.fill.fill_time == H5D_FILL_TIME_IFSET && fill_status == H5D_FILL_VALUE_USER_DEFINED)) {
-                    if(H5D_init_storage(dset, full_overwrite, old_dim, dxpl_id) < 0)
+                    if(H5D__init_storage(dset, full_overwrite, old_dim, dxpl_id) < 0)
                         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize dataset with fill value")
                 } /* end if */
             } /* end else */
@@ -1708,17 +1718,17 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al
          */
         if(time_alloc != H5D_ALLOC_CREATE && addr_set)
             /* Mark the layout as dirty, for later writing to the file */
-            if(H5D_mark(dset, dxpl_id, H5D_MARK_LAYOUT) < 0)
+            if(H5D__mark(dset, dxpl_id, H5D_MARK_LAYOUT) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "unable to mark dataspace as dirty")
     } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_alloc_storage() */
+} /* end H5D__alloc_storage() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_init_storage
+ * Function:	H5D__init_storage
  *
  * Purpose:	Initialize the data for a new dataset.  If a selection is
  *		defined for SPACE then initialize only that part of the
@@ -1732,12 +1742,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
+H5D__init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
     hid_t dxpl_id)
 {
     herr_t		ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(dset);
 
@@ -1746,7 +1756,7 @@ H5D_init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
             /* If we will be immediately overwriting the values, don't bother to clear them */
             if(!full_overwrite) {
                 /* Fill the compact dataset storage */
-                if(H5D_compact_fill(dset, dxpl_id) < 0)
+                if(H5D__compact_fill(dset, dxpl_id) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize compact dataset storage")
             } /* end if */
             break;
@@ -1755,7 +1765,7 @@ H5D_init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
             /* Don't write default fill values to external files */
             /* If we will be immediately overwriting the values, don't bother to clear them */
             if((dset->shared->dcpl_cache.efl.nused == 0 || dset->shared->dcpl_cache.fill.buf) && !full_overwrite)
-                if(H5D_contig_fill(dset, dxpl_id) < 0)
+                if(H5D__contig_fill(dset, dxpl_id) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to allocate all chunks of dataset")
             break;
 
@@ -1771,7 +1781,7 @@ H5D_init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
                 if(old_dim == NULL)
                     old_dim = zero_dim;
 
-                if(H5D_chunk_allocate(dset, dxpl_id, full_overwrite, old_dim) < 0)
+                if(H5D__chunk_allocate(dset, dxpl_id, full_overwrite, old_dim) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to allocate all chunks of dataset")
                 break;
             } /* end block */
@@ -1787,68 +1797,66 @@ H5D_init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_init_storage() */
+} /* end H5D__init_storage() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_get_storage_size
+ * Function:	H5D__get_storage_size
  *
  * Purpose:	Determines how much space has been reserved to store the raw
  *		data of a dataset.
  *
- * Return:	Success:	Number of bytes reserved to hold raw data.
- *
- *		Failure:	0
+ * Return:	Non-negative on success, negative on failure
  *
  * Programmer:	Robb Matzke
  *              Wednesday, April 21, 1999
  *
  *-------------------------------------------------------------------------
  */
-hsize_t
-H5D_get_storage_size(H5D_t *dset, hid_t dxpl_id)
+herr_t
+H5D__get_storage_size(H5D_t *dset, hid_t dxpl_id, hsize_t *storage_size)
 {
-    hsize_t	ret_value;
+    herr_t	ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     switch(dset->shared->layout.type) {
         case H5D_CHUNKED:
             if((*dset->shared->layout.ops->is_space_alloc)(&dset->shared->layout.storage)) {
-                if(H5D_chunk_allocated(dset, dxpl_id, &ret_value) < 0)
-                    HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, 0, "can't retrieve chunked dataset allocated size")
+                if(H5D__chunk_allocated(dset, dxpl_id, storage_size) < 0)
+                    HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't retrieve chunked dataset allocated size")
             } /* end if */
             else
-                ret_value = 0;
+                *storage_size = 0;
             break;
 
         case H5D_CONTIGUOUS:
             /* Datasets which are not allocated yet are using no space on disk */
             if((*dset->shared->layout.ops->is_space_alloc)(&dset->shared->layout.storage))
-                ret_value = dset->shared->layout.storage.u.contig.size;
+                *storage_size = dset->shared->layout.storage.u.contig.size;
             else
-                ret_value = 0;
+                *storage_size = 0;
             break;
 
         case H5D_COMPACT:
-            ret_value = dset->shared->layout.storage.u.compact.size;
+            *storage_size = dset->shared->layout.storage.u.compact.size;
             break;
 
         case H5D_LAYOUT_ERROR:
         case H5D_NLAYOUTS:
         default:
-            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a dataset type")
+            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset type")
     } /*lint !e788 All appropriate cases are covered */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_get_storage_size() */
+} /* end H5D__get_storage_size() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_get_offset
+ * Function:	H5D__get_offset
  *
- * Purpose:	Private function for H5D_get_offset.  Returns the address
+ * Purpose:	Private function for H5D__get_offset.  Returns the address
  *              of dataset in file.
  *
  * Return:	Success:        the address of dataset
@@ -1861,11 +1869,11 @@ done:
  *-------------------------------------------------------------------------
  */
 haddr_t
-H5D_get_offset(const H5D_t *dset)
+H5D__get_offset(const H5D_t *dset)
 {
     haddr_t	ret_value = HADDR_UNDEF;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     HDassert(dset);
 
@@ -1890,11 +1898,11 @@ H5D_get_offset(const H5D_t *dset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_get_offset() */
+} /* end H5D__get_offset() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_iterate
+ * Function:	H5D__iterate
  *
  * Purpose:	Internal version of H5Diterate()
  *
@@ -1908,12 +1916,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t op,
+H5D__iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t op,
         void *operator_data)
 {
     herr_t ret_value;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Check args */
     HDassert(buf);
@@ -1925,7 +1933,7 @@ H5D_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t op,
     ret_value = H5S_select_iterate(buf, type_id, space, op, operator_data);
 
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5D_iterate() */
+}   /* end H5D__iterate() */
 
 
 /*-------------------------------------------------------------------------
@@ -1962,8 +1970,8 @@ H5D_vlen_reclaim(hid_t type_id, H5S_t *space, hid_t plist_id, void *buf)
     if(H5T_vlen_get_alloc_info(plist_id,&vl_alloc_info) < 0)
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTGET, FAIL, "unable to retrieve VL allocation info")
 
-    /* Call H5D_iterate with args, etc. */
-    ret_value = H5D_iterate(buf, type_id, space ,H5T_vlen_reclaim, vl_alloc_info);
+    /* Call H5D__iterate with args, etc. */
+    ret_value = H5D__iterate(buf, type_id, space ,H5T_vlen_reclaim, vl_alloc_info);
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1971,7 +1979,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_vlen_get_buf_size_alloc
+ * Function:	H5D__vlen_get_buf_size_alloc
  *
  * Purpose:	This routine makes certain there is enough space in the temporary
  *      buffer for the new data to read in.  All the VL data read in is actually
@@ -1986,12 +1994,12 @@ done:
  *-------------------------------------------------------------------------
  */
 void *
-H5D_vlen_get_buf_size_alloc(size_t size, void *info)
+H5D__vlen_get_buf_size_alloc(size_t size, void *info)
 {
     H5D_vlen_bufsize_t *vlen_bufsize = (H5D_vlen_bufsize_t *)info;
     void *ret_value;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Get a temporary pointer to space for the VL data */
     if((vlen_bufsize->vl_tbuf = H5FL_BLK_REALLOC(vlen_vl_buf, vlen_bufsize->vl_tbuf, size)) != NULL)
@@ -2001,11 +2009,11 @@ H5D_vlen_get_buf_size_alloc(size_t size, void *info)
     ret_value = vlen_bufsize->vl_tbuf;
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_vlen_get_buf_size_alloc() */
+} /* end H5D__vlen_get_buf_size_alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_vlen_get_buf_size
+ * Function:	H5D__vlen_get_buf_size
  *
  * Purpose:	This routine checks the number of bytes required to store a single
  *      element from a dataset in memory, creating a selection with just the
@@ -2031,13 +2039,13 @@ H5D_vlen_get_buf_size_alloc(size_t size, void *info)
  */
 /* ARGSUSED */
 herr_t
-H5D_vlen_get_buf_size(void UNUSED *elem, hid_t type_id, unsigned UNUSED ndim, const hsize_t *point, void *op_data)
+H5D__vlen_get_buf_size(void UNUSED *elem, hid_t type_id, unsigned UNUSED ndim, const hsize_t *point, void *op_data)
 {
     H5D_vlen_bufsize_t *vlen_bufsize = (H5D_vlen_bufsize_t *)op_data;
     H5T_t *dt;                          /* Datatype for operation */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     HDassert(op_data);
     HDassert(H5I_DATATYPE == H5I_get_type(type_id));
@@ -2060,11 +2068,11 @@ H5D_vlen_get_buf_size(void UNUSED *elem, hid_t type_id, unsigned UNUSED ndim, co
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_vlen_get_buf_size() */
+} /* end H5D__vlen_get_buf_size() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_check_filters
+ * Function:	H5D__check_filters
  *
  * Purpose:	Check if the filters have be initialized for the dataset
  *
@@ -2076,12 +2084,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_check_filters(H5D_t *dataset)
+H5D__check_filters(H5D_t *dataset)
 {
     H5O_fill_t *fill;                   /* Dataset's fill value */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dataset);
@@ -2114,14 +2122,14 @@ H5D_check_filters(H5D_t *dataset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_check_filters() */
+} /* end H5D__check_filters() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_set_extent
+ * Function:	H5D__set_extent
  *
  * Purpose:	Based on H5D_extend, allows change to a lower dimension,
- *		calls H5S_set_extent and H5D_chunk_prune_by_extent instead
+ *		calls H5S_set_extent and H5D__chunk_prune_by_extent instead
  *
  * Return:	Non-negative on success, negative on failure
  *
@@ -2131,7 +2139,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_set_extent(H5D_t *dset, const hsize_t *size, hid_t dxpl_id)
+H5D__set_extent(H5D_t *dset, const hsize_t *size, hid_t dxpl_id)
 {
     H5S_t   *space;                     /* Dataset's dataspace */
     int     rank;                       /* Dataspace # of dimensions */
@@ -2139,7 +2147,7 @@ H5D_set_extent(H5D_t *dset, const hsize_t *size, hid_t dxpl_id)
     htri_t  changed;                    /* Whether the dataspace changed size */
     herr_t  ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dset);
@@ -2156,7 +2164,7 @@ H5D_set_extent(H5D_t *dset, const hsize_t *size, hid_t dxpl_id)
         HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "dataset has contiguous storage")
 
     /* Check if the filters in the DCPL will need to encode, and if so, can they? */
-    if(H5D_check_filters(dset) < 0)
+    if(H5D__check_filters(dset) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't apply filters")
 
     /* Get the data space */
@@ -2190,15 +2198,15 @@ H5D_set_extent(H5D_t *dset, const hsize_t *size, hid_t dxpl_id)
          */
         /* Update the index values for the cached chunks for this dataset */
         if(H5D_CHUNKED == dset->shared->layout.type) {
-            if(H5D_chunk_set_info(dset) < 0)
+            if(H5D__chunk_set_info(dset) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "unable to update # of chunks")
-            if(H5D_chunk_update_cache(dset, dxpl_id) < 0)
+            if(H5D__chunk_update_cache(dset, dxpl_id) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to update cached chunk indices")
         } /* end if */
 
         /* Allocate space for the new parts of the dataset, if appropriate */
         if(expand && dset->shared->dcpl_cache.fill.alloc_time == H5D_ALLOC_TIME_EARLY)
-            if(H5D_alloc_storage(dset, dxpl_id, H5D_ALLOC_EXTEND, FALSE, curr_dims) < 0)
+            if(H5D__alloc_storage(dset, dxpl_id, H5D_ALLOC_EXTEND, FALSE, curr_dims) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to extend dataset storage")
 
         /*-------------------------------------------------------------------------
@@ -2210,22 +2218,22 @@ H5D_set_extent(H5D_t *dset, const hsize_t *size, hid_t dxpl_id)
         if(shrink && H5D_CHUNKED == dset->shared->layout.type &&
                 (*dset->shared->layout.ops->is_space_alloc)(&dset->shared->layout.storage)) {
             /* Remove excess chunks */
-            if(H5D_chunk_prune_by_extent(dset, dxpl_id, curr_dims) < 0)
+            if(H5D__chunk_prune_by_extent(dset, dxpl_id, curr_dims) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to remove chunks")
         } /* end if */
 
         /* Mark the dataspace as dirty, for later writing to the file */
-        if(H5D_mark(dset, dxpl_id, H5D_MARK_SPACE) < 0)
+        if(H5D__mark(dset, dxpl_id, H5D_MARK_SPACE) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "unable to mark dataspace as dirty")
     } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_set_extent() */
+} /* end H5D__set_extent() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_flush_sieve_buf
+ * Function:    H5D__flush_sieve_buf
  *
  * Purpose:     Flush any dataset sieve buffer info cached in memory
  *
@@ -2238,11 +2246,11 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id)
+H5D__flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dataset);
@@ -2262,11 +2270,11 @@ H5D_flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_flush_sieve_buf() */
+} /* end H5D__flush_sieve_buf() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_flush_real
+ * Function:    H5D__flush_real
  *
  * Purpose:     Flush any dataset information cached in memory
  *
@@ -2279,12 +2287,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_flush_real(H5D_t *dataset, hid_t dxpl_id)
+H5D__flush_real(H5D_t *dataset, hid_t dxpl_id)
 {
     H5O_t *oh = NULL;                   /* Pointer to dataset's object header */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(dataset);
@@ -2299,7 +2307,7 @@ H5D_flush_real(H5D_t *dataset, hid_t dxpl_id)
 
         /* Update the layout on disk, if it's been changed */
         if(dataset->shared->layout_dirty) {
-            if(H5D_layout_oh_write(dataset, dxpl_id, oh, update_flags) < 0)
+            if(H5D__layout_oh_write(dataset, dxpl_id, oh, update_flags) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to update layout/pline/efl info")
             dataset->shared->layout_dirty = FALSE;
 
@@ -2333,11 +2341,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CANTUNPIN, FAIL, "unable to unpin dataset object header")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_flush_real() */
+} /* end H5D__flush_real() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_mark
+ * Function:    H5D__mark
  *
  * Purpose:     Mark some aspect of a dataset as dirty
  *
@@ -2350,11 +2358,11 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags)
+H5D__mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Check args */
     HDassert(dataset);
@@ -2368,11 +2376,11 @@ H5D_mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_mark() */
+} /* end H5D__mark() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_flush_cb
+ * Function:    H5D__flush_cb
  *
  * Purpose:     Flush any dataset information cached in memory
  *
@@ -2385,13 +2393,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5D_flush_cb(void *_dataset, hid_t UNUSED id, void *_udata)
+H5D__flush_cb(void *_dataset, hid_t UNUSED id, void *_udata)
 {
     H5D_t       *dataset = (H5D_t *)_dataset;   /* Dataset pointer */
     H5D_flush_ud_t *udata = (H5D_flush_ud_t *)_udata;   /* User data for callback */
     int         ret_value = H5_ITER_CONT;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(dataset);
@@ -2399,13 +2407,13 @@ H5D_flush_cb(void *_dataset, hid_t UNUSED id, void *_udata)
     /* Check for dataset in same file */
     if(udata->f == dataset->oloc.file) {
         /* Flush the dataset's information */
-        if(H5D_flush_real(dataset, udata->dxpl_id) < 0)
+        if(H5D__flush_real(dataset, udata->dxpl_id) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, H5_ITER_ERROR, "unable to flush cached dataset info")
     } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_flush_cb() */
+} /* end H5D__flush_cb() */
 
 
 /*-------------------------------------------------------------------------
@@ -2437,7 +2445,7 @@ H5D_flush(const H5F_t *f, hid_t dxpl_id)
     udata.dxpl_id = dxpl_id;
 
     /* Iterate over all the open datasets */
-    if(H5I_iterate(H5I_DATASET, H5D_flush_cb, &udata, FALSE) < 0)
+    if(H5I_iterate(H5I_DATASET, H5D__flush_cb, &udata, FALSE) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_BADITER, FAIL, "unable to flush cached dataset info")
 
 done:
diff --git a/src/H5Dio.c b/src/H5Dio.c
index 2c0c2e0..0493a9e 100644
--- a/src/H5Dio.c
+++ b/src/H5Dio.c
@@ -50,27 +50,27 @@
 /********************/
 
 /* Internal I/O routines */
-static herr_t H5D_read(H5D_t *dataset, hid_t mem_type_id,
+static herr_t H5D__read(H5D_t *dataset, hid_t mem_type_id,
     const H5S_t *mem_space, const H5S_t *file_space, hid_t dset_xfer_plist,
     void *buf/*out*/);
-static herr_t H5D_write(H5D_t *dataset, hid_t mem_type_id,
+static herr_t H5D__write(H5D_t *dataset, hid_t mem_type_id,
     const H5S_t *mem_space, const H5S_t *file_space, hid_t dset_xfer_plist,
     const void *buf);
 
 /* Setup/teardown routines */
-static herr_t H5D_ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
+static herr_t H5D__ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
     hid_t dxpl_id, const H5D_type_info_t *type_info, H5D_storage_t *store,
     H5D_io_info_t *io_info);
-static herr_t H5D_typeinfo_init(const H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
+static herr_t H5D__typeinfo_init(const H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
     hid_t dxpl_id, hid_t mem_type_id, hbool_t do_write,
     H5D_type_info_t *type_info);
 #ifdef H5_HAVE_PARALLEL
-static herr_t H5D_ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset,
+static herr_t H5D__ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset,
     hid_t dxpl_id, const H5S_t *file_space, const H5S_t *mem_space,
     const H5D_type_info_t *type_info, const H5D_chunk_map_t *fm);
-static herr_t H5D_ioinfo_term(H5D_io_info_t *io_info);
+static herr_t H5D__ioinfo_term(H5D_io_info_t *io_info);
 #endif /* H5_HAVE_PARALLEL */
-static herr_t H5D_typeinfo_term(const H5D_type_info_t *type_info);
+static herr_t H5D__typeinfo_term(const H5D_type_info_t *type_info);
 
 
 /*********************/
@@ -170,7 +170,7 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
         buf = &fake_char;
 
     /* read raw data */
-    if(H5D_read(dset, mem_type_id, mem_space, file_space, plist_id, buf/*out*/) < 0)
+    if(H5D__read(dset, mem_type_id, mem_space, file_space, plist_id, buf/*out*/) < 0)
 	HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read data")
 
 done:
@@ -262,7 +262,7 @@ H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
         buf = &fake_char;
 
     /* write raw data */
-    if(H5D_write(dset, mem_type_id, mem_space, file_space, dxpl_id, buf) < 0)
+    if(H5D__write(dset, mem_type_id, mem_space, file_space, dxpl_id, buf) < 0)
 	HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "can't write data")
 
 done:
@@ -271,7 +271,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_read
+ * Function:	H5D__read
  *
  * Purpose:	Reads (part of) a DATASET into application memory BUF. See
  *		H5Dread() for complete details.
@@ -284,7 +284,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
+H5D__read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 	 const H5S_t *file_space, hid_t dxpl_id, void *buf/*out*/)
 {
     H5D_chunk_map_t fm;                 /* Chunk file<->memory mapping */
@@ -315,7 +315,7 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     H5D_dxpl_cache_t *dxpl_cache = &_dxpl_cache;   /* Data transfer property cache */
     herr_t	ret_value = SUCCEED;	/* Return value	*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(dataset && dataset->oloc.file);
@@ -329,11 +329,11 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     H5_ASSIGN_OVERFLOW(nelmts,snelmts,hssize_t,hsize_t);
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Set up datatype info for operation */
-    if(H5D_typeinfo_init(dataset, dxpl_cache, dxpl_id, mem_type_id, FALSE, &type_info) < 0)
+    if(H5D__typeinfo_init(dataset, dxpl_cache, dxpl_id, mem_type_id, FALSE, &type_info) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to set up type info")
     type_info_init = TRUE;
 
@@ -411,7 +411,7 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
             HGOTO_DONE(SUCCEED)
 
         /* Go fill the user's selection with the dataset's fill value */
-        if(H5D_fill(dataset->shared->dcpl_cache.fill.buf, dataset->shared->type, buf, type_info.mem_type, mem_space, dxpl_id) < 0)
+        if(H5D__fill(dataset->shared->dcpl_cache.fill.buf, dataset->shared->type, buf, type_info.mem_type, mem_space, dxpl_id) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "filling buf failed")
         else
             HGOTO_DONE(SUCCEED)
@@ -420,7 +420,7 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     /* Set up I/O operation */
     io_info.op_type = H5D_IO_OP_READ;
     io_info.u.rbuf = buf;
-    if(H5D_ioinfo_init(dataset, dxpl_cache, dxpl_id, &type_info, &store, &io_info) < 0)
+    if(H5D__ioinfo_init(dataset, dxpl_cache, dxpl_id, &type_info, &store, &io_info) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_UNSUPPORTED, FAIL, "unable to set up I/O operation")
 #ifdef H5_HAVE_PARALLEL
     io_info_init = TRUE;
@@ -440,7 +440,7 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 
 #ifdef H5_HAVE_PARALLEL
     /* Adjust I/O info for any parallel I/O */
-    if(H5D_ioinfo_adjust(&io_info, dataset, dxpl_id, file_space, mem_space, &type_info, &fm) < 0)
+    if(H5D__ioinfo_adjust(&io_info, dataset, dxpl_id, file_space, mem_space, &type_info, &fm) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to adjust I/O info for parallel I/O")
 #endif /*H5_HAVE_PARALLEL*/
 
@@ -455,11 +455,11 @@ done:
 #ifdef H5_HAVE_PARALLEL
     /* Shut down io_info struct */
     if(io_info_init)
-        if(H5D_ioinfo_term(&io_info) < 0)
+        if(H5D__ioinfo_term(&io_info) < 0)
             HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "can't shut down io_info")
 #endif /*H5_HAVE_PARALLEL*/
     /* Shut down datatype info for operation */
-    if(type_info_init && H5D_typeinfo_term(&type_info) < 0)
+    if(type_info_init && H5D__typeinfo_term(&type_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to shut down type info")
 
     /* discard projected mem space if it was created */
@@ -468,11 +468,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to shut down projected memory dataspace")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_read() */
+} /* end H5D__read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_write
+ * Function:	H5D__write
  *
  * Purpose:	Writes (part of) a DATASET to a file from application memory
  *		BUF. See H5Dwrite() for complete details.
@@ -485,7 +485,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
+H5D__write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 	  const H5S_t *file_space, hid_t dxpl_id, const void *buf)
 {
     H5D_chunk_map_t fm;                 /* Chunk file<->memory mapping */
@@ -516,7 +516,7 @@ H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     H5D_dxpl_cache_t *dxpl_cache = &_dxpl_cache;   /* Data transfer property cache */
     herr_t	ret_value = SUCCEED;	/* Return value	*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(dataset && dataset->oloc.file);
@@ -534,11 +534,11 @@ H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 	HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "no write intent on file")
 
     /* Fill the DXPL cache values for later use */
-    if(H5D_get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
+    if(H5D__get_dxpl_cache(dxpl_id, &dxpl_cache) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't fill dxpl cache")
 
     /* Set up datatype info for operation */
-    if(H5D_typeinfo_init(dataset, dxpl_cache, dxpl_id, mem_type_id, TRUE, &type_info) < 0)
+    if(H5D__typeinfo_init(dataset, dxpl_cache, dxpl_id, mem_type_id, TRUE, &type_info) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to set up type info")
     type_info_init = TRUE;
 
@@ -643,14 +643,14 @@ H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
             full_overwrite = (hbool_t)((hsize_t)file_nelmts == nelmts ? TRUE : FALSE);
 
  	/* Allocate storage */
-        if(H5D_alloc_storage(dataset, dxpl_id, H5D_ALLOC_WRITE, full_overwrite, NULL) < 0)
+        if(H5D__alloc_storage(dataset, dxpl_id, H5D_ALLOC_WRITE, full_overwrite, NULL) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize storage")
     } /* end if */
 
     /* Set up I/O operation */
     io_info.op_type = H5D_IO_OP_WRITE;
     io_info.u.wbuf = buf;
-    if(H5D_ioinfo_init(dataset, dxpl_cache, dxpl_id, &type_info, &store, &io_info) < 0)
+    if(H5D__ioinfo_init(dataset, dxpl_cache, dxpl_id, &type_info, &store, &io_info) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to set up I/O operation")
 #ifdef H5_HAVE_PARALLEL
     io_info_init = TRUE;
@@ -664,7 +664,7 @@ H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 
 #ifdef H5_HAVE_PARALLEL
     /* Adjust I/O info for any parallel I/O */
-    if(H5D_ioinfo_adjust(&io_info, dataset, dxpl_id, file_space, mem_space, &type_info, &fm) < 0)
+    if(H5D__ioinfo_adjust(&io_info, dataset, dxpl_id, file_space, mem_space, &type_info, &fm) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to adjust I/O info for parallel I/O")
 #endif /*H5_HAVE_PARALLEL*/
 
@@ -696,11 +696,11 @@ done:
         HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to shut down I/O op info")
 #ifdef H5_HAVE_PARALLEL
     /* Shut down io_info struct */
-    if(io_info_init && H5D_ioinfo_term(&io_info) < 0)
+    if(io_info_init && H5D__ioinfo_term(&io_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "can't shut down io_info")
 #endif /*H5_HAVE_PARALLEL*/
     /* Shut down datatype info for operation */
-    if(type_info_init && H5D_typeinfo_term(&type_info) < 0)
+    if(type_info_init && H5D__typeinfo_term(&type_info) < 0)
         HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to shut down type info")
 
     /* discard projected mem space if it was created */
@@ -709,11 +709,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to shut down projected memory dataspace")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_write() */
+} /* end H5D__write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_ioinfo_init
+ * Function:	H5D__ioinfo_init
  *
  * Purpose:	Routine for determining correct I/O operations for
  *              each I/O action.
@@ -726,10 +726,10 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
+H5D__ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
     const H5D_type_info_t *type_info, H5D_storage_t *store, H5D_io_info_t *io_info)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* check args */
     HDassert(dset);
@@ -757,15 +757,15 @@ H5D_ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
          * If there is no data transform or type conversion then read directly into
          *  the application's buffer.  This saves at least one mem-to-mem copy.
          */
-        io_info->io_ops.single_read = H5D_select_read;
-        io_info->io_ops.single_write = H5D_select_write;
+        io_info->io_ops.single_read = H5D__select_read;
+        io_info->io_ops.single_write = H5D__select_write;
     } /* end if */
     else {
         /*
          * This is the general case (type conversion, usually).
          */
-        io_info->io_ops.single_read = H5D_scatgath_read;
-        io_info->io_ops.single_write = H5D_scatgath_write;
+        io_info->io_ops.single_read = H5D__scatgath_read;
+        io_info->io_ops.single_write = H5D__scatgath_write;
     } /* end else */
 
 #ifdef H5_HAVE_PARALLEL
@@ -774,11 +774,11 @@ H5D_ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
 #endif /* H5_HAVE_PARALLEL */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_ioinfo_init() */
+} /* end H5D__ioinfo_init() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_typeinfo_init
+ * Function:	H5D__typeinfo_init
  *
  * Purpose:	Routine for determining correct datatype information for
  *              each I/O action.
@@ -791,7 +791,7 @@ H5D_ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_typeinfo_init(const H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
+H5D__typeinfo_init(const H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
     hid_t dxpl_id, hid_t mem_type_id, hbool_t do_write,
     H5D_type_info_t *type_info)
 {
@@ -799,7 +799,7 @@ H5D_typeinfo_init(const H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
     const H5T_t	*dst_type;              /* Destination datatype */
     herr_t ret_value = SUCCEED;	        /* Return value	*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(type_info);
@@ -930,12 +930,12 @@ H5D_typeinfo_init(const H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_typeinfo_init() */
+} /* end H5D__typeinfo_init() */
 
 #ifdef H5_HAVE_PARALLEL
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_ioinfo_adjust
+ * Function:	H5D__ioinfo_adjust
  *
  * Purpose:	Adjust operation's I/O info for any parallel I/O
  *
@@ -947,7 +947,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
+H5D__ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
     const H5S_t *file_space, const H5S_t *mem_space,
     const H5D_type_info_t *type_info, const H5D_chunk_map_t *fm)
 {
@@ -956,7 +956,7 @@ H5D_ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
     H5D_mpio_actual_io_mode_t actual_io_mode; /* performed io mode */
     herr_t	ret_value = SUCCEED;	/* Return value	*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* check args */
     HDassert(dset);
@@ -996,7 +996,7 @@ H5D_ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
             HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "can't retrieve MPI communicator")
 
         /* Check if we can set direct MPI-IO read/write functions */
-        if((opt = H5D_mpio_opt_possible(io_info, file_space, mem_space, type_info, fm)) < 0)
+        if((opt = H5D__mpio_opt_possible(io_info, file_space, mem_space, type_info, fm, dx_plist)) < 0)
             HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "invalid check for direct IO dataspace ")
 
         /* Check if we can use the optimized parallel I/O routines */
@@ -1004,8 +1004,8 @@ H5D_ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
             /* Override the I/O op pointers to the MPI-specific routines */
             io_info->io_ops.multi_read = dset->shared->layout.ops->par_read;
             io_info->io_ops.multi_write = dset->shared->layout.ops->par_write;
-            io_info->io_ops.single_read = H5D_mpio_select_read;
-            io_info->io_ops.single_write = H5D_mpio_select_write;
+            io_info->io_ops.single_read = H5D__mpio_select_read;
+            io_info->io_ops.single_write = H5D__mpio_select_write;
         } /* end if */
         else {
             /* If we won't be doing collective I/O, but the user asked for
@@ -1023,11 +1023,11 @@ H5D_ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_ioinfo_adjust() */
+} /* end H5D__ioinfo_adjust() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_ioinfo_term
+ * Function:	H5D__ioinfo_term
  *
  * Purpose:	Common logic for terminating an I/O info object
  *              (Only used for restoring MPI transfer mode currently)
@@ -1040,11 +1040,11 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_ioinfo_term(H5D_io_info_t *io_info)
+H5D__ioinfo_term(H5D_io_info_t *io_info)
 {
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check if we used the MPI VFD for the I/O */
     if(io_info->using_mpi_vfd) {
@@ -1077,13 +1077,13 @@ H5D_ioinfo_term(H5D_io_info_t *io_info)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_ioinfo_term() */
+} /* end H5D__ioinfo_term() */
 
 #endif /* H5_HAVE_PARALLEL */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_typeinfo_term
+ * Function:	H5D__typeinfo_term
  *
  * Purpose:	Common logic for terminating a type info object
  *
@@ -1095,9 +1095,9 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_typeinfo_term(const H5D_type_info_t *type_info)
+H5D__typeinfo_term(const H5D_type_info_t *type_info)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Check for releasing datatype conversion & background buffers */
     if(type_info->tconv_buf_allocated) {
@@ -1110,5 +1110,5 @@ H5D_typeinfo_term(const H5D_type_info_t *type_info)
     } /* end if */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_typeinfo_term() */
+} /* end H5D__typeinfo_term() */
 
diff --git a/src/H5Dlayout.c b/src/H5Dlayout.c
index fa25305..7787042 100644
--- a/src/H5Dlayout.c
+++ b/src/H5Dlayout.c
@@ -61,7 +61,7 @@
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_layout_set_io_ops
+ * Function:	H5D__layout_set_io_ops
  *
  * Purpose:	Set the I/O operation function pointers for a dataset,
  *              according to the dataset's layout
@@ -74,11 +74,11 @@
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_layout_set_io_ops(const H5D_t *dataset)
+H5D__layout_set_io_ops(const H5D_t *dataset)
 {
     herr_t ret_value = SUCCEED;		/* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(dataset);
@@ -112,11 +112,11 @@ H5D_layout_set_io_ops(const H5D_t *dataset)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_layout_set_io_ops() */
+} /* end H5D__layout_set_io_ops() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_layout_meta_size
+ * Function:    H5D__layout_meta_size
  *
  * Purpose:     Returns the size of the raw message in bytes except raw data
  *              part for compact dataset.  This function doesn't take into
@@ -131,11 +131,11 @@ done:
  *-------------------------------------------------------------------------
  */
 size_t
-H5D_layout_meta_size(const H5F_t *f, const H5O_layout_t *layout, hbool_t include_compact_data)
+H5D__layout_meta_size(const H5F_t *f, const H5O_layout_t *layout, hbool_t include_compact_data)
 {
     size_t                  ret_value;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(f);
@@ -177,11 +177,11 @@ H5D_layout_meta_size(const H5F_t *f, const H5O_layout_t *layout, hbool_t include
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_layout_meta_size() */
+} /* end H5D__layout_meta_size() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_layout_oh_create
+ * Function:	H5D__layout_oh_create
  *
  * Purpose:	Create layout/pline/efl information for dataset
  *
@@ -194,7 +194,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh, H5D_t *dset,
+H5D__layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh, H5D_t *dset,
     hid_t dapl_id)
 {
     H5O_layout_t        *layout;         /* Dataset's layout information */
@@ -202,7 +202,7 @@ H5D_layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh, H5D_t *dset,
     hbool_t             layout_init = FALSE;    /* Flag to indicate that chunk information was initialized */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity checking */
     HDassert(file);
@@ -234,7 +234,7 @@ H5D_layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh, H5D_t *dset,
      * allocation until later.
      */
     if(fill_prop->alloc_time == H5D_ALLOC_TIME_EARLY)
-        if(H5D_alloc_storage(dset, dxpl_id, H5D_ALLOC_CREATE, FALSE, NULL) < 0)
+        if(H5D__alloc_storage(dset, dxpl_id, H5D_ALLOC_CREATE, FALSE, NULL) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize storage")
 
     /* Update external storage message, if it's used */
@@ -289,7 +289,7 @@ H5D_layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh, H5D_t *dset,
 
     /* Create layout message */
     /* (Don't make layout message constant unless allocation time is early, since space may not be allocated) */
-    /* (Note: this is relying on H5D_alloc_storage not calling H5O_msg_write during dataset creation) */
+    /* (Note: this is relying on H5D__alloc_storage not calling H5O_msg_write during dataset creation) */
     if(H5O_msg_append_oh(file, dxpl_id, oh, H5O_LAYOUT_ID, ((fill_prop->alloc_time == H5D_ALLOC_TIME_EARLY && H5D_COMPACT != layout->type) ? H5O_MSG_FLAG_CONSTANT : 0), 0, layout) < 0)
          HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to update layout")
 
@@ -297,17 +297,17 @@ done:
     /* Error cleanup */
     if(ret_value < 0) {
         if(dset->shared->layout.type == H5D_CHUNKED && layout_init) {
-            if(H5D_chunk_dest(file, dxpl_id, dset) < 0)
+            if(H5D__chunk_dest(file, dxpl_id, dset) < 0)
                 HDONE_ERROR(H5E_DATASET, H5E_CANTRELEASE, FAIL, "unable to destroy chunk cache")
         } /* end if */
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_layout_oh_create() */
+} /* end H5D__layout_oh_create() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_layout_oh_read
+ * Function:	H5D__layout_oh_read
  *
  * Purpose:	Read layout/pline/efl information for dataset
  *
@@ -320,12 +320,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_layout_oh_read(H5D_t *dataset, hid_t dxpl_id, hid_t dapl_id, H5P_genplist_t *plist)
+H5D__layout_oh_read(H5D_t *dataset, hid_t dxpl_id, hid_t dapl_id, H5P_genplist_t *plist)
 {
     htri_t msg_exists;                  /* Whether a particular type of message exists */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity checking */
     HDassert(dataset);
@@ -384,6 +384,10 @@ H5D_layout_oh_read(H5D_t *dataset, hid_t dxpl_id, hid_t dapl_id, H5P_genplist_t
 
     switch(dataset->shared->layout.type) {
         case H5D_CONTIGUOUS:
+        {
+            hsize_t tmp_size;                   /* Temporary holder for raw data size */
+            size_t tmp_sieve_buf_size;          /* Temporary holder for sieve buffer size */
+
             /* Compute the size of the contiguous storage for versions of the
              * layout message less than version 3 because versions 1 & 2 would
              * truncate the dimension sizes to 32-bits of information. - QAK 5/26/04
@@ -392,7 +396,6 @@ H5D_layout_oh_read(H5D_t *dataset, hid_t dxpl_id, hid_t dapl_id, H5P_genplist_t
                 hssize_t snelmts;                   /* Temporary holder for number of elements in dataspace */
                 hsize_t nelmts;                     /* Number of elements in dataspace */
                 size_t dt_size;                     /* Size of datatype */
-                hsize_t tmp_size;                   /* Temporary holder for raw data size */
 
                 /* Retrieve the number of elements in the dataspace */
                 if((snelmts = H5S_GET_EXTENT_NPOINTS(dataset->shared->space)) < 0)
@@ -412,15 +415,24 @@ H5D_layout_oh_read(H5D_t *dataset, hid_t dxpl_id, hid_t dapl_id, H5P_genplist_t
 
                 /* Assign the dataset's contiguous storage size */
                 dataset->shared->layout.storage.u.contig.size = tmp_size;
-            } /* end if */
-
-            /* Get the sieve buffer size for this dataset */
-            dataset->shared->cache.contig.sieve_buf_size = H5F_SIEVE_BUF_SIZE(dataset->oloc.file);
+            } else
+                tmp_size = dataset->shared->layout.storage.u.contig.size;
+
+	    /* Get the sieve buffer size for the file */
+	    tmp_sieve_buf_size = H5F_SIEVE_BUF_SIZE(dataset->oloc.file);
+
+	    /* Adjust the sieve buffer size to the smaller one between the dataset size and the buffer size
+	     * from the file access property.  (SLU - 2012/3/30) */
+	    if(tmp_size < tmp_sieve_buf_size)
+		dataset->shared->cache.contig.sieve_buf_size = tmp_size;
+	    else
+		dataset->shared->cache.contig.sieve_buf_size = tmp_sieve_buf_size;
+        }
             break;
 
         case H5D_CHUNKED:
             /* Initialize the chunk cache for the dataset */
-            if(H5D_chunk_init(dataset->oloc.file, dxpl_id, dataset, dapl_id) < 0)
+            if(H5D__chunk_init(dataset->oloc.file, dxpl_id, dataset, dapl_id) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't initialize chunk cache")
             break;
 
@@ -435,11 +447,11 @@ H5D_layout_oh_read(H5D_t *dataset, hid_t dxpl_id, hid_t dapl_id, H5P_genplist_t
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_layout_oh_read() */
+} /* end H5D__layout_oh_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_layout_oh_write
+ * Function:	H5D__layout_oh_write
  *
  * Purpose:	Write layout/pline/efl information for dataset
  *
@@ -452,11 +464,11 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh, unsigned update_flags)
+H5D__layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh, unsigned update_flags)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity checking */
     HDassert(dataset);
@@ -468,5 +480,5 @@ H5D_layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh, unsigned update_fl
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_layout_oh_write() */
+} /* end H5D__layout_oh_write() */
 
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index e657f8f..c2d964e 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -100,33 +100,32 @@ typedef struct H5D_chunk_addr_info_t {
 /********************/
 /* Local Prototypes */
 /********************/
-static herr_t H5D_chunk_collective_io(H5D_io_info_t *io_info,
+static herr_t H5D__chunk_collective_io(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, H5D_chunk_map_t *fm);
-static herr_t H5D_multi_chunk_collective_io(H5D_io_info_t *io_info,
+static herr_t H5D__multi_chunk_collective_io(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, H5D_chunk_map_t *fm,
     H5P_genplist_t *dx_plist);
-static herr_t H5D_multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
+static herr_t H5D__multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist);
-static herr_t H5D_link_chunk_collective_io(H5D_io_info_t *io_info,
+static herr_t H5D__link_chunk_collective_io(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, int sum_chunk);
-static herr_t H5D_inter_collective_io(H5D_io_info_t *io_info,
+static herr_t H5D__inter_collective_io(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, const H5S_t *file_space,
     const H5S_t *mem_space);
-static herr_t H5D_final_collective_io(H5D_io_info_t *io_info,
+static herr_t H5D__final_collective_io(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, hsize_t nelmts, MPI_Datatype *mpi_file_type,
     MPI_Datatype *mpi_buf_type);
-static herr_t H5D_sort_chunk(H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
+static herr_t H5D__sort_chunk(H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
     H5D_chunk_addr_info_t chunk_addr_info_array[], int many_chunk_opt);
-static herr_t H5D_obtain_mpio_mode(H5D_io_info_t *io_info, H5D_chunk_map_t *fm,
+static herr_t H5D__obtain_mpio_mode(H5D_io_info_t *io_info, H5D_chunk_map_t *fm,
     H5P_genplist_t *dx_plist, uint8_t assign_io_mode[], haddr_t chunk_addr[]);
-static herr_t H5D_ioinfo_xfer_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
+static herr_t H5D__ioinfo_xfer_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
     H5FD_mpio_xfer_t xfer_mode);
-static herr_t H5D_ioinfo_coll_opt_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
+static herr_t H5D__ioinfo_coll_opt_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
     H5FD_mpio_collective_opt_t coll_opt_mode);
-static herr_t H5D_mpio_get_min_chunk(const H5D_io_info_t *io_info,
+static herr_t H5D__mpio_get_min_chunk(const H5D_io_info_t *io_info,
     const H5D_chunk_map_t *fm, int *min_chunkf);
-static int H5D_cmp_chunk_addr(const void *addr1, const void *addr2);
-static herr_t H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info,
+static herr_t H5D__mpio_get_sum_chunk(const H5D_io_info_t *io_info,
     const H5D_chunk_map_t *fm, int *sum_chunkf);
 
 
@@ -141,7 +140,7 @@ static herr_t H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info,
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_mpio_opt_possible
+ * Function:    H5D__mpio_opt_possible
  *
  * Purpose:     Checks if an direct I/O transfer is possible between memory and
  *                  the file.
@@ -155,16 +154,18 @@ static herr_t H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info,
  *-------------------------------------------------------------------------
  */
 htri_t
-H5D_mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
+H5D__mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
     const H5S_t *mem_space, const H5D_type_info_t *type_info,
-    const H5D_chunk_map_t *fm)
+    const H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist)
 {
-    int local_opinion = TRUE;   /* This process's idea of whether to perform collective I/O or not */
-    int consensus;              /* Consensus opinion of all processes */
+    /* variables to set cause of broken collective I/O */
+    int local_cause = 0;
+    int global_cause = 0;
+
     int mpi_code;               /* MPI error code */
     htri_t ret_value = TRUE;
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(io_info);
@@ -172,51 +173,54 @@ H5D_mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
     HDassert(file_space);
     HDassert(type_info);
 
+
     /* For independent I/O, get out quickly and don't try to form consensus */
-    if(io_info->dxpl_cache->xfer_mode == H5FD_MPIO_INDEPENDENT)
+    if(io_info->dxpl_cache->xfer_mode == H5FD_MPIO_INDEPENDENT) {
+        local_cause = H5D_MPIO_SET_INDEPENDENT;
+        global_cause = H5D_MPIO_SET_INDEPENDENT;
         HGOTO_DONE(FALSE);
+    }
+
+    /* Optimized MPI types flag must be set and it must be collective IO */
+    /* (Don't allow parallel I/O for the MPI-posix driver, since it doesn't do real collective I/O) */
+    if(!(H5S_mpi_opt_types_g && io_info->dxpl_cache->xfer_mode == H5FD_MPIO_COLLECTIVE
+            && !IS_H5FD_MPIPOSIX(io_info->dset->oloc.file))) {
+        local_cause |= H5D_MPIO_SET_MPIPOSIX;
+    } /* end if */
 
     /* Don't allow collective operations if datatype conversions need to happen */
     if(!type_info->is_conv_noop) {
-        local_opinion = FALSE;
-        goto broadcast;
+        local_cause |= H5D_MPIO_DATATYPE_CONVERSION;
     } /* end if */
 
     /* Don't allow collective operations if data transform operations should occur */
     if(!type_info->is_xform_noop) {
-        local_opinion = FALSE;
-        goto broadcast;
-    } /* end if */
-
-    /* Optimized MPI types flag must be set and it must be collective IO */
-    /* (Don't allow parallel I/O for the MPI-posix driver, since it doesn't do real collective I/O) */
-    if(!(H5S_mpi_opt_types_g && io_info->dxpl_cache->xfer_mode == H5FD_MPIO_COLLECTIVE
-            && !IS_H5FD_MPIPOSIX(io_info->dset->oloc.file))) {
-        local_opinion = FALSE;
-        goto broadcast;
+        local_cause |= H5D_MPIO_DATA_TRANSFORMS;
     } /* end if */
 
     /* Check whether these are both simple or scalar dataspaces */
     if(!((H5S_SIMPLE == H5S_GET_EXTENT_TYPE(mem_space) || H5S_SCALAR == H5S_GET_EXTENT_TYPE(mem_space))
             && (H5S_SIMPLE == H5S_GET_EXTENT_TYPE(file_space) || H5S_SCALAR == H5S_GET_EXTENT_TYPE(file_space)))) {
-        local_opinion = FALSE;
-        goto broadcast;
+        local_cause |= H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES;
     } /* end if */
 
     /* Can't currently handle point selections */
     if(H5S_SEL_POINTS == H5S_GET_SELECT_TYPE(mem_space)
             || H5S_SEL_POINTS == H5S_GET_SELECT_TYPE(file_space)) {
-        local_opinion = FALSE;
-        goto broadcast;
+        local_cause |= H5D_MPIO_POINT_SELECTIONS;
     } /* end if */
 
     /* Dataset storage must be contiguous or chunked */
     if(!(io_info->dset->shared->layout.type == H5D_CONTIGUOUS ||
             io_info->dset->shared->layout.type == H5D_CHUNKED)) {
-        local_opinion = FALSE;
-        goto broadcast;
+        local_cause |= H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET;
     } /* end if */
 
+    /* check if external-file storage is used */
+    if (io_info->dset->shared->dcpl_cache.efl.nused > 0) {
+        local_cause |= H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET;
+    }
+
     /* The handling of memory space is different for chunking and contiguous
      *  storage.  For contiguous storage, mem_space and file_space won't change
      *  when it it is doing disk IO.  For chunking storage, mem_space will
@@ -227,27 +231,34 @@ H5D_mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
     /* Don't allow collective operations if filters need to be applied */
     if(io_info->dset->shared->layout.type == H5D_CHUNKED) {
         if(io_info->dset->shared->dcpl_cache.pline.nused > 0) {
-            local_opinion = FALSE;
-            goto broadcast;
+            local_cause |= H5D_MPIO_FILTERS;
         } /* end if */
     } /* end if */
 
-broadcast:
     /* Form consensus opinion among all processes about whether to perform
      * collective I/O
      */
-    if(MPI_SUCCESS != (mpi_code = MPI_Allreduce(&local_opinion, &consensus, 1, MPI_INT, MPI_LAND, io_info->comm)))
+    if(MPI_SUCCESS != (mpi_code = MPI_Allreduce(&local_cause, &global_cause, 1, MPI_INT, MPI_BOR, io_info->comm)))
         HMPI_GOTO_ERROR(FAIL, "MPI_Allreduce failed", mpi_code)
 
-    ret_value = consensus > 0 ? TRUE : FALSE;
+    ret_value = global_cause > 0 ? FALSE : TRUE;
+
 
 done:
+    /* Write the local value of no-collective-cause to the DXPL. */
+    if(H5P_set(dx_plist, H5D_MPIO_LOCAL_NO_COLLECTIVE_CAUSE_NAME, &local_cause) < 0)
+       HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set local no collective cause property")
+
+    /* Write the global value of no-collective-cause to the DXPL. */
+    if(H5P_set(dx_plist, H5D_MPIO_GLOBAL_NO_COLLECTIVE_CAUSE_NAME, &global_cause) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set global no collective cause property")
+
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_mpio_opt_possible() */
+} /* H5D__mpio_opt_possible() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_mpio_select_read
+ * Function:    H5D__mpio_select_read
  *
  * Purpose:     MPI-IO function to read directly from app buffer to file.
  *
@@ -258,13 +269,13 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_mpio_select_read(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
+H5D__mpio_select_read(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
     hsize_t mpi_buf_count, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space)
 {
     const H5D_contig_storage_t *store_contig = &(io_info->store->contig);    /* Contiguous storage info for this I/O operation */
     herr_t ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     H5_CHECK_OVERFLOW(mpi_buf_count, hsize_t, size_t);
     if(H5F_block_read(io_info->dset->oloc.file, H5FD_MEM_DRAW, store_contig->dset_addr, (size_t)mpi_buf_count, io_info->dxpl_id, io_info->u.rbuf) < 0)
@@ -272,11 +283,11 @@ H5D_mpio_select_read(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_mpio_select_read() */
+} /* end H5D__mpio_select_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_mpio_select_write
+ * Function:    H5D__mpio_select_write
  *
  * Purpose:     MPI-IO function to write directly from app buffer to file.
  *
@@ -287,13 +298,13 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_mpio_select_write(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
+H5D__mpio_select_write(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED *type_info,
     hsize_t mpi_buf_count, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space)
 {
     const H5D_contig_storage_t *store_contig = &(io_info->store->contig);    /* Contiguous storage info for this I/O operation */
     herr_t ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /*OKAY: CAST DISCARDS CONST QUALIFIER*/
     H5_CHECK_OVERFLOW(mpi_buf_count, hsize_t, size_t);
@@ -302,11 +313,11 @@ H5D_mpio_select_write(const H5D_io_info_t *io_info, const H5D_type_info_t UNUSED
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_mpio_select_write() */
+} /* end H5D__mpio_select_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_ioinfo_xfer_mode
+ * Function:    H5D__ioinfo_xfer_mode
  *
  * Purpose:     Switch to between collective & independent MPI I/O
  *
@@ -318,12 +329,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_ioinfo_xfer_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
+H5D__ioinfo_xfer_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
     H5FD_mpio_xfer_t xfer_mode)
 {
     herr_t  ret_value = SUCCEED;    /* return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Change the xfer_mode */
     io_info->dxpl_cache->xfer_mode = xfer_mode;
@@ -340,17 +351,17 @@ H5D_ioinfo_xfer_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
         HDassert(xfer_mode == H5FD_MPIO_COLLECTIVE);
 
         /* Set the pointers to the MPI-specific routines */
-        io_info->io_ops.single_read = H5D_mpio_select_read;
-        io_info->io_ops.single_write = H5D_mpio_select_write;
+        io_info->io_ops.single_read = H5D__mpio_select_read;
+        io_info->io_ops.single_write = H5D__mpio_select_write;
     } /* end else */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_ioinfo_xfer_mode() */
+} /* end H5D__ioinfo_xfer_mode() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_ioinfo_coll_opt_mode
+ * Function:    H5D__ioinfo_coll_opt_mode
  *
  * Purpose:     Switch between using collective & independent MPI I/O w/file
  *              set view
@@ -363,12 +374,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_ioinfo_coll_opt_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
+H5D__ioinfo_coll_opt_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
     H5FD_mpio_collective_opt_t coll_opt_mode)
 {
     herr_t  ret_value = SUCCEED;    /* return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Change the optimal xfer_mode */
     io_info->dxpl_cache->coll_opt_mode = coll_opt_mode;
@@ -377,11 +388,11 @@ H5D_ioinfo_coll_opt_mode(H5D_io_info_t *io_info, H5P_genplist_t *dx_plist,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_ioinfo_coll_opt_mode() */
+} /* end H5D__ioinfo_coll_opt_mode() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_mpio_get_min_chunk
+ * Function:    H5D__mpio_get_min_chunk
  *
  * Purpose:     Routine for obtaining minimum number of chunks to cover
  *              hyperslab selection selected by all processors.
@@ -394,14 +405,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_mpio_get_min_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
+H5D__mpio_get_min_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
     int *min_chunkf)
 {
     int num_chunkf;             /* Number of chunks to iterate over */
     int mpi_code;               /* MPI return code */
     herr_t ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get the number of chunks to perform I/O on */
     num_chunkf = H5SL_count(fm->sel_chunks);
@@ -412,11 +423,11 @@ H5D_mpio_get_min_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_mpio_get_min_chunk() */
+} /* end H5D__mpio_get_min_chunk() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_mpio_get_sum_chunk
+ * Function:    H5D__mpio_get_sum_chunk
  *
  * Purpose:     Routine for obtaining total number of chunks to cover
  *              hyperslab selection selected by all processors.
@@ -429,7 +440,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
+H5D__mpio_get_sum_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
     int *sum_chunkf)
 {
     int num_chunkf;             /* Number of chunks to iterate over */
@@ -437,7 +448,7 @@ H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
     int mpi_code;               /* MPI return code */
     herr_t ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get the number of chunks to perform I/O on */
     num_chunkf = 0;
@@ -450,11 +461,11 @@ H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_mpio_get_sum_chunk() */
+} /* end H5D__mpio_get_sum_chunk() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_contig_collective_read
+ * Function:    H5D__contig_collective_read
  *
  * Purpose:     Reads directly from contiguous data in file into application
  *              memory using collective I/O.
@@ -467,7 +478,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_collective_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__contig_collective_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t UNUSED nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t UNUSED *fm)
 {
@@ -475,14 +486,14 @@ H5D_contig_collective_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_i
     H5P_genplist_t *dx_plist;           /* Pointer to DXPL */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(IS_H5FD_MPIO(io_info->dset->oloc.file));
     HDassert(TRUE == H5P_isa_class(io_info->dxpl_id, H5P_DATASET_XFER));
 
     /* Call generic internal collective I/O routine */
-    if(H5D_inter_collective_io(io_info, type_info, file_space, mem_space) < 0)
+    if(H5D__inter_collective_io(io_info, type_info, file_space, mem_space) < 0)
         HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "couldn't finish shared collective MPI-IO")
 
     /* Obtain the data transfer properties */
@@ -497,11 +508,11 @@ H5D_contig_collective_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_i
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_collective_read() */
+} /* end H5D__contig_collective_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_contig_collective_write
+ * Function:    H5D__contig_collective_write
  *
  * Purpose:     Write directly to contiguous data in file from application
  *              memory using collective I/O.
@@ -514,7 +525,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_contig_collective_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__contig_collective_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t UNUSED nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t UNUSED *fm)
 {
@@ -522,14 +533,14 @@ H5D_contig_collective_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_
     H5P_genplist_t *dx_plist;           /* Pointer to DXPL */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(IS_H5FD_MPIO(io_info->dset->oloc.file));
     HDassert(TRUE == H5P_isa_class(io_info->dxpl_id, H5P_DATASET_XFER));
 
     /* Call generic internal collective I/O routine */
-    if(H5D_inter_collective_io(io_info, type_info, file_space, mem_space) < 0)
+    if(H5D__inter_collective_io(io_info, type_info, file_space, mem_space) < 0)
         HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "couldn't finish shared collective MPI-IO")
 
     /* Obtain the data transfer properties */
@@ -544,11 +555,11 @@ H5D_contig_collective_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_contig_collective_write() */
+} /* end H5D__contig_collective_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_collective_io
+ * Function:    H5D__chunk_collective_io
  *
  * Purpose:     Routine for
  *              1) choose an IO option:
@@ -578,7 +589,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     H5D_chunk_map_t *fm)
 {
     H5P_genplist_t *dx_plist;           /* Pointer to DXPL */
@@ -592,7 +603,7 @@ H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
 #endif
     herr_t      ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(io_info);
@@ -614,7 +625,7 @@ H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
         unsigned one_link_chunk_io_threshold;   /* Threshhold to use single collective I/O for all chunks */
         int mpi_size;                   /* Number of processes in MPI job */
 
-        if(H5D_mpio_get_sum_chunk(io_info, fm, &sum_chunk) < 0)
+        if(H5D__mpio_get_sum_chunk(io_info, fm, &sum_chunk) < 0)
             HGOTO_ERROR(H5E_DATASPACE, H5E_CANTSWAP, FAIL, "unable to obtain the total chunk number of all processes");
         if((mpi_size = H5F_mpi_get_size(io_info->dset->oloc.file)) < 0)
             HGOTO_ERROR(H5E_IO, H5E_MPI, FAIL, "unable to obtain mpi size")
@@ -682,7 +693,7 @@ H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
         if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
 
-        if(H5D_link_chunk_collective_io(io_info, type_info, fm, sum_chunk) < 0)
+        if(H5D__link_chunk_collective_io(io_info, type_info, fm, sum_chunk) < 0)
             HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish linked chunk MPI-IO")
 
         /* Set the actual io mode property. */
@@ -696,7 +707,7 @@ H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
         if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
 
-        if(H5D_multi_chunk_collective_io_no_opt(io_info, type_info, fm, dx_plist) < 0)
+        if(H5D__multi_chunk_collective_io_no_opt(io_info, type_info, fm, dx_plist) < 0)
             HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish multiple chunk MPI-IO")
     } /* end if */
     else { /*multiple chunk IOs with opt */
@@ -704,17 +715,17 @@ H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
         if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
 
-        if(H5D_multi_chunk_collective_io(io_info, type_info, fm, dx_plist) < 0)
+        if(H5D__multi_chunk_collective_io(io_info, type_info, fm, dx_plist) < 0)
             HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish optimized multiple chunk MPI-IO")
     } /* end else */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_collective_io */
+} /* end H5D__chunk_collective_io */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_collective_read
+ * Function:    H5D__chunk_collective_read
  *
  * Purpose:     Reads directly from chunks in file into application memory
  *              using collective I/O.
@@ -727,25 +738,25 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_collective_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__chunk_collective_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t *fm)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Call generic selection operation */
-    if(H5D_chunk_collective_io(io_info, type_info, fm) < 0)
+    if(H5D__chunk_collective_io(io_info, type_info, fm) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_READERROR, FAIL, "read error")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_collective_read() */
+} /* end H5D__chunk_collective_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_chunk_collective_write
+ * Function:    H5D__chunk_collective_write
  *
  * Purpose:     Write directly to chunks in file from application memory
  *              using collective I/O.
@@ -758,25 +769,25 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_chunk_collective_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__chunk_collective_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t UNUSED nelmts, const H5S_t UNUSED *file_space, const H5S_t UNUSED *mem_space,
     H5D_chunk_map_t *fm)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Call generic selection operation */
-    if(H5D_chunk_collective_io(io_info, type_info, fm) < 0)
+    if(H5D__chunk_collective_io(io_info, type_info, fm) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_WRITEERROR, FAIL, "write error")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_chunk_collective_write() */
+} /* end H5D__chunk_collective_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_link_chunk_collective_io
+ * Function:    H5D__link_chunk_collective_io
  *
  * Purpose:     Routine for one collective IO with one MPI derived datatype to link with all chunks
  *
@@ -793,7 +804,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_link_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__link_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     H5D_chunk_map_t *fm, int sum_chunk)
 {
     H5D_chunk_addr_info_t *chunk_addr_info_array = NULL;
@@ -815,11 +826,11 @@ H5D_link_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type
     int                 mpi_code;           /* MPI return code */
     herr_t              ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get the sum # of chunks, if not already available */
     if(sum_chunk < 0) {
-        if(H5D_mpio_get_sum_chunk(io_info, fm, &sum_chunk) < 0)
+        if(H5D__mpio_get_sum_chunk(io_info, fm, &sum_chunk) < 0)
             HGOTO_ERROR(H5E_DATASPACE, H5E_CANTSWAP, FAIL, "unable to obtain the total chunk number of all processes");
     } /* end if */
 
@@ -842,7 +853,7 @@ H5D_link_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type
         HDmemset(coords, 0, sizeof(coords));
 
         /* Look up address of chunk */
-        if(H5D_chunk_lookup(io_info->dset, io_info->dxpl_id, coords,
+        if(H5D__chunk_lookup(io_info->dset, io_info->dxpl_id, coords,
                 io_info->store->chunk.index, &udata) < 0)
             HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL, "couldn't get chunk info from skipped list")
         ctg_store.contig.dset_addr = udata.addr;
@@ -875,7 +886,7 @@ if(H5DEBUG(D))
 #endif
 
         /* Perform I/O */
-        if(H5D_inter_collective_io(io_info, type_info, fspace, mspace) < 0)
+        if(H5D__inter_collective_io(io_info, type_info, fspace, mspace) < 0)
             HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL, "couldn't finish shared collective MPI-IO")
     } /* end if */
     else {
@@ -919,7 +930,7 @@ if(H5DEBUG(D))
     HDfprintf(H5DEBUG(D),"before sorting the chunk address \n");
 #endif
             /* Sort the chunk address */
-            if(H5D_sort_chunk(io_info, fm, chunk_addr_info_array, sum_chunk) < 0)
+            if(H5D__sort_chunk(io_info, fm, chunk_addr_info_array, sum_chunk) < 0)
                 HGOTO_ERROR(H5E_DATASPACE, H5E_CANTSWAP, FAIL, "unable to sort chunk address")
             ctg_store.contig.dset_addr = chunk_addr_info_array[0].chunk_addr;
 
@@ -982,7 +993,7 @@ if(H5DEBUG(D))
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "couldn't allocate total chunk address arraybuffer")
 
             /* Retrieve chunk address map */
-            if(H5D_chunk_addrmap(io_info, total_chunk_addr_array) < 0)
+            if(H5D__chunk_addrmap(io_info, total_chunk_addr_array) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get chunk address")
 
             /* Get chunk with lowest address */
@@ -1008,7 +1019,7 @@ if(H5DEBUG(D))
         io_info->store = &ctg_store;
 
         /* Perform final collective I/O operation */
-        if(H5D_final_collective_io(io_info, type_info, mpi_buf_count, &chunk_final_ftype, &chunk_final_mtype) < 0)
+        if(H5D__final_collective_io(io_info, type_info, mpi_buf_count, &chunk_final_ftype, &chunk_final_mtype) < 0)
             HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish MPI-IO")
     } /* end else */
 
@@ -1046,11 +1057,11 @@ if(H5DEBUG(D))
         HMPI_DONE_ERROR(FAIL, "MPI_Type_free failed", mpi_code)
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_link_chunk_collective_io */
+} /* end H5D__link_chunk_collective_io */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_multi_chunk_collective_io
+ * Function:    H5D__multi_chunk_collective_io
  *
  * Purpose:     To do IO per chunk according to IO mode(collective/independent/none)
  *
@@ -1067,7 +1078,7 @@ if(H5DEBUG(D))
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_multi_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__multi_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist)
 {
     H5D_io_info_t       ctg_io_info;          /* Contiguous I/O info object */
@@ -1088,7 +1099,7 @@ H5D_multi_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *typ
     H5D_mpio_actual_io_mode_t actual_io_mode = H5D_MPIO_NO_COLLECTIVE; /* Local variable for tracking the I/O mode used. */
     herr_t              ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
 #ifdef H5Dmpio_DEBUG
     mpi_rank = H5F_mpi_get_rank(io_info->dset->oloc.file);
@@ -1107,7 +1118,7 @@ if(H5DEBUG(D))
 #endif
 
     /* Obtain IO option for each chunk */
-    if(H5D_obtain_mpio_mode(io_info, fm, dx_plist, chunk_io_option, chunk_addr) < 0)
+    if(H5D__obtain_mpio_mode(io_info, fm, dx_plist, chunk_io_option, chunk_addr) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTRECV, FAIL, "unable to obtain MPIO mode")
 
     /* Set up contiguous I/O info object */
@@ -1181,12 +1192,12 @@ if(H5DEBUG(D))
 
             /* Switch back to collective I/O */
             if(last_xfer_mode != H5FD_MPIO_COLLECTIVE) {
-                if(H5D_ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE) < 0)
+                if(H5D__ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to collective I/O")
                 last_xfer_mode = H5FD_MPIO_COLLECTIVE;
             } /* end if */
             if(last_coll_opt_mode != H5FD_MPIO_COLLECTIVE_IO) {
-                if(H5D_ioinfo_coll_opt_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE_IO) < 0)
+                if(H5D__ioinfo_coll_opt_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE_IO) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to collective I/O")
                 last_coll_opt_mode = H5FD_MPIO_COLLECTIVE_IO;
             } /* end if */
@@ -1195,7 +1206,7 @@ if(H5DEBUG(D))
             ctg_store.contig.dset_addr = chunk_addr[u];
 
             /* Perform the I/O */
-            if(H5D_inter_collective_io(&ctg_io_info, type_info, fspace, mspace) < 0)
+            if(H5D__inter_collective_io(&ctg_io_info, type_info, fspace, mspace) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish shared collective MPI-IO")
         } /* end if */
         else {  /* possible independent IO for this chunk */
@@ -1220,7 +1231,7 @@ if(H5DEBUG(D))
 
             /* Using independent I/O with file setview.*/
             if(last_coll_opt_mode != H5FD_MPIO_INDIVIDUAL_IO) {
-                if(H5D_ioinfo_coll_opt_mode(io_info, dx_plist, H5FD_MPIO_INDIVIDUAL_IO) < 0)
+                if(H5D__ioinfo_coll_opt_mode(io_info, dx_plist, H5FD_MPIO_INDIVIDUAL_IO) < 0)
                     HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to individual I/O")
                 last_coll_opt_mode = H5FD_MPIO_INDIVIDUAL_IO;
             } /* end if */
@@ -1229,7 +1240,7 @@ if(H5DEBUG(D))
             ctg_store.contig.dset_addr = chunk_addr[u];
 
             /* Perform the I/O */
-            if(H5D_inter_collective_io(&ctg_io_info, type_info, fspace, mspace) < 0)
+            if(H5D__inter_collective_io(&ctg_io_info, type_info, fspace, mspace) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish shared collective MPI-IO")
 #ifdef H5D_DEBUG
   if(H5DEBUG(D))
@@ -1249,11 +1260,11 @@ done:
         H5MM_xfree(chunk_addr);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_multi_chunk_collective_io */
+} /* end H5D__multi_chunk_collective_io */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_multi_chunk_collective_io_no_opt
+ * Function:    H5D__multi_chunk_collective_io_no_opt
  *
  * Purpose:     To do collective IO without any optimization per chunk base
  *              The internal independent IO inside HDF5 cannot handle
@@ -1280,7 +1291,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
+H5D__multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist)
 {
     H5SL_node_t    *chunk_node;           /* Current node in chunk skip list */
@@ -1295,7 +1306,7 @@ H5D_multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
     H5D_mpio_actual_io_mode_t actual_io_mode = H5D_MPIO_NO_COLLECTIVE; /*Local variable for tracking the I/O modes used. */
     herr_t          ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
 #ifdef H5D_DEBUG
 if(H5DEBUG(D)) {
@@ -1326,7 +1337,7 @@ if(H5DEBUG(D)) {
     io_info->store = &store;
 
     /* Get the min. # of chunks */
-    if(H5D_mpio_get_min_chunk(io_info, fm, &min_chunk) < 0)
+    if(H5D__mpio_get_min_chunk(io_info, fm, &min_chunk) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get minimum number of chunk")
     HDassert(min_chunk >= 0);
 
@@ -1360,7 +1371,7 @@ if(H5DEBUG(D)) {
             make_ind = TRUE;
 
         /* Retrieve the chunk's address */
-        if(H5D_chunk_lookup(io_info->dset, io_info->dxpl_id, chunk_info->coords,
+        if(H5D__chunk_lookup(io_info->dset, io_info->dxpl_id, chunk_info->coords,
                 chunk_info->index, &udata) < 0)
             HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL, "couldn't get chunk info from skipped list")
 
@@ -1372,14 +1383,14 @@ if(H5DEBUG(D)) {
             htri_t cacheable;               /* Whether the chunk is cacheable */
 
             /* Switch to independent I/O */
-            if(H5D_ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_INDEPENDENT) < 0)
+            if(H5D__ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_INDEPENDENT) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to independent I/O")
 
             /* Update the local variable tracking the dxpl's actual io mode */
             actual_io_mode = actual_io_mode | H5D_MPIO_CHUNK_INDEPENDENT;
 
             /* Load the chunk into cache and lock it. */
-            if((cacheable = H5D_chunk_cacheable(io_info, udata.addr,
+            if((cacheable = H5D__chunk_cacheable(io_info, udata.addr,
                     io_info->op_type == H5D_IO_OP_WRITE)) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't tell if chunk is cacheable")
             if(cacheable) {
@@ -1394,7 +1405,7 @@ if(H5DEBUG(D)) {
                     entire_chunk = FALSE;
 
                 /* Lock the chunk into the cache */
-                if(NULL == (chunk = H5D_chunk_lock(io_info, &udata, entire_chunk)))
+                if(NULL == (chunk = H5D__chunk_lock(io_info, &udata, entire_chunk)))
                     HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to read raw data chunk")
 
                 /* Set up the storage buffer information for this chunk */
@@ -1427,7 +1438,7 @@ if(H5DEBUG(D)) {
 
             /* Release the cache lock on the chunk. */
             if(chunk)
-                if(H5D_chunk_unlock(io_info, &udata, (io_info->op_type == H5D_IO_OP_WRITE), chunk, accessed_bytes) < 0)
+                if(H5D__chunk_unlock(io_info, &udata, (io_info->op_type == H5D_IO_OP_WRITE), chunk, accessed_bytes) < 0)
                     HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to unlock raw data chunk")
         } /* end if */
         else { /*collective I/O */
@@ -1437,12 +1448,12 @@ if(H5DEBUG(D)) {
             /* Update the local variable tracking the dxpl's actual io Mode. */
             actual_io_mode = actual_io_mode | H5D_MPIO_CHUNK_COLLECTIVE;
 
-            if(H5D_inter_collective_io(&ctg_io_info, type_info, chunk_info->fspace, chunk_info->mspace) < 0)
+            if(H5D__inter_collective_io(&ctg_io_info, type_info, chunk_info->fspace, chunk_info->mspace) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL,"couldn't finish shared collective MPI-IO")
         } /* end else */
 
         if(make_coll)
-            if(H5D_ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE) < 0)
+            if(H5D__ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to independent I/O")
 
         /* Get the next chunk node in the skip list */
@@ -1455,11 +1466,11 @@ if(H5DEBUG(D)) {
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_multi_chunk_collective_io_no_opt */
+} /* end H5D__multi_chunk_collective_io_no_opt */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_inter_collective_io
+ * Function:    H5D__inter_collective_io
  *
  * Purpose:     Routine for the shared part of collective IO between multiple chunk
  *              collective IO and contiguous collective IO
@@ -1472,7 +1483,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_inter_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__inter_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     const H5S_t *file_space, const H5S_t *mem_space)
 {
     int mpi_buf_count;                  /* # of MPI types */
@@ -1482,7 +1493,7 @@ H5D_inter_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
     int                 mpi_code;       /* MPI return code */
     herr_t       ret_value = SUCCEED;   /* return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     if((file_space != NULL) && (mem_space != NULL)) {
         int  mpi_file_count;         /* Number of file "objects" to transfer */
@@ -1508,7 +1519,7 @@ if(H5DEBUG(D))
 #endif
 
     /* Perform final collective I/O operation */
-    if(H5D_final_collective_io(io_info, type_info, (hsize_t)mpi_buf_count, &mpi_file_type, &mpi_buf_type) < 0)
+    if(H5D__final_collective_io(io_info, type_info, (hsize_t)mpi_buf_count, &mpi_file_type, &mpi_buf_type) < 0)
         HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish collective MPI-IO")
 
 done:
@@ -1524,11 +1535,11 @@ if(H5DEBUG(D))
 #endif
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_inter_collective_io() */
+} /* end H5D__inter_collective_io() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_final_collective_io
+ * Function:    H5D__final_collective_io
  *
  * Purpose:     Routine for the common part of collective IO with different storages.
  *
@@ -1540,18 +1551,16 @@ if(H5DEBUG(D))
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_final_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__final_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t mpi_buf_count, MPI_Datatype *mpi_file_type, MPI_Datatype *mpi_buf_type)
 {
-    hbool_t     plist_is_setup = FALSE; /* Whether the dxpl has been customized */
     herr_t      ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Pass buf type, file type to the file driver.  */
-    if(H5FD_mpi_setup_collective(io_info->dxpl_id, *mpi_buf_type, *mpi_file_type) < 0)
+    if(H5FD_mpi_setup_collective(io_info->dxpl_id, mpi_buf_type, mpi_file_type) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set MPI-I/O properties")
-    plist_is_setup = TRUE;
 
     if(io_info->op_type == H5D_IO_OP_WRITE) {
         if((io_info->io_ops.single_write)(io_info, type_info, mpi_buf_count, NULL, NULL) < 0)
@@ -1563,21 +1572,44 @@ H5D_final_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
     } /* end else */
 
 done:
-    /* Reset the dxpl settings */
-    if(plist_is_setup)
-        if(H5FD_mpi_teardown_collective(io_info->dxpl_id) < 0)
-            HDONE_ERROR(H5E_DATASPACE, H5E_CANTFREE, FAIL, "unable to reset dxpl values")
-
 #ifdef H5D_DEBUG
 if(H5DEBUG(D))
     HDfprintf(H5DEBUG(D),"ret_value before leaving final_collective_io=%d\n",ret_value);
 #endif
       FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_final_collective_io */
+} /* end H5D__final_collective_io */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_sort_chunk
+ * Function:    H5D__cmp_chunk_addr
+ *
+ * Purpose:     Routine to compare chunk addresses
+ *
+ * Description: Callback for qsort() to compare chunk addresses
+ *
+ * Return:      -1, 0, 1
+ *
+ * Programmer:  Muqun Yang
+ *              Monday, Feb. 13th, 2006
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5D__cmp_chunk_addr(const void *chunk_addr_info1, const void *chunk_addr_info2)
+{
+   haddr_t addr1, addr2;
+
+   FUNC_ENTER_STATIC_NOERR
+
+   addr1 = ((const H5D_chunk_addr_info_t *)chunk_addr_info1)->chunk_addr;
+   addr2 = ((const H5D_chunk_addr_info_t *)chunk_addr_info2)->chunk_addr;
+
+   FUNC_LEAVE_NOAPI(H5F_addr_cmp(addr1, addr2))
+} /* end H5D__cmp_chunk_addr() */
+
+
+/*-------------------------------------------------------------------------
+ * Function:    H5D__sort_chunk
  *
  * Purpose:     Routine to sort chunks in increasing order of chunk address
  *              Each chunk address is also obtained.
@@ -1602,7 +1634,7 @@ if(H5DEBUG(D))
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_sort_chunk(H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
+H5D__sort_chunk(H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
     H5D_chunk_addr_info_t chunk_addr_info_array[], int sum_chunk)
 {
     H5SL_node_t    *chunk_node;         /* Current node in chunk skip list */
@@ -1617,7 +1649,7 @@ H5D_sort_chunk(H5D_io_info_t *io_info, const H5D_chunk_map_t *fm,
     int             i;                          /* Local index variable */
     herr_t          ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Retrieve # of MPI processes */
     if((mpi_size = H5F_mpi_get_size(io_info->dset->oloc.file)) < 0)
@@ -1658,7 +1690,7 @@ if(H5DEBUG(D))
             HGOTO_ERROR(H5E_IO, H5E_MPI, FAIL, "unable to obtain mpi rank")
 
         if(mpi_rank == 0) {
-            if(H5D_chunk_addrmap(io_info, total_chunk_addr_array) < 0)
+            if(H5D__chunk_addrmap(io_info, total_chunk_addr_array) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get chunk address")
         } /* end if */
 
@@ -1681,7 +1713,7 @@ if(H5DEBUG(D))
             H5D_chunk_ud_t udata;   /* User data for querying chunk info */
 
             /* Get address of chunk */
-            if(H5D_chunk_lookup(io_info->dset, io_info->dxpl_id,
+            if(H5D__chunk_lookup(io_info->dset, io_info->dxpl_id,
                     chunk_info->coords, chunk_info->index, &udata) < 0)
                 HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL, "couldn't get chunk info from skipped list")
             chunk_addr = udata.addr;
@@ -1709,7 +1741,7 @@ if(H5DEBUG(D))
     if(do_sort) {
         size_t num_chunks = H5SL_count(fm->sel_chunks);
 
-        HDqsort(chunk_addr_info_array, num_chunks, sizeof(chunk_addr_info_array[0]), H5D_cmp_chunk_addr);
+        HDqsort(chunk_addr_info_array, num_chunks, sizeof(chunk_addr_info_array[0]), H5D__cmp_chunk_addr);
     } /* end if */
 
 done:
@@ -1717,11 +1749,11 @@ done:
         H5MM_xfree(total_chunk_addr_array);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_sort_chunk() */
+} /* end H5D__sort_chunk() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5D_obtain_mpio_mode
+ * Function:    H5D__obtain_mpio_mode
  *
  * Purpose:     Routine to obtain each io mode(collective,independent or none) for each chunk;
  *              Each chunk address is also obtained.
@@ -1757,7 +1789,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
+H5D__obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
     H5P_genplist_t *dx_plist, uint8_t assign_io_mode[], haddr_t chunk_addr[])
 {
     int               total_chunks;
@@ -1780,7 +1812,7 @@ H5D_obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
 #endif
     herr_t            ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Assign the rank 0 to the root */
     root              = 0;
@@ -1797,7 +1829,7 @@ H5D_obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
     percent_nproc_per_chunk = H5P_peek_unsigned(dx_plist, H5D_XFER_MPIO_CHUNK_OPT_RATIO_NAME);
     chunk_opt_mode = (H5FD_mpio_chunk_opt_t)H5P_peek_unsigned(dx_plist, H5D_XFER_MPIO_CHUNK_OPT_HARD_NAME);
     if((chunk_opt_mode == H5FD_MPIO_CHUNK_MULTI_IO) || (percent_nproc_per_chunk == 0)) {
-        if(H5D_chunk_addrmap(io_info, chunk_addr) < 0)
+        if(H5D__chunk_addrmap(io_info, chunk_addr) < 0)
            HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get chunk address");
         for(ic = 0; ic < total_chunks; ic++)
            assign_io_mode[ic] = H5D_CHUNK_IO_MODE_COL;
@@ -1837,7 +1869,7 @@ H5D_obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
         nproc_per_chunk = (int*)H5MM_calloc(total_chunks * sizeof(int));
 
         /* calculating the chunk address */
-        if(H5D_chunk_addrmap(io_info, chunk_addr) < 0) {
+        if(H5D__chunk_addrmap(io_info, chunk_addr) < 0) {
             HDfree(nproc_per_chunk);
             HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get chunk address")
         } /* end if */
@@ -1916,19 +1948,6 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_obtain_mpio_mode() */
-
-static int
-H5D_cmp_chunk_addr(const void *chunk_addr_info1, const void *chunk_addr_info2)
-{
-   haddr_t addr1, addr2;
-
-   FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-   addr1 = ((const H5D_chunk_addr_info_t *)chunk_addr_info1)->chunk_addr;
-   addr2 = ((const H5D_chunk_addr_info_t *)chunk_addr_info2)->chunk_addr;
-
-   FUNC_LEAVE_NOAPI(H5F_addr_cmp(addr1, addr2))
-}
+} /* end H5D__obtain_mpio_mode() */
 #endif  /* H5_HAVE_PARALLEL */
 
diff --git a/src/H5Doh.c b/src/H5Doh.c
index 70884e8..62600b4 100644
--- a/src/H5Doh.c
+++ b/src/H5Doh.c
@@ -45,18 +45,17 @@
 /********************/
 /* Local Prototypes */
 /********************/
-static void *H5O_dset_get_copy_file_udata(void);
-static void H5O_dset_free_copy_file_udata(void *);
-static htri_t H5O_dset_isa(H5O_t *loc);
-static hid_t H5O_dset_open(const H5G_loc_t *obj_loc, hid_t lapl_id,
+static void *H5O__dset_get_copy_file_udata(void);
+static void H5O__dset_free_copy_file_udata(void *);
+static htri_t H5O__dset_isa(H5O_t *loc);
+static hid_t H5O__dset_open(const H5G_loc_t *obj_loc, hid_t lapl_id,
     hid_t dxpl_id, hbool_t app_ref);
-static void *H5O_dset_create(H5F_t *f, void *_crt_info, H5G_loc_t *obj_loc,
+static void *H5O__dset_create(H5F_t *f, void *_crt_info, H5G_loc_t *obj_loc,
     hid_t dxpl_id);
-static H5O_loc_t *H5O_dset_get_oloc(hid_t obj_id);
-static herr_t H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
+static H5O_loc_t *H5O__dset_get_oloc(hid_t obj_id);
+static herr_t H5O__dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
     H5_ih_info_t *bh_info);
-
-static herr_t H5O_dset_flush(H5G_loc_t *obj_loc, hid_t dxpl_id);
+static herr_t H5O__dset_flush(H5G_loc_t *obj_loc, hid_t dxpl_id);
 
 
 /*********************/
@@ -77,14 +76,14 @@ static herr_t H5O_dset_flush(H5G_loc_t *obj_loc, hid_t dxpl_id);
 const H5O_obj_class_t H5O_OBJ_DATASET[1] = {{
     H5O_TYPE_DATASET,		/* object type			*/
     "dataset",			/* object name, for debugging	*/
-    H5O_dset_get_copy_file_udata, /* get 'copy file' user data	*/
-    H5O_dset_free_copy_file_udata, /* free 'copy file' user data	*/
-    H5O_dset_isa, 		/* "isa" message		*/
-    H5O_dset_open, 		/* open an object of this class */
-    H5O_dset_create, 		/* create an object of this class */
-    H5O_dset_get_oloc, 		/* get an object header location for an object */
-    H5O_dset_bh_info, 		/* get the index & heap info for an object */
-    H5O_dset_flush 		/* flush an opened object of this class */
+    H5O__dset_get_copy_file_udata, /* get 'copy file' user data	*/
+    H5O__dset_free_copy_file_udata, /* free 'copy file' user data	*/
+    H5O__dset_isa, 		/* "isa" message		*/
+    H5O__dset_open, 		/* open an object of this class */
+    H5O__dset_create, 		/* create an object of this class */
+    H5O__dset_get_oloc, 	/* get an object header location for an object */
+    H5O__dset_bh_info, 		/* get the index & heap info for an object */
+    H5O__dset_flush 		/* flush an opened object of this class */
 }};
 
 /* Declare a free list to manage the H5D_copy_file_ud_t struct */
@@ -92,7 +91,7 @@ H5FL_DEFINE(H5D_copy_file_ud_t);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5O_dset_get_copy_file_udata
+ * Function:	H5O__dset_get_copy_file_udata
  *
  * Purpose:	Allocates the user data needed for copying a dataset's
  *		object header from file to file.
@@ -107,11 +106,11 @@ H5FL_DEFINE(H5D_copy_file_ud_t);
  *-------------------------------------------------------------------------
  */
 static void *
-H5O_dset_get_copy_file_udata(void)
+H5O__dset_get_copy_file_udata(void)
 {
     void *ret_value;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Allocate space for the 'copy file' user data for copying datasets */
     if(NULL == (ret_value = H5FL_CALLOC(H5D_copy_file_ud_t)))
@@ -119,11 +118,11 @@ H5O_dset_get_copy_file_udata(void)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_get_copy_file_udata() */
+} /* end H5O__dset_get_copy_file_udata() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5O_dset_free_copy_file_udata
+ * Function:	H5O__dset_free_copy_file_udata
  *
  * Purpose:	Release the user data needed for copying a dataset's
  *		object header from file to file.
@@ -133,18 +132,14 @@ done:
  * Programmer:	Quincey Koziol
  *              Monday, November 21, 2005
  *
- * Modifications: Peter Cao
- *                Tuesday, December 27, 2005
- *                Free filter pipeline for copying a dataset
- *
  *-------------------------------------------------------------------------
  */
 static void
-H5O_dset_free_copy_file_udata(void *_udata)
+H5O__dset_free_copy_file_udata(void *_udata)
 {
     H5D_copy_file_ud_t *udata = (H5D_copy_file_ud_t *)_udata;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(udata);
@@ -165,11 +160,11 @@ H5O_dset_free_copy_file_udata(void *_udata)
     udata = H5FL_FREE(H5D_copy_file_ud_t, udata);
 
     FUNC_LEAVE_NOAPI_VOID
-} /* end H5O_dset_free_copy_file_udata() */
+} /* end H5O__dset_free_copy_file_udata() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5O_dset_isa
+ * Function:	H5O__dset_isa
  *
  * Purpose:	Determines if an object has the requisite messages for being
  *		a dataset.
@@ -186,12 +181,12 @@ H5O_dset_free_copy_file_udata(void *_udata)
  *-------------------------------------------------------------------------
  */
 static htri_t
-H5O_dset_isa(H5O_t *oh)
+H5O__dset_isa(H5O_t *oh)
 {
     htri_t	exists;                 /* Flag if header message of interest exists */
     htri_t	ret_value = TRUE;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(oh);
 
@@ -209,11 +204,11 @@ H5O_dset_isa(H5O_t *oh)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_isa() */
+} /* end H5O__dset_isa() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5O_dset_open
+ * Function:	H5O__dset_open
  *
  * Purpose:	Open a dataset at a particular location
  *
@@ -226,14 +221,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static hid_t
-H5O_dset_open(const H5G_loc_t *obj_loc, hid_t lapl_id, hid_t dxpl_id, hbool_t app_ref)
+H5O__dset_open(const H5G_loc_t *obj_loc, hid_t lapl_id, hid_t dxpl_id, hbool_t app_ref)
 {
     H5D_t       *dset = NULL;           /* Dataset opened */
     htri_t  isdapl;                 /* lapl_id is a dapl */
     hid_t   dapl_id;                /* dapl to use to open this dataset */
     hid_t	ret_value;              /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(obj_loc);
 
@@ -263,11 +258,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to release dataset")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_open() */
+} /* end H5O__dset_open() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5O_dset_create
+ * Function:	H5O__dset_create
  *
  * Purpose:	Create a dataset in a file
  *
@@ -280,13 +275,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static void *
-H5O_dset_create(H5F_t *f, void *_crt_info, H5G_loc_t *obj_loc, hid_t dxpl_id)
+H5O__dset_create(H5F_t *f, void *_crt_info, H5G_loc_t *obj_loc, hid_t dxpl_id)
 {
     H5D_obj_create_t *crt_info = (H5D_obj_create_t *)_crt_info; /* Dataset creation parameters */
     H5D_t *dset = NULL;         /* New dataset created */
     void *ret_value;            /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity checks */
     HDassert(f);
@@ -294,7 +289,7 @@ H5O_dset_create(H5F_t *f, void *_crt_info, H5G_loc_t *obj_loc, hid_t dxpl_id)
     HDassert(obj_loc);
 
     /* Create the the dataset */
-    if(NULL == (dset = H5D_create(f, crt_info->type_id, crt_info->space, crt_info->dcpl_id, crt_info->dapl_id, dxpl_id)))
+    if(NULL == (dset = H5D__create(f, crt_info->type_id, crt_info->space, crt_info->dcpl_id, crt_info->dapl_id, dxpl_id)))
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "unable to create dataset")
 
     /* Set up the new dataset's location */
@@ -312,11 +307,11 @@ done:
             HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, NULL, "unable to release dataset")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_create() */
+} /* end H5O__dset_create() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5O_dset_get_oloc
+ * Function:	H5O__dset_get_oloc
  *
  * Purpose:	Retrieve the object header location for an open object
  *
@@ -329,12 +324,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5O_loc_t *
-H5O_dset_get_oloc(hid_t obj_id)
+H5O__dset_get_oloc(hid_t obj_id)
 {
     H5D_t       *dset;                  /* Dataset opened */
     H5O_loc_t	*ret_value;             /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get the dataset */
     if(NULL == (dset = (H5D_t *)H5I_object(obj_id)))
@@ -346,11 +341,11 @@ H5O_dset_get_oloc(hid_t obj_id)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_get_oloc() */
+} /* end H5O__dset_get_oloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5O_dset_bh_info
+ * Function:    H5O__dset_bh_info
  *
  * Purpose:     Returns the amount of btree storage that is used for chunked
  *              dataset.
@@ -368,7 +363,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
+H5O__dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
 {
     H5O_layout_t        layout;         	/* Data storage layout message */
     H5O_pline_t         pline;                  /* I/O pipeline message */
@@ -379,7 +374,7 @@ H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
     htri_t		exists;                 /* Flag if header message of interest exists */
     herr_t      	ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(f);
@@ -392,7 +387,7 @@ H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
     layout_read = TRUE;
 
     /* Check for chunked dataset storage */
-    if(layout.type == H5D_CHUNKED && H5D_chunk_is_space_alloc(&layout.storage)) {
+    if(layout.type == H5D_CHUNKED && H5D__chunk_is_space_alloc(&layout.storage)) {
         /* Check for I/O pipeline message */
         if((exists = H5O_msg_exists_oh(oh, H5O_PLINE_ID)) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to read object header")
@@ -404,7 +399,7 @@ H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
         else
             HDmemset(&pline, 0, sizeof(pline));
 
-        if(H5D_chunk_bh_info(f, dxpl_id, &layout, &pline, &(bh_info->index_size)) < 0)
+        if(H5D__chunk_bh_info(f, dxpl_id, &layout, &pline, &(bh_info->index_size)) < 0)
             HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, FAIL, "can't determine chunked dataset btree info")
     } /* end if */
 
@@ -412,7 +407,7 @@ H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
     if((exists = H5O_msg_exists_oh(oh, H5O_EFL_ID)) < 0)
 	HGOTO_ERROR(H5E_OHDR, H5E_NOTFOUND, FAIL, "unable to check for EFL message")
 
-    if(exists && H5D_efl_is_space_alloc(&layout.storage)) {
+    if(exists && H5D__efl_is_space_alloc(&layout.storage)) {
         /* Start with clean EFL info */
         HDmemset(&efl, 0, sizeof(efl));
 
@@ -422,7 +417,7 @@ H5O_dset_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info)
         efl_read = TRUE;
 
 	/* Get size of local heap for EFL message's file list */
-	if(H5D_efl_bh_info(f, dxpl_id, &efl, &(bh_info->heap_size)) < 0)
+	if(H5D__efl_bh_info(f, dxpl_id, &efl, &(bh_info->heap_size)) < 0)
             HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, FAIL, "can't determine EFL heap info")
     } /* end if */
 
@@ -436,11 +431,11 @@ done:
         HDONE_ERROR(H5E_DATASET, H5E_CANTRESET, FAIL, "unable to reset external file list message")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_bh_info() */
+} /* end H5O__dset_bh_info() */
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5O_dset_flush
+ * Function:    H5O__dset_flush
  *
  * Purpose:     To flush any dataset information cached in memory
  *
@@ -453,13 +448,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5O_dset_flush(H5G_loc_t *obj_loc, hid_t dxpl_id)
+H5O__dset_flush(H5G_loc_t *obj_loc, hid_t dxpl_id)
 {
-    H5D_t       *dset;                  /* Dataset opened */
+    H5D_t       *dset = NULL;          /* Dataset opened */
     H5O_type_t 	obj_type;              /* Type of object at location */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(obj_loc);
     HDassert(obj_loc->oloc);
@@ -475,11 +470,12 @@ H5O_dset_flush(H5G_loc_t *obj_loc, hid_t dxpl_id)
     if(NULL == (dset = H5D_open(obj_loc, H5P_DATASET_ACCESS_DEFAULT, dxpl_id)))
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "unable to open dataset")
     
-    if(H5D_flush_real(dset, dxpl_id) < 0)
+    if(H5D__flush_real(dset, dxpl_id) < 0)
 	HDONE_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to flush cached dataset info")
 
 done:
     if(dset && H5D_close(dset) < 0)
-	HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, NULL, "unable to release dataset")
+	HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to release dataset")
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O_dset_flush() */
+} /* end H5O__dset_flush() */
+
diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h
index 40317f3..ed6da8f 100644
--- a/src/H5Dpkg.h
+++ b/src/H5Dpkg.h
@@ -41,9 +41,6 @@
 /* Package Private Macros */
 /**************************/
 
-/* The number of reserved IDs in dataset ID group */
-#define H5D_RESERVED_ATOMS  0
-
 /* Set the minimum object header size to create objects with */
 #define H5D_MINHDR_SIZE 256
 
@@ -527,135 +524,137 @@ H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_BTREE[1];
 /* Package Private Prototypes */
 /******************************/
 
-H5_DLL H5D_t *H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space,
+H5_DLL H5D_t *H5D__create(H5F_t *file, hid_t type_id, const H5S_t *space,
     hid_t dcpl_id, hid_t dapl_id, hid_t dxpl_id);
 H5_DLL H5D_t *H5D__create_named(const H5G_loc_t *loc, const char *name,
     hid_t type_id, const H5S_t *space, hid_t lcpl_id, hid_t dcpl_id,
     hid_t dapl_id, hid_t dxpl_id);
-H5_DLL herr_t H5D_get_space_status(H5D_t *dset, H5D_space_status_t *allocation,
+H5_DLL herr_t H5D__get_space_status(H5D_t *dset, H5D_space_status_t *allocation,
     hid_t dxpl_id);
-H5_DLL herr_t H5D_alloc_storage(H5D_t *dset, hid_t dxpl_id, H5D_time_alloc_t time_alloc,
+H5_DLL herr_t H5D__alloc_storage(H5D_t *dset, hid_t dxpl_id, H5D_time_alloc_t time_alloc,
     hbool_t full_overwrite, hsize_t old_dim[]);
-H5_DLL hsize_t H5D_get_storage_size(H5D_t *dset, hid_t dxpl_id);
-H5_DLL haddr_t H5D_get_offset(const H5D_t *dset);
-H5_DLL herr_t H5D_iterate(void *buf, hid_t type_id, const H5S_t *space,
+H5_DLL herr_t H5D__get_storage_size(H5D_t *dset, hid_t dxpl_id, hsize_t *storage_size);
+H5_DLL haddr_t H5D__get_offset(const H5D_t *dset);
+H5_DLL herr_t H5D__iterate(void *buf, hid_t type_id, const H5S_t *space,
     H5D_operator_t op, void *operator_data);
-H5_DLL void * H5D_vlen_get_buf_size_alloc(size_t size, void *info);
-H5_DLL herr_t H5D_vlen_get_buf_size(void *elem, hid_t type_id, unsigned ndim,
+H5_DLL void *H5D__vlen_get_buf_size_alloc(size_t size, void *info);
+H5_DLL herr_t H5D__vlen_get_buf_size(void *elem, hid_t type_id, unsigned ndim,
     const hsize_t *point, void *op_data);
-H5_DLL herr_t H5D_check_filters(H5D_t *dataset);
-H5_DLL herr_t H5D_set_extent(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id);
-H5_DLL herr_t H5D_get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache);
-H5_DLL herr_t H5D_flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id);
-H5_DLL herr_t H5D_mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags);
-H5_DLL herr_t H5D_flush_real(H5D_t *dataset, hid_t dxpl_id);
+H5_DLL herr_t H5D__check_filters(H5D_t *dataset);
+H5_DLL herr_t H5D__set_extent(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id);
+H5_DLL herr_t H5D__get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache);
+H5_DLL herr_t H5D__flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id);
+H5_DLL herr_t H5D__mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags);
+H5_DLL herr_t H5D__flush_real(H5D_t *dataset, hid_t dxpl_id);
 
 /* Functions that perform direct serial I/O operations */
-H5_DLL herr_t H5D_select_read(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__select_read(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
-H5_DLL herr_t H5D_select_write(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__select_write(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
 
 /* Functions that perform scatter-gather serial I/O operations */
-H5_DLL herr_t H5D_scatter_mem(const void *_tscat_buf,
+H5_DLL herr_t H5D__scatter_mem(const void *_tscat_buf,
     const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts,
     const H5D_dxpl_cache_t *dxpl_cache, void *_buf);
-H5_DLL herr_t H5D_scatgath_read(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__scatgath_read(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
-H5_DLL herr_t H5D_scatgath_write(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__scatgath_write(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
 
 /* Functions that operate on dataset's layout information */
-H5_DLL herr_t H5D_layout_set_io_ops(const H5D_t *dataset);
-H5_DLL size_t H5D_layout_meta_size(const H5F_t *f, const H5O_layout_t *layout,
+H5_DLL herr_t H5D__layout_set_io_ops(const H5D_t *dataset);
+H5_DLL size_t H5D__layout_meta_size(const H5F_t *f, const H5O_layout_t *layout,
     hbool_t include_compact_data);
-H5_DLL herr_t H5D_layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh,
+H5_DLL herr_t H5D__layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh,
     H5D_t *dset, hid_t dapl_id);
-H5_DLL herr_t H5D_layout_oh_read(H5D_t *dset, hid_t dxpl_id, hid_t dapl_id,
+H5_DLL herr_t H5D__layout_oh_read(H5D_t *dset, hid_t dxpl_id, hid_t dapl_id,
     H5P_genplist_t *plist);
-H5_DLL herr_t H5D_layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh,
+H5_DLL herr_t H5D__layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh,
     unsigned update_flags);
 
 /* Functions that operate on contiguous storage */
-H5_DLL herr_t H5D_contig_alloc(H5F_t *f, hid_t dxpl_id,
+H5_DLL herr_t H5D__contig_alloc(H5F_t *f, hid_t dxpl_id,
     H5O_storage_contig_t *storage);
-H5_DLL hbool_t H5D_contig_is_space_alloc(const H5O_storage_t *storage);
-H5_DLL herr_t H5D_contig_fill(H5D_t *dset, hid_t dxpl_id);
-H5_DLL haddr_t H5D_contig_get_addr(const H5D_t *dset);
-H5_DLL herr_t H5D_contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5_DLL hbool_t H5D__contig_is_space_alloc(const H5O_storage_t *storage);
+H5_DLL herr_t H5D__contig_fill(H5D_t *dset, hid_t dxpl_id);
+H5_DLL herr_t H5D__contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *fm);
-H5_DLL herr_t H5D_contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5_DLL herr_t H5D__contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *fm);
-H5_DLL herr_t H5D_contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
+H5_DLL herr_t H5D__contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
     H5F_t *f_dst, H5O_storage_contig_t *storage_dst, H5T_t *src_dtype,
     H5O_copy_t *cpy_info, hid_t dxpl_id);
+H5_DLL herr_t H5D__contig_delete(H5F_t *f, hid_t dxpl_id,
+    const H5O_storage_t *store);
+
 
 /* Functions that operate on chunked dataset storage */
-H5_DLL htri_t H5D_chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr,
+H5_DLL htri_t H5D__chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr,
     hbool_t write_op);
-H5_DLL herr_t H5D_chunk_cinfo_cache_reset(H5D_chunk_cached_t *last);
-H5_DLL herr_t H5D_chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id);
-H5_DLL herr_t H5D_chunk_set_info(const H5D_t *dset);
-H5_DLL herr_t H5D_chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset,
+H5_DLL herr_t H5D__chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id);
+H5_DLL herr_t H5D__chunk_set_info(const H5D_t *dset);
+H5_DLL herr_t H5D__chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset,
     hid_t dapl_id);
-H5_DLL hbool_t H5D_chunk_is_space_alloc(const H5O_storage_t *storage);
-H5_DLL herr_t H5D_chunk_lookup(const H5D_t *dset, hid_t dxpl_id,
+H5_DLL hbool_t H5D__chunk_is_space_alloc(const H5O_storage_t *storage);
+H5_DLL herr_t H5D__chunk_lookup(const H5D_t *dset, hid_t dxpl_id,
     const hsize_t *chunk_offset, hsize_t chunk_idx, H5D_chunk_ud_t *udata);
-H5_DLL void *H5D_chunk_lock(const H5D_io_info_t *io_info,
+H5_DLL void *H5D__chunk_lock(const H5D_io_info_t *io_info,
     H5D_chunk_ud_t *udata, hbool_t relax);
-H5_DLL herr_t H5D_chunk_unlock(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__chunk_unlock(const H5D_io_info_t *io_info,
     const H5D_chunk_ud_t *udata, hbool_t dirty, void *chunk,
     uint32_t naccessed);
-H5_DLL herr_t H5D_chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes);
-H5_DLL herr_t H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id,
+H5_DLL herr_t H5D__chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes);
+H5_DLL herr_t H5D__chunk_allocate(H5D_t *dset, hid_t dxpl_id,
     hbool_t full_overwrite, hsize_t old_dim[]);
-H5_DLL herr_t H5D_chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id,
+H5_DLL herr_t H5D__chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id,
     const hsize_t *old_dim);
 #ifdef H5_HAVE_PARALLEL
-H5_DLL herr_t H5D_chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[]);
+H5_DLL herr_t H5D__chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[]);
 #endif /* H5_HAVE_PARALLEL */
-H5_DLL herr_t H5D_chunk_update_cache(H5D_t *dset, hid_t dxpl_id);
-H5_DLL herr_t H5D_chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
+H5_DLL herr_t H5D__chunk_update_cache(H5D_t *dset, hid_t dxpl_id);
+H5_DLL herr_t H5D__chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src,
     H5O_layout_chunk_t *layout_src, H5F_t *f_dst, H5O_storage_chunk_t *storage_dst,
     const H5S_extent_t *ds_extent_src, const H5T_t *dt_src,
     const H5O_pline_t *pline_src, H5O_copy_t *cpy_info, hid_t dxpl_id);
-H5_DLL herr_t H5D_chunk_bh_info(H5F_t *f, hid_t dxpl_id, H5O_layout_t *layout,
+H5_DLL herr_t H5D__chunk_bh_info(H5F_t *f, hid_t dxpl_id, H5O_layout_t *layout,
     const H5O_pline_t *pline, hsize_t *btree_size);
-H5_DLL herr_t H5D_chunk_dump_index(H5D_t *dset, hid_t dxpl_id, FILE *stream);
-H5_DLL herr_t H5D_chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset);
+H5_DLL herr_t H5D__chunk_dump_index(H5D_t *dset, hid_t dxpl_id, FILE *stream);
+H5_DLL herr_t H5D__chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset);
+H5_DLL herr_t H5D__chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
+    H5O_storage_t *store);
 #ifdef H5D_CHUNK_DEBUG
-H5_DLL herr_t H5D_chunk_stats(const H5D_t *dset, hbool_t headers);
+H5_DLL herr_t H5D__chunk_stats(const H5D_t *dset, hbool_t headers);
 #endif /* H5D_CHUNK_DEBUG */
 
 /* Functions that operate on compact dataset storage */
-H5_DLL herr_t H5D_compact_fill(H5D_t *dset, hid_t dxpl_id);
-H5_DLL herr_t H5D_compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src,
+H5_DLL herr_t H5D__compact_fill(H5D_t *dset, hid_t dxpl_id);
+H5_DLL herr_t H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src,
     H5F_t *f_dst, H5O_storage_compact_t *storage_dst, H5T_t *src_dtype,
     H5O_copy_t *cpy_info, hid_t dxpl_id);
 
 /* Functions that operate on EFL (External File List)*/
-H5_DLL hbool_t H5D_efl_is_space_alloc(const H5O_storage_t *storage);
-H5_DLL herr_t H5D_efl_bh_info(H5F_t *f, hid_t dxpl_id, H5O_efl_t *efl,
+H5_DLL hbool_t H5D__efl_is_space_alloc(const H5O_storage_t *storage);
+H5_DLL herr_t H5D__efl_bh_info(H5F_t *f, hid_t dxpl_id, H5O_efl_t *efl,
     hsize_t *heap_size);
 
 /* Functions that perform fill value operations on datasets */
-H5_DLL herr_t H5D_fill(const void *fill, const H5T_t *fill_type, void *buf,
+H5_DLL herr_t H5D__fill(const void *fill, const H5T_t *fill_type, void *buf,
     const H5T_t *buf_type, const H5S_t *space, hid_t dxpl_id);
-H5_DLL herr_t H5D_fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
+H5_DLL herr_t H5D__fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
     H5MM_allocate_t alloc_func, void *alloc_info,
     H5MM_free_t free_func, void *free_info,
     const H5O_fill_t *fill, const H5T_t *dset_type, hid_t dset_type_id,
     size_t nelmts, size_t min_buf_size, hid_t dxpl_id);
-H5_DLL herr_t H5D_fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts,
+H5_DLL herr_t H5D__fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts,
     hid_t dxpl_id);
-H5_DLL herr_t H5D_fill_release(H5D_fill_buf_info_t *fb_info);
-H5_DLL herr_t H5D_fill_term(H5D_fill_buf_info_t *fb_info);
+H5_DLL herr_t H5D__fill_term(H5D_fill_buf_info_t *fb_info);
 
 #ifdef H5_HAVE_PARALLEL
 
@@ -665,44 +664,45 @@ H5_DLL herr_t H5D_fill_term(H5D_fill_buf_info_t *fb_info);
 #endif /*H5Dmpio_DEBUG*/
 #endif/*H5S_DEBUG*/
 /* MPI-IO function to read, it will select either regular or irregular read */
-H5_DLL herr_t H5D_mpio_select_read(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__mpio_select_read(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
 
 /* MPI-IO function to write, it will select either regular or irregular read */
-H5_DLL herr_t H5D_mpio_select_write(const H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__mpio_select_write(const H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
 
 /* MPI-IO functions to handle contiguous collective IO */
-H5_DLL herr_t H5D_contig_collective_read(H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__contig_collective_read(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
     const H5S_t *mem_space, H5D_chunk_map_t *fm);
-H5_DLL herr_t H5D_contig_collective_write(H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__contig_collective_write(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
     const H5S_t *mem_space, H5D_chunk_map_t *fm);
 
 /* MPI-IO functions to handle chunked collective IO */
-H5_DLL herr_t H5D_chunk_collective_read(H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__chunk_collective_read(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
     const H5S_t *mem_space, H5D_chunk_map_t *fm);
-H5_DLL herr_t H5D_chunk_collective_write(H5D_io_info_t *io_info,
+H5_DLL herr_t H5D__chunk_collective_write(H5D_io_info_t *io_info,
     const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
     const H5S_t *mem_space, H5D_chunk_map_t *fm);
 
 /* MPI-IO function to check if a direct I/O transfer is possible between
  * memory and the file */
-H5_DLL htri_t H5D_mpio_opt_possible(const H5D_io_info_t *io_info,
+H5_DLL htri_t H5D__mpio_opt_possible(const H5D_io_info_t *io_info,
     const H5S_t *file_space, const H5S_t *mem_space,
-    const H5D_type_info_t *type_info, const H5D_chunk_map_t *fm);
+    const H5D_type_info_t *type_info, const H5D_chunk_map_t *fm,
+    H5P_genplist_t *dx_plist);
 
 #endif /* H5_HAVE_PARALLEL */
 
 /* Testing functions */
 #ifdef H5D_TESTING
-H5_DLL herr_t H5D_layout_version_test(hid_t did, unsigned *version);
-H5_DLL herr_t H5D_layout_contig_size_test(hid_t did, hsize_t *size);
-H5_DLL herr_t H5D_current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused);
+H5_DLL herr_t H5D__layout_version_test(hid_t did, unsigned *version);
+H5_DLL herr_t H5D__layout_contig_size_test(hid_t did, hsize_t *size);
+H5_DLL herr_t H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused);
 #endif /* H5D_TESTING */
 
 #endif /*_H5Dpkg_H*/
diff --git a/src/H5Dprivate.h b/src/H5Dprivate.h
index 48966db..85051c3 100644
--- a/src/H5Dprivate.h
+++ b/src/H5Dprivate.h
@@ -74,6 +74,8 @@
 #define H5D_XFER_MPIO_CHUNK_OPT_RATIO_NAME "mpio_chunk_opt_ratio"
 #define H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME "actual_chunk_opt_mode"
 #define H5D_MPIO_ACTUAL_IO_MODE_NAME    "actual_io_mode"
+#define H5D_MPIO_LOCAL_NO_COLLECTIVE_CAUSE_NAME "local_no_collective_cause"  /* cause of broken collective I/O in each process */
+#define H5D_MPIO_GLOBAL_NO_COLLECTIVE_CAUSE_NAME "global_no_collective_cause"  /* cause of broken collective I/O in all processes */
 #endif /* H5_HAVE_PARALLEL */
 #define H5D_XFER_EDC_NAME               "err_detect"    /* EDC */
 #define H5D_XFER_FILTER_CB_NAME         "filter_cb"     /* Filter callback function */
@@ -169,14 +171,8 @@ H5_DLL herr_t H5D_flush(const H5F_t *f, hid_t dxpl_id);
 H5_DLL herr_t H5D_vlen_reclaim(hid_t type_id, H5S_t *space, hid_t plist_id,
     void *buf);
 
-/* Functions that operate on contiguous storage */
-H5_DLL herr_t H5D_contig_delete(H5F_t *f, hid_t dxpl_id,
-    const H5O_storage_t *store);
-
 /* Functions that operate on chunked storage */
 H5_DLL herr_t H5D_chunk_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr);
-H5_DLL herr_t H5D_chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
-    H5O_storage_t *store);
 
 /* Functions that operate on indexed storage */
 H5_DLL herr_t H5D_btree_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream,
diff --git a/src/H5Dscatgath.c b/src/H5Dscatgath.c
index 7758619..49b6132 100644
--- a/src/H5Dscatgath.c
+++ b/src/H5Dscatgath.c
@@ -42,19 +42,19 @@
 /********************/
 /* Local Prototypes */
 /********************/
-static size_t H5D_gather_file(const H5D_io_info_t *io_info,
-    const H5S_t *file_space, H5S_sel_iter_t *file_iter, size_t nelmts,
-    void *buf);
-static herr_t H5D_scatter_file(const H5D_io_info_t *io_info,
+static herr_t H5D__scatter_file(const H5D_io_info_t *io_info,
     const H5S_t *file_space, H5S_sel_iter_t *file_iter, size_t nelmts,
     const void *buf);
-static size_t H5D_gather_mem(const void *_buf,
+static size_t H5D__gather_file(const H5D_io_info_t *io_info,
+    const H5S_t *file_space, H5S_sel_iter_t *file_iter, size_t nelmts,
+    void *buf);
+static size_t H5D__gather_mem(const void *_buf,
     const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts,
     const H5D_dxpl_cache_t *dxpl_cache, void *_tgath_buf/*out*/);
-static herr_t H5D_compound_opt_read(size_t nelmts, const H5S_t *mem_space,
+static herr_t H5D__compound_opt_read(size_t nelmts, const H5S_t *mem_space,
     H5S_sel_iter_t *iter, const H5D_dxpl_cache_t *dxpl_cache,
     const H5D_type_info_t *type_info, void *user_buf/*out*/);
-static herr_t H5D_compound_opt_write(size_t nelmts, const H5D_type_info_t *type_info);
+static herr_t H5D__compound_opt_write(size_t nelmts, const H5D_type_info_t *type_info);
 
 
 /*********************/
@@ -75,7 +75,7 @@ H5FL_SEQ_EXTERN(hsize_t);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_scatter_file
+ * Function:	H5D__scatter_file
  *
  * Purpose:	Scatters dataset elements from the type conversion buffer BUF
  *		to the file F where the data points are arranged according to
@@ -91,7 +91,7 @@ H5FL_SEQ_EXTERN(hsize_t);
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_scatter_file(const H5D_io_info_t *_io_info,
+H5D__scatter_file(const H5D_io_info_t *_io_info,
     const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts,
     const void *_buf)
 {
@@ -108,7 +108,7 @@ H5D_scatter_file(const H5D_io_info_t *_io_info,
     size_t  nelem;                 /* Number of elements used in sequences */
     herr_t  ret_value = SUCCEED;   /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(_io_info);
@@ -165,11 +165,11 @@ done:
         off = H5FL_SEQ_FREE(hsize_t, off);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_scatter_file() */
+} /* H5D__scatter_file() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_gather_file
+ * Function:	H5D__gather_file
  *
  * Purpose:	Gathers data points from file F and accumulates them in the
  *		type conversion buffer BUF.  The LAYOUT argument describes
@@ -190,7 +190,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static size_t
-H5D_gather_file(const H5D_io_info_t *_io_info,
+H5D__gather_file(const H5D_io_info_t *_io_info,
     const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts,
     void *_buf/*out*/)
 {
@@ -207,7 +207,7 @@ H5D_gather_file(const H5D_io_info_t *_io_info,
     size_t nelem;               /* Number of elements used in sequences */
     size_t ret_value = nelmts;  /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(_io_info);
@@ -266,11 +266,11 @@ done:
         off = H5FL_SEQ_FREE(hsize_t, off);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5D_gather_file() */
+} /* H5D__gather_file() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_scatter_mem
+ * Function:	H5D__scatter_mem
  *
  * Purpose:	Scatters NELMTS data points from the scatter buffer
  *		TSCAT_BUF to the application buffer BUF.  Each element is
@@ -285,7 +285,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_scatter_mem (const void *_tscat_buf, const H5S_t *space,
+H5D__scatter_mem (const void *_tscat_buf, const H5S_t *space,
     H5S_sel_iter_t *iter, size_t nelmts, const H5D_dxpl_cache_t *dxpl_cache,
     void *_buf/*out*/)
 {
@@ -301,7 +301,7 @@ H5D_scatter_mem (const void *_tscat_buf, const H5S_t *space,
     size_t nelem;               /* Number of elements used in sequences */
     herr_t ret_value = SUCCEED;   /* Number of elements scattered */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(tscat_buf);
@@ -351,11 +351,11 @@ done:
         off = H5FL_SEQ_FREE(hsize_t, off);
 
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_scatter_mem() */
+}   /* H5D__scatter_mem() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_gather_mem
+ * Function:	H5D__gather_mem
  *
  * Purpose:	Gathers dataset elements from application memory BUF and
  *		copies them into the gather buffer TGATH_BUF.
@@ -372,7 +372,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static size_t
-H5D_gather_mem(const void *_buf, const H5S_t *space,
+H5D__gather_mem(const void *_buf, const H5S_t *space,
     H5S_sel_iter_t *iter, size_t nelmts, const H5D_dxpl_cache_t *dxpl_cache,
     void *_tgath_buf/*out*/)
 {
@@ -388,7 +388,7 @@ H5D_gather_mem(const void *_buf, const H5S_t *space,
     size_t nelem;               /* Number of elements used in sequences */
     size_t ret_value = nelmts;    /* Number of elements gathered */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(buf);
@@ -438,11 +438,11 @@ done:
         off = H5FL_SEQ_FREE(hsize_t, off);
 
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_gather_mem() */
+}   /* H5D__gather_mem() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_scatgath_read
+ * Function:	H5D__scatgath_read
  *
  * Purpose:	Perform scatter/gather ead from a contiguous [piece of a] dataset.
  *
@@ -454,7 +454,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
 {
     const H5D_dxpl_cache_t *dxpl_cache = io_info->dxpl_cache;     /* Local pointer to dataset transfer info */
@@ -469,7 +469,7 @@ H5D_scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
     size_t	smine_nelmts;		/*elements per strip	*/
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(io_info);
@@ -510,7 +510,7 @@ H5D_scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
 	/*
          * Gather data
          */
-        n = H5D_gather_file(io_info, file_space, &file_iter, smine_nelmts,
+        n = H5D__gather_file(io_info, file_space, &file_iter, smine_nelmts,
                 type_info->tconv_buf/*out*/);
 	if(n != smine_nelmts)
             HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file gather failed")
@@ -520,13 +520,13 @@ H5D_scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
          * bypass the rest of steps.
          */
         if(type_info->cmpd_subset && H5T_SUBSET_FALSE != type_info->cmpd_subset->subset) {
-            if(H5D_compound_opt_read(smine_nelmts, mem_space, &mem_iter, dxpl_cache,
+            if(H5D__compound_opt_read(smine_nelmts, mem_space, &mem_iter, dxpl_cache,
                     type_info, buf /*out*/) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "datatype conversion failed")
         } /* end if */
         else {
             if(H5T_BKG_YES == type_info->need_bkg) {
-                n = H5D_gather_mem(buf, mem_space, &bkg_iter, smine_nelmts,
+                n = H5D__gather_mem(buf, mem_space, &bkg_iter, smine_nelmts,
                         dxpl_cache, type_info->bkg_buf/*out*/);
                 if(n != smine_nelmts)
                     HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "mem gather failed")
@@ -548,7 +548,7 @@ H5D_scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info
             /*
              * Scatter the data into memory.
              */
-            if(H5D_scatter_mem(type_info->tconv_buf, mem_space, &mem_iter,
+            if(H5D__scatter_mem(type_info->tconv_buf, mem_space, &mem_iter,
                     smine_nelmts, dxpl_cache, buf/*out*/) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "scatter failed")
         } /* end else */
@@ -570,11 +570,11 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_scatgath_read() */
+} /* end H5D__scatgath_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_scatgath_write
+ * Function:	H5D__scatgath_write
  *
  * Purpose:	Perform scatter/gather write to a contiguous [piece of a] dataset.
  *
@@ -586,7 +586,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
 {
     const H5D_dxpl_cache_t *dxpl_cache = io_info->dxpl_cache;     /* Local pointer to dataset transfer info */
@@ -601,7 +601,7 @@ H5D_scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
     size_t	smine_nelmts;		/*elements per strip	*/
     herr_t	ret_value = SUCCEED;	/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(io_info);
@@ -638,7 +638,7 @@ H5D_scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
          * buffer. Also gather data from the file into the background buffer
          * if necessary.
          */
-        n = H5D_gather_mem(buf, mem_space, &mem_iter, smine_nelmts,
+        n = H5D__gather_mem(buf, mem_space, &mem_iter, smine_nelmts,
                 dxpl_cache, type_info->tconv_buf/*out*/);
         if(n != smine_nelmts)
             HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "mem gather failed")
@@ -650,13 +650,13 @@ H5D_scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
          * function H5T_conv_struct_opt to protect the background data.
          */
         if(type_info->cmpd_subset && H5T_SUBSET_DST == type_info->cmpd_subset->subset
-            && type_info->dst_type_size == type_info->cmpd_subset->copy_size) {
-            if(H5D_compound_opt_write(smine_nelmts, type_info) < 0)
+                && type_info->dst_type_size == type_info->cmpd_subset->copy_size) {
+            if(H5D__compound_opt_write(smine_nelmts, type_info) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "datatype conversion failed")
         } /* end if */
         else {
             if(H5T_BKG_YES == type_info->need_bkg) {
-                n = H5D_gather_file(io_info, file_space, &bkg_iter, smine_nelmts,
+                n = H5D__gather_file(io_info, file_space, &bkg_iter, smine_nelmts,
                         type_info->bkg_buf/*out*/);
                 if(n != smine_nelmts)
                     HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file gather failed")
@@ -680,7 +680,7 @@ H5D_scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
         /*
          * Scatter the data out to the file.
          */
-        if(H5D_scatter_file(io_info, file_space, &file_iter, smine_nelmts,
+        if(H5D__scatter_file(io_info, file_space, &file_iter, smine_nelmts,
                 type_info->tconv_buf) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "scatter failed")
     } /* end for */
@@ -701,11 +701,11 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_scatgath_write() */
+} /* end H5D__scatgath_write() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compound_opt_read
+ * Function:	H5D__compound_opt_read
  *
  * Purpose:	A special optimization case when the source and
  *              destination members are a subset of each other, and
@@ -737,7 +737,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_compound_opt_read(size_t nelmts, const H5S_t *space,
+H5D__compound_opt_read(size_t nelmts, const H5S_t *space,
     H5S_sel_iter_t *iter, const H5D_dxpl_cache_t *dxpl_cache,
     const H5D_type_info_t *type_info, void *user_buf/*out*/)
 {
@@ -750,7 +750,7 @@ H5D_compound_opt_read(size_t nelmts, const H5S_t *space,
     size_t     src_stride, dst_stride, copy_size;
     herr_t     ret_value = SUCCEED;	       /*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(nelmts > 0);
@@ -832,11 +832,11 @@ done:
         off = H5FL_SEQ_FREE(hsize_t, off);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_compound_opt_read() */
+} /* end H5D__compound_opt_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_compound_opt_write
+ * Function:	H5D__compound_opt_write
  *
  * Purpose:	A special optimization case when the source and
  *              destination members are a subset of each other, and
@@ -869,13 +869,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_compound_opt_write(size_t nelmts, const H5D_type_info_t *type_info)
+H5D__compound_opt_write(size_t nelmts, const H5D_type_info_t *type_info)
 {
     uint8_t    *xsbuf, *xdbuf;                  /* Source & destination pointers into dataset buffer */
     size_t     src_stride, dst_stride;          /* Strides through source & destination datatypes */
     size_t     i;                               /* Local index variable */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Check args */
     HDassert(nelmts > 0);
@@ -897,5 +897,5 @@ H5D_compound_opt_write(size_t nelmts, const H5D_type_info_t *type_info)
     } /* end for */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5D_compound_opt_write() */
+} /* end H5D__compound_opt_write() */
 
diff --git a/src/H5Dselect.c b/src/H5Dselect.c
index d75b7ed..38f8bc4 100644
--- a/src/H5Dselect.c
+++ b/src/H5Dselect.c
@@ -49,6 +49,9 @@
 /* Local Prototypes */
 /********************/
 
+static herr_t H5D__select_io(const H5D_io_info_t *io_info, size_t elmt_size,
+    size_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
+
 
 /*********************/
 /* Package Variables */
@@ -68,7 +71,7 @@ H5FL_SEQ_DEFINE(hsize_t);
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_select_io
+ * Function:	H5D__select_io
  *
  * Purpose:	Perform I/O directly from application memory and a file
  *
@@ -80,7 +83,7 @@ H5FL_SEQ_DEFINE(hsize_t);
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D_select_io(const H5D_io_info_t *io_info, size_t elmt_size,
+H5D__select_io(const H5D_io_info_t *io_info, size_t elmt_size,
     size_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
 {
     H5S_sel_iter_t mem_iter;    /* Memory selection iteration info */
@@ -102,7 +105,7 @@ H5D_select_io(const H5D_io_info_t *io_info, size_t elmt_size,
     ssize_t tmp_file_len;       /* Temporary number of bytes in file sequence */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC
 
     /* Check args */
     HDassert(io_info);
@@ -245,11 +248,11 @@ done:
         mem_off = H5FL_SEQ_FREE(hsize_t, mem_off);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_select_io() */
+} /* end H5D__select_io() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_select_read
+ * Function:	H5D__select_read
  *
  * Purpose:	Reads directly from file into application memory.
  *
@@ -261,26 +264,26 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_select_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__select_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
 {
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Call generic selection operation */
     H5_CHECK_OVERFLOW(nelmts, hsize_t, size_t);
-    if(H5D_select_io(io_info, type_info->src_type_size, (size_t)nelmts,
+    if(H5D__select_io(io_info, type_info->src_type_size, (size_t)nelmts,
             file_space, mem_space) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_READERROR, FAIL, "read error")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_select_read() */
+} /* end H5D__select_read() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5D_select_write
+ * Function:	H5D__select_write
  *
  * Purpose:	Writes directly from application memory into a file
  *
@@ -292,20 +295,20 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D_select_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
+H5D__select_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
 {
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Call generic selection operation */
     H5_CHECK_OVERFLOW(nelmts, hsize_t, size_t);
-    if(H5D_select_io(io_info, type_info->dst_type_size, (size_t)nelmts,
+    if(H5D__select_io(io_info, type_info->dst_type_size, (size_t)nelmts,
             file_space, mem_space) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_WRITEERROR, FAIL, "write error")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D_select_write() */
+} /* end H5D__select_write() */
 
diff --git a/src/H5Dtest.c b/src/H5Dtest.c
index c060db3..eef3c91 100644
--- a/src/H5Dtest.c
+++ b/src/H5Dtest.c
@@ -64,11 +64,11 @@
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_layout_version_test
+    H5D__layout_version_test
  PURPOSE
     Determine the storage layout version for a dataset's layout information
  USAGE
-    herr_t H5D_layout_version_test(did, version)
+    herr_t H5D__layout_version_test(did, version)
         hid_t did;              IN: Dataset to query
         unsigned *version;      OUT: Pointer to location to place version info
  RETURNS
@@ -82,12 +82,12 @@
  REVISION LOG
 --------------------------------------------------------------------------*/
 herr_t
-H5D_layout_version_test(hid_t did, unsigned *version)
+H5D__layout_version_test(hid_t did, unsigned *version)
 {
     H5D_t	*dset;          /* Pointer to dataset to query */
     herr_t ret_value = SUCCEED; /* return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     if(NULL == (dset = (H5D_t *)H5I_object_verify(did, H5I_DATASET)))
@@ -98,16 +98,16 @@ H5D_layout_version_test(hid_t did, unsigned *version)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_layout_version_test() */
+}   /* H5D__layout_version_test() */
 
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_layout_contig_size_test
+    H5D__layout_contig_size_test
  PURPOSE
     Determine the size of a contiguous layout for a dataset's layout information
  USAGE
-    herr_t H5D_layout_contig_size_test(did, size)
+    herr_t H5D__layout_contig_size_test(did, size)
         hid_t did;              IN: Dataset to query
         hsize_t *size;          OUT: Pointer to location to place size info
  RETURNS
@@ -121,12 +121,12 @@ done:
  REVISION LOG
 --------------------------------------------------------------------------*/
 herr_t
-H5D_layout_contig_size_test(hid_t did, hsize_t *size)
+H5D__layout_contig_size_test(hid_t did, hsize_t *size)
 {
     H5D_t	*dset;          /* Pointer to dataset to query */
     herr_t ret_value = SUCCEED; /* return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     if(NULL == (dset = (H5D_t *)H5I_object_verify(did, H5I_DATASET)))
@@ -139,16 +139,16 @@ H5D_layout_contig_size_test(hid_t did, hsize_t *size)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_layout_contig_size_test() */
+}   /* H5D__layout_contig_size_test() */
 
 
 /*--------------------------------------------------------------------------
  NAME
-    H5D_current_cache_size_test
+    H5D__current_cache_size_test
  PURPOSE
     Determine current the size of the dataset's chunk cache
  USAGE
-    herr_t H5D_current_cache_size_test(did, size)
+    herr_t H5D__current_cache_size_test(did, size)
         hid_t did;              IN: Dataset to query
         hsize_t *size;          OUT: Pointer to location to place size info
  RETURNS
@@ -162,12 +162,12 @@ done:
  REVISION LOG
 --------------------------------------------------------------------------*/
 herr_t
-H5D_current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused)
+H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused)
 {
     H5D_t	*dset;          /* Pointer to dataset to query */
     herr_t ret_value = SUCCEED;   /* return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     if(NULL == (dset = (H5D_t *)H5I_object_verify(did, H5I_DATASET)))
@@ -185,5 +185,5 @@ H5D_current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5D_current_cache_size_test() */
+}   /* H5D__current_cache_size_test() */
 
diff --git a/src/H5E.c b/src/H5E.c
index 5baf7a5..6f13b1a 100644
--- a/src/H5E.c
+++ b/src/H5E.c
@@ -64,9 +64,6 @@
 /* Local Macros */
 /****************/
 
-/* Reserved atoms in for error API IDs */
-#define H5E_RESERVED_ATOMS  0
-
 /* HDF5 error class */
 #define H5E_CLS_NAME         "HDF5"
 #define H5E_CLS_LIB_NAME     "HDF5"
@@ -85,6 +82,18 @@
 /********************/
 /* Local Prototypes */
 /********************/
+/* Static function declarations */
+static H5E_cls_t *H5E_register_class(const char *cls_name, const char *lib_name,
+                                const char *version);
+static herr_t  H5E_unregister_class(H5E_cls_t *cls);
+static ssize_t H5E_get_class_name(const H5E_cls_t *cls, char *name, size_t size);
+static int H5E_close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata);
+static herr_t  H5E_close_msg(H5E_msg_t *err);
+static H5E_msg_t *H5E_create_msg(H5E_cls_t *cls, H5E_type_t msg_type, const char *msg);
+static H5E_t  *H5E_get_current_stack(void);
+static herr_t  H5E_set_current_stack(H5E_t *estack);
+static herr_t  H5E_close_stack(H5E_t *err_stack);
+static ssize_t H5E_get_num(const H5E_t *err_stack);
 
 
 /*********************/
@@ -101,20 +110,6 @@
 /* Local Variables */
 /*******************/
 
-
-/* Static function declarations */
-static H5E_cls_t *H5E_register_class(const char *cls_name, const char *lib_name,
-                                const char *version);
-static herr_t  H5E_unregister_class(H5E_cls_t *cls);
-static ssize_t H5E_get_class_name(const H5E_cls_t *cls, char *name, size_t size);
-static int H5E_close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata);
-static herr_t  H5E_close_msg(H5E_msg_t *err);
-static H5E_msg_t *H5E_create_msg(H5E_cls_t *cls, H5E_type_t msg_type, const char *msg);
-static H5E_t  *H5E_get_current_stack(void);
-static herr_t  H5E_set_current_stack(H5E_t *estack);
-static herr_t  H5E_close_stack(H5E_t *err_stack);
-static ssize_t H5E_get_num(const H5E_t *err_stack);
-
 /* Declare a free list to manage the H5E_t struct */
 H5FL_DEFINE_STATIC(H5E_t);
 
@@ -124,6 +119,34 @@ H5FL_DEFINE_STATIC(H5E_cls_t);
 /* Declare a free list to manage the H5E_msg_t struct */
 H5FL_DEFINE_STATIC(H5E_msg_t);
 
+/* Error class ID class */
+static const H5I_class_t H5I_ERRCLS_CLS[1] = {{
+    H5I_ERROR_CLASS,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5E_unregister_class /* Callback routine for closing objects of this class */
+}};
+
+/* Error message ID class */
+static const H5I_class_t H5I_ERRMSG_CLS[1] = {{
+    H5I_ERROR_MSG,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5E_close_msg   /* Callback routine for closing objects of this class */
+}};
+
+/* Error stack ID class */
+static const H5I_class_t H5I_ERRSTK_CLS[1] = {{
+    H5I_ERROR_STACK,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5E_close_stack /* Callback routine for closing objects of this class */
+}};
+
+
 
 /*-------------------------------------------------------------------------
  * Function:	H5E_init
@@ -213,18 +236,15 @@ H5E_init_interface(void)
     FUNC_ENTER_NOAPI_NOINIT
 
     /* Initialize the atom group for the error class IDs */
-    if(H5I_register_type(H5I_ERROR_CLASS, (size_t)H5I_ERRCLS_HASHSIZE, H5E_RESERVED_ATOMS,
-                    (H5I_free_t)H5E_unregister_class) < H5I_FILE)
+    if(H5I_register_type(H5I_ERRCLS_CLS) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, "unable to initialize ID group")
 
     /* Initialize the atom group for the major error IDs */
-    if(H5I_register_type(H5I_ERROR_MSG, (size_t)H5I_ERRMSG_HASHSIZE, H5E_RESERVED_ATOMS,
-                    (H5I_free_t)H5E_close_msg) < H5I_FILE)
+    if(H5I_register_type(H5I_ERRMSG_CLS) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, "unable to initialize ID group")
 
     /* Initialize the atom group for the error stacks */
-    if(H5I_register_type(H5I_ERROR_STACK, (size_t)H5I_ERRSTK_HASHSIZE, H5E_RESERVED_ATOMS,
-                    (H5I_free_t)H5E_close_stack) < H5I_FILE)
+    if(H5I_register_type(H5I_ERRSTK_CLS) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, "unable to initialize ID group")
 
 #ifndef H5_HAVE_THREADSAFE
diff --git a/src/H5Eint.c b/src/H5Eint.c
index e324ff5..cc75629 100644
--- a/src/H5Eint.c
+++ b/src/H5Eint.c
@@ -264,7 +264,10 @@ H5E_walk1_cb(int n, H5E_error1_t *err_desc, void *client_data)
         if(cls_ptr->lib_vers)
             eprint->cls.lib_vers = cls_ptr->lib_vers;
 
-        fprintf(stream, "%s-DIAG: Error detected in %s (%s) ", cls_ptr->cls_name, cls_ptr->lib_name, cls_ptr->lib_vers);
+        fprintf(stream, "%s-DIAG: Error detected in %s (%s) ",
+            (cls_ptr->cls_name ? cls_ptr->cls_name : "(null)"),
+            (cls_ptr->lib_name ? cls_ptr->lib_name : "(null)"),
+            (cls_ptr->lib_vers ? cls_ptr->lib_vers : "(null)"));
 
         /* try show the process or thread id in multiple processes cases*/
 #ifdef H5_HAVE_PARALLEL
@@ -387,7 +390,10 @@ H5E_walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data)
         if(cls_ptr->lib_vers)
             eprint->cls.lib_vers = cls_ptr->lib_vers;
 
-        fprintf(stream, "%s-DIAG: Error detected in %s (%s) ", cls_ptr->cls_name, cls_ptr->lib_name, cls_ptr->lib_vers);
+        fprintf(stream, "%s-DIAG: Error detected in %s (%s) ",
+            (cls_ptr->cls_name ? cls_ptr->cls_name : "(null)"),
+            (cls_ptr->lib_name ? cls_ptr->lib_name : "(null)"),
+            (cls_ptr->lib_vers ? cls_ptr->lib_vers : "(null)"));
 
         /* try show the process or thread id in multiple processes cases*/
 #ifdef H5_HAVE_PARALLEL
diff --git a/src/H5F.c b/src/H5F.c
index 79a3c41..4bcba32 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -13,13 +13,19 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
+/****************/
+/* Module Setup */
+/****************/
+
 #define H5F_PACKAGE		/*suppress error about including H5Fpkg	  */
 
 /* Interface initialization */
 #define H5_INTERFACE_INIT_FUNC	H5F_init_interface
 
 
-/* Packages needed by this file... */
+/***********/
+/* Headers */
+/***********/
 #include "H5private.h"		/* Generic Functions			*/
 #include "H5Aprivate.h"		/* Attributes				*/
 #include "H5ACprivate.h"        /* Metadata cache                       */
@@ -48,6 +54,16 @@
 #endif
 #include "H5FDdirect.h"         /*Linux direct I/O			*/
 
+
+/****************/
+/* Local Macros */
+/****************/
+
+
+/******************/
+/* Local Typedefs */
+/******************/
+
 /* Struct only used by functions H5F_get_objects and H5F_get_objects_cb */
 typedef struct H5F_olist_t {
     H5I_type_t obj_type;        /* Type of object to look for */
@@ -64,7 +80,15 @@ typedef struct H5F_olist_t {
     size_t     max_index;            /* Maximum # of IDs to put into array */
 } H5F_olist_t;
 
-/* PRIVATE PROTOTYPES */
+
+/********************/
+/* Package Typedefs */
+/********************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
 static herr_t H5F_get_objects(const H5F_t *f, unsigned types, size_t max_index, hid_t *obj_id_list, hbool_t app_ref, size_t *obj_id_count_ptr);
 static int H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key);
 static H5F_t *H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id,
@@ -74,12 +98,37 @@ static herr_t H5F_build_actual_name(const H5F_t *f, const H5P_genplist_t *fapl,
 static herr_t H5F_dest(H5F_t *f, hid_t dxpl_id, hbool_t flush);
 static herr_t H5F_close(H5F_t *f);
 
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
+
+
+/*******************/
+/* Local Variables */
+/*******************/
+
 /* Declare a free list to manage the H5F_t struct */
 H5FL_DEFINE(H5F_t);
 
 /* Declare a free list to manage the H5F_file_t struct */
 H5FL_DEFINE(H5F_file_t);
 
+/* File ID class */
+static const H5I_class_t H5I_FILE_CLS[1] = {{
+    H5I_FILE,			/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5F_close	/* Callback routine for closing objects of this class */
+}};
+
+
 
 /*-------------------------------------------------------------------------
  * Function:	H5F_init
@@ -130,7 +179,7 @@ H5F_init_interface(void)
     /*
      * Initialize the atom group for the file IDs.
      */
-    if(H5I_register_type(H5I_FILE, (size_t)H5I_FILEID_HASHSIZE, 0, (H5I_free_t)H5F_close)<H5I_FILE)
+    if(H5I_register_type(H5I_FILE_CLS) < 0)
         HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
 done:
@@ -535,7 +584,6 @@ H5F_get_objects(const H5F_t *f, unsigned types, size_t max_index, hid_t *obj_id_
 {
     size_t obj_id_count=0;      /* Number of open IDs */
     H5F_olist_t olist;          /* Structure to hold search results */
-    htri_t type_exists;         /* Whether objects of a type are open */
     herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
diff --git a/src/H5FD.c b/src/H5FD.c
index 99dd076..eba3cfe 100644
--- a/src/H5FD.c
+++ b/src/H5FD.c
@@ -82,7 +82,6 @@ static herr_t H5FD_pl_close(hid_t driver_id, herr_t (*free_func)(void *),
     void *pl);
 static herr_t H5FD_free_cls(H5FD_class_t *cls);
 static herr_t H5FD_fapl_copy(hid_t driver_id, const void *fapl, void **copied_fapl);
-static herr_t H5FD_dxpl_copy(hid_t driver_id, const void *dxpl, void **copied_dxpl);
 static int H5FD_query(const H5FD_t *f, unsigned long *flags/*out*/);
 static int H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/);
 
@@ -114,6 +113,16 @@ static int H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*o
  */
 static unsigned long file_serial_no;
 
+/* File driver ID class */
+static const H5I_class_t H5I_VFL_CLS[1] = {{
+    H5I_VFL,			/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5FD_free_cls	/* Callback routine for closing objects of this class */
+}};
+
+
 
 /*-------------------------------------------------------------------------
  * Function:	H5FD_init
@@ -164,7 +173,7 @@ H5FD_init_interface(void)
 
     FUNC_ENTER_NOAPI_NOINIT
 
-    if(H5I_register_type(H5I_VFL, (size_t)H5I_VFL_HASHSIZE, 0, (H5I_free_t)H5FD_free_cls)<H5I_FILE)
+    if(H5I_register_type(H5I_VFL_CLS) < 0)
 	HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
     /* Reset the file serial numbers */
@@ -464,13 +473,9 @@ H5FD_get_class(hid_t id)
             if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
                 HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver ID")
             ret_value = H5FD_get_class(driver_id);
-        } else if(TRUE == H5P_isa_class(id, H5P_DATASET_XFER)) {
-            if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
-                HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver ID")
-            ret_value = H5FD_get_class(driver_id);
-        } else {
-            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a driver id, file access property list or data transfer property list")
-        }
+        } /* end if */
+        else
+            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a driver id or file access property list")
     } /* end if */
 
 done:
@@ -834,125 +839,6 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5FD_dxpl_open
- *
- * Purpose:	Mark a driver as used by a data transfer property list
- *
- * Return:	Success:	non-negative
- *
- *		Failure:	negative
- *
- * Programmer:	Quincey Koziol
- *              Thursday, October 23, 2003
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_dxpl_open(H5P_genplist_t *plist, hid_t driver_id, const void *driver_info)
-{
-    void *copied_driver_info = NULL;           /* Temporary VFL driver info */
-    herr_t ret_value = SUCCEED;   /* Return value */
-
-    FUNC_ENTER_NOAPI(FAIL)
-
-    /* Increment the reference count on the driver and copy the driver info */
-    if(H5I_inc_ref(driver_id, FALSE) < 0)
-        HGOTO_ERROR(H5E_FILE, H5E_CANTINC, FAIL, "can't increment VFL driver ID")
-    if(H5FD_dxpl_copy(driver_id, driver_info, &copied_driver_info) < 0)
-        HGOTO_ERROR(H5E_FILE, H5E_CANTCOPY, FAIL, "can't copy VFL driver")
-
-    /* Set the driver information for the new property list */
-    if(H5P_set(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
-        HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "can't set VFL driver ID")
-    if(H5P_set(plist, H5D_XFER_VFL_INFO_NAME, &copied_driver_info) < 0)
-        HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "can't set VFL driver info")
-
-done:
-    if(ret_value < 0)
-        if(copied_driver_info && H5FD_dxpl_close(driver_id, copied_driver_info) < 0)
-            HDONE_ERROR(H5E_FILE, H5E_CANTCLOSEOBJ, FAIL, "can't close copy of driver info")
-
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_dxpl_open() */
-
-
-/*-------------------------------------------------------------------------
- * Function:	H5FD_dxpl_copy
- *
- * Purpose:	Copies the driver-specific part of the data transfer property
- *		list.
- *
- * Return:	Success:	non-negative
- *
- *		Failure:	negative
- *
- * Programmer:	Robb Matzke
- *              Tuesday, August  3, 1999
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_dxpl_copy(hid_t driver_id, const void *old_dxpl, void **copied_dxpl)
-{
-    H5FD_class_t *driver;
-    herr_t ret_value = SUCCEED;       /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    /* Check args */
-    if(NULL == (driver = (H5FD_class_t *)H5I_object(driver_id)))
-	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a driver ID")
-
-    /* Copy the file access property list */
-    if(H5FD_pl_copy(driver->dxpl_copy, driver->dxpl_size, old_dxpl, copied_dxpl) < 0)
-        HGOTO_ERROR(H5E_VFL, H5E_UNSUPPORTED, FAIL, "can't copy driver data transfer property list")
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_dxpl_copy() */
-
-
-/*-------------------------------------------------------------------------
- * Function:	H5FD_dxpl_close
- *
- * Purpose:	Closes a driver for a dataset transfer property list
- *
- * Return:	Success:	non-negative
- *		Failure:	negative
- *
- * Programmer:	Robb Matzke
- *              Tuesday, August  3, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_dxpl_close(hid_t driver_id, void *dxpl)
-{
-    H5FD_class_t *driver;
-    herr_t      ret_value = SUCCEED;       /* Return value */
-
-    FUNC_ENTER_NOAPI(FAIL)
-
-    /* Check args */
-    if(driver_id > 0) {
-        if(NULL == (driver = (H5FD_class_t *)H5I_object(driver_id)))
-            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a driver ID")
-
-        /* Close the driver for the property list */
-        if(H5FD_pl_close(driver_id, driver->dxpl_free, dxpl) < 0)
-            HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "driver fapl_free request failed")
-    } /* end if */
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_dxpl_close() */
-
-
-/*-------------------------------------------------------------------------
  * Function:	H5FDopen
  *
  * Purpose:	Opens a file named NAME for the type(s) of access described
@@ -1358,7 +1244,7 @@ H5FD_query(const H5FD_t *f, unsigned long *flags/*out*/)
 {
     int	ret_value = 0;          /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     HDassert(f);
     HDassert(flags);
@@ -1369,7 +1255,6 @@ H5FD_query(const H5FD_t *f, unsigned long *flags/*out*/)
     else
         *flags=0;
 
-done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5FD_query() */
 
@@ -1395,7 +1280,7 @@ H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/)
 {
     int ret_value = 0;          /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     HDassert(driver);
     HDassert(flags);
@@ -1406,7 +1291,6 @@ H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/)
     else 
         *flags = 0;
 
-done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5FD_driver_query() */
 
@@ -1466,9 +1350,9 @@ H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
     if(size == 0)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, HADDR_UNDEF, "zero-size request")
     if(H5P_DEFAULT == dxpl_id)
-        dxpl_id= H5P_DATASET_XFER_DEFAULT;
+        dxpl_id = H5P_DATASET_XFER_DEFAULT;
     else
-        if(TRUE != H5P_isa_class(dxpl_id,H5P_DATASET_XFER))
+        if(TRUE != H5P_isa_class(dxpl_id, H5P_DATASET_XFER))
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, HADDR_UNDEF, "not a data transfer property list")
 
     /* Do the real work */
@@ -1518,9 +1402,9 @@ H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t siz
     if(type < H5FD_MEM_DEFAULT || type >= H5FD_MEM_NTYPES)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid request type")
     if(H5P_DEFAULT == dxpl_id)
-        dxpl_id= H5P_DATASET_XFER_DEFAULT;
+        dxpl_id = H5P_DATASET_XFER_DEFAULT;
     else
-        if(TRUE!=H5P_isa_class(dxpl_id,H5P_DATASET_XFER))
+        if(TRUE != H5P_isa_class(dxpl_id, H5P_DATASET_XFER))
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data transfer property list")
 
     /* Do the real work */
@@ -1806,7 +1690,7 @@ H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size
 
     /* Get the default dataset transfer property list if the user didn't provide one */
     if(H5P_DEFAULT == dxpl_id)
-        dxpl_id= H5P_DATASET_XFER_DEFAULT;
+        dxpl_id = H5P_DATASET_XFER_DEFAULT;
     else
         if(TRUE != H5P_isa_class(dxpl_id, H5P_DATASET_XFER))
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data transfer property list")
@@ -1975,7 +1859,7 @@ H5FDtruncate(H5FD_t *file, hid_t dxpl_id, unsigned closing)
     if(H5P_DEFAULT == dxpl_id)
         dxpl_id = H5P_DATASET_XFER_DEFAULT;
     else
-        if(TRUE != H5P_isa_class(dxpl_id,H5P_DATASET_XFER))
+        if(TRUE != H5P_isa_class(dxpl_id, H5P_DATASET_XFER))
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data transfer property list")
 
     /* Do the real work */
diff --git a/src/H5FDcore.c b/src/H5FDcore.c
index 6f9a41a..094011c 100644
--- a/src/H5FDcore.c
+++ b/src/H5FDcore.c
@@ -182,7 +182,7 @@ static const H5FD_class_t H5FD_core_g = {
     H5FD_core_truncate,        /*truncate    */
     NULL,                                       /*lock                  */
     NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE         /*fl_map    */
+    H5FD_FLMAP_DICHOTOMY  	/*fl_map                */
 };
 
 
@@ -425,8 +425,9 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
         HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "maxaddr overflow")
     HDassert(H5P_DEFAULT != fapl_id);
     if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
-            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
-    fa = (H5FD_core_fapl_t *)H5P_get_driver_info(plist);
+        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
+    if(NULL == (fa = (H5FD_core_fapl_t *)H5P_get_driver_info(plist)))
+        HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
 
     /* Build the open flags */
     o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
@@ -441,6 +442,7 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
     /* If the file image exists and this is an open, make sure the file doesn't exist */
     HDassert(((file_image_info.buffer != NULL) && (file_image_info.size > 0)) ||
              ((file_image_info.buffer == NULL) && (file_image_info.size == 0)));
+    HDmemset(&sb, 0, sizeof(sb));
     if((file_image_info.buffer != NULL) && !(H5F_ACC_CREAT & flags)) {
         if(HDopen(name, o_flags, 0666) >= 0)
             HGOTO_ERROR(H5E_FILE, H5E_FILEEXISTS, NULL, "file already exists")
@@ -460,7 +462,7 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
      * store is off is when  the backing_store flag is off and H5F_ACC_CREAT is
      * on. */
     else if(fa->backing_store || !(H5F_ACC_CREAT & flags)) {
-        if(fa && (fd = HDopen(name, o_flags, 0666)) < 0)
+        if((fd = HDopen(name, o_flags, 0666)) < 0)
             HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
         if(HDfstat(fd, &sb) < 0)
             HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
@@ -477,7 +479,7 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
      * default value. But if the file access property list was zero then use
      * the default value instead.
      */
-    file->increment = (fa && fa->increment>0) ?  fa->increment : H5FD_CORE_INCREMENT;
+    file->increment = (fa->increment>0) ?  fa->increment : H5FD_CORE_INCREMENT;
 
     /* If save data in backing store. */
     file->backing_store = fa->backing_store;
diff --git a/src/H5FDdirect.c b/src/H5FDdirect.c
index 2c01b47..941fb74 100644
--- a/src/H5FDdirect.c
+++ b/src/H5FDdirect.c
@@ -203,7 +203,7 @@ static const H5FD_class_t H5FD_direct_g = {
     H5FD_direct_truncate,      /*truncate    */
     NULL,                                       /*lock                  */
     NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE         /*fl_map    */
+    H5FD_FLMAP_DICHOTOMY                        /*fl_map                */
 };
 
 /* Declare a free list to manage the H5FD_direct_t struct */
diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c
index 736efb8..2b1f84f 100644
--- a/src/H5FDfamily.c
+++ b/src/H5FDfamily.c
@@ -82,17 +82,10 @@ typedef struct H5FD_family_fapl_t {
     hid_t	memb_fapl_id;	/*file access property list of each memb*/
 } H5FD_family_fapl_t;
 
-/* Driver specific data transfer properties */
-typedef struct H5FD_family_dxpl_t {
-    hid_t	memb_dxpl_id;	/*data xfer property list of each memb	*/
-} H5FD_family_dxpl_t;
-
 /* Callback prototypes */
 static void *H5FD_family_fapl_get(H5FD_t *_file);
 static void *H5FD_family_fapl_copy(const void *_old_fa);
 static herr_t H5FD_family_fapl_free(void *_fa);
-static void *H5FD_family_dxpl_copy(const void *_old_dx);
-static herr_t H5FD_family_dxpl_free(void *_dx);
 static hsize_t H5FD_family_sb_size(H5FD_t *_file);
 static herr_t H5FD_family_sb_encode(H5FD_t *_file, char *name/*out*/,
 		     unsigned char *buf/*out*/);
@@ -126,9 +119,9 @@ static const H5FD_class_t H5FD_family_g = {
     H5FD_family_fapl_get,			/*fapl_get		*/
     H5FD_family_fapl_copy,			/*fapl_copy		*/
     H5FD_family_fapl_free,			/*fapl_free		*/
-    sizeof(H5FD_family_dxpl_t),			/*dxpl_size		*/
-    H5FD_family_dxpl_copy,			/*dxpl_copy		*/
-    H5FD_family_dxpl_free,			/*dxpl_free		*/
+    0,						/*dxpl_size		*/
+    NULL,					/*dxpl_copy		*/
+    NULL,					/*dxpl_free		*/
     H5FD_family_open,				/*open			*/
     H5FD_family_close,				/*close			*/
     H5FD_family_cmp,				/*cmp			*/
@@ -146,7 +139,7 @@ static const H5FD_class_t H5FD_family_g = {
     H5FD_family_truncate,			/*truncate		*/
     NULL,                                       /*lock                  */
     NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE 				/*fl_map		*/
+    H5FD_FLMAP_DICHOTOMY                        /*fl_map                */
 };
 
 
@@ -482,92 +475,6 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5FD_family_dxpl_copy
- *
- * Purpose:	Copes the family-specific data transfer properties.
- *
- * Return:	Success:	Ptr to new property list
- *
- *		Failure:	NULL
- *
- * Programmer:	Robb Matzke
- *              Wednesday, August  4, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void *
-H5FD_family_dxpl_copy(const void *_old_dx)
-{
-    const H5FD_family_dxpl_t *old_dx = (const H5FD_family_dxpl_t*)_old_dx;
-    H5FD_family_dxpl_t *new_dx = NULL;
-    H5P_genplist_t *plist;      /* Property list pointer */
-    void *ret_value;       /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    if(NULL == (new_dx = (H5FD_family_dxpl_t *)H5MM_malloc(sizeof(H5FD_family_dxpl_t))))
-        HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
-
-    HDmemcpy(new_dx, old_dx, sizeof(H5FD_family_dxpl_t));
-
-    if(old_dx->memb_dxpl_id == H5P_DATASET_XFER_DEFAULT) {
-        if(H5I_inc_ref(new_dx->memb_dxpl_id, FALSE)<0)
-            HGOTO_ERROR(H5E_VFL, H5E_CANTINC, NULL, "unable to increment ref count on VFL driver")
-    } /* end if */
-    else {
-        if(NULL == (plist = (H5P_genplist_t *)H5I_object(old_dx->memb_dxpl_id)))
-            HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
-        new_dx->memb_dxpl_id = H5P_copy_plist(plist, FALSE);
-    } /* end else */
-
-    /* Set return value */
-    ret_value=new_dx;
-
-done:
-    if(ret_value==NULL) {
-        if(new_dx!=NULL)
-            H5MM_xfree(new_dx);
-    } /* end if */
-    FUNC_LEAVE_NOAPI(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function:	H5FD_family_dxpl_free
- *
- * Purpose:	Frees the family-specific data transfer properties.
- *
- * Return:	Success:	0
- *
- *		Failure:	-1
- *
- * Programmer:	Robb Matzke
- *              Wednesday, August  4, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_family_dxpl_free(void *_dx)
-{
-    H5FD_family_dxpl_t	*dx = (H5FD_family_dxpl_t*)_dx;
-    herr_t ret_value = SUCCEED;   /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    if(H5I_dec_ref(dx->memb_dxpl_id) < 0)
-        HGOTO_ERROR(H5E_VFL, H5E_CANTDEC, FAIL, "can't close driver ID")
-    H5MM_xfree(dx);
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
  * Function:	H5FD_family_sb_size
  *
  * Purpose:	Returns the size of the private information to be stored in
@@ -1240,7 +1147,6 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
 {
     H5FD_family_t	*file = (H5FD_family_t*)_file;
     unsigned char	*buf = (unsigned char*)_buf;
-    hid_t		memb_dxpl_id = H5P_DATASET_XFER_DEFAULT;
     haddr_t		sub;
     size_t		req;
     hsize_t             tempreq;
@@ -1256,13 +1162,6 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
      */
     if(NULL == (plist = (H5P_genplist_t *)H5I_object(dxpl_id)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
-    if(H5P_DATASET_XFER_DEFAULT != dxpl_id && H5FD_FAMILY == H5P_get_driver(plist)) {
-        H5FD_family_dxpl_t *dx = (H5FD_family_dxpl_t *)H5P_get_driver_info(plist);
-
-        HDassert(TRUE == H5P_isa_class(dxpl_id, H5P_DATASET_XFER));
-        assert(dx);
-        memb_dxpl_id = dx->memb_dxpl_id;
-    } /* end if */
 
     /* Read from each member */
     while(size > 0) {
@@ -1280,7 +1179,7 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
 
         assert(u<file->nmembs);
 
-        if (H5FDread(file->memb[u], type, memb_dxpl_id, sub, req, buf)<0)
+        if (H5FDread(file->memb[u], type, dxpl_id, sub, req, buf)<0)
             HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "member file read failed")
 
         addr += req;
@@ -1317,7 +1216,6 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
 {
     H5FD_family_t	*file = (H5FD_family_t*)_file;
     const unsigned char	*buf = (const unsigned char*)_buf;
-    hid_t		memb_dxpl_id = H5P_DATASET_XFER_DEFAULT;
     haddr_t		sub;
     size_t		req;
     hsize_t             tempreq;
@@ -1333,13 +1231,6 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
      */
     if(NULL == (plist = (H5P_genplist_t *)H5I_object(dxpl_id)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
-    if(H5P_DATASET_XFER_DEFAULT != dxpl_id && H5FD_FAMILY == H5P_get_driver(plist)) {
-        H5FD_family_dxpl_t *dx = (H5FD_family_dxpl_t *)H5P_get_driver_info(plist);
-
-        HDassert(TRUE == H5P_isa_class(dxpl_id, H5P_DATASET_XFER));
-        HDassert(dx);
-        memb_dxpl_id = dx->memb_dxpl_id;
-    } /* end if */
 
     /* Write to each member */
     while (size>0) {
@@ -1357,7 +1248,7 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
 
         assert(u<file->nmembs);
 
-        if (H5FDwrite(file->memb[u], type, memb_dxpl_id, sub, req, buf)<0)
+        if (H5FDwrite(file->memb[u], type, dxpl_id, sub, req, buf)<0)
             HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "member file write failed")
 
         addr += req;
diff --git a/src/H5FDlog.c b/src/H5FDlog.c
index e3d6735..9d318dd 100644
--- a/src/H5FDlog.c
+++ b/src/H5FDlog.c
@@ -231,7 +231,7 @@ static const H5FD_class_t H5FD_log_g = {
     H5FD_log_truncate,				/*truncate		*/
     NULL,                                       /*lock                  */
     NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE 				/*fl_map		*/
+    H5FD_FLMAP_DICHOTOMY			/*fl_map		*/
 };
 
 /* Declare a free list to manage the H5FD_log_t struct */
@@ -1020,12 +1020,29 @@ H5FD_log_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5FD_log_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
+H5FD_log_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr)
 {
     H5FD_log_t	*file = (H5FD_log_t *)_file;
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
+    if(file->fa.flags != 0) {
+	if(H5F_addr_gt(addr, file->eoa) && H5F_addr_gt(addr, 0)) {
+	    hsize_t size = addr - file->eoa;
+
+            /* Retain the flavor of the space allocated by the extension */
+	    if(file->fa.flags & H5FD_LOG_FLAVOR) {
+		HDassert(addr < file->iosize);
+		H5_CHECK_OVERFLOW(size, hsize_t, size_t);
+		HDmemset(&file->flavor[file->eoa], (int)type, (size_t)size);
+	    } /* end if */
+
+            /* Log the extension like an allocation */
+	    if(file->fa.flags & H5FD_LOG_ALLOC)
+		HDfprintf(file->logfp, "%10a-%10a (%10Hu bytes) (%s) Allocated\n", file->eoa, addr, size, flavors[type]);
+	} /* end if */
+    } /* end if */
+
     file->eoa = addr;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
diff --git a/src/H5FDmpi.c b/src/H5FDmpi.c
index ff2c87d..866a2cf 100644
--- a/src/H5FDmpi.c
+++ b/src/H5FDmpi.c
@@ -56,12 +56,15 @@ char H5FD_mpi_native_g[] = "native";
 int
 H5FD_mpi_get_rank(const H5FD_t *file)
 {
-    const H5FD_class_mpi_t *cls=(const H5FD_class_mpi_t *)(file->cls);
+    const H5FD_class_mpi_t *cls;
+
     int	ret_value;
 
     FUNC_ENTER_NOAPI(FAIL)
 
-    assert(file && cls);
+    assert(file);
+    cls = (const H5FD_class_mpi_t *)(file->cls);
+    assert(cls);
     assert(cls->get_rank);        /* All MPI drivers must implement this */
 
     /* Dispatch to driver */
@@ -92,12 +95,14 @@ done:
 int
 H5FD_mpi_get_size(const H5FD_t *file)
 {
-    const H5FD_class_mpi_t *cls=(const H5FD_class_mpi_t *)(file->cls);
+    const H5FD_class_mpi_t *cls;
     int	ret_value;
 
     FUNC_ENTER_NOAPI(FAIL)
 
-    assert(file && cls);
+    assert(file);
+    cls = (const H5FD_class_mpi_t *)(file->cls);
+    assert(cls);
     assert(cls->get_size);        /* All MPI drivers must implement this */
 
     /* Dispatch to driver */
@@ -128,12 +133,14 @@ done:
 MPI_Comm
 H5FD_mpi_get_comm(const H5FD_t *file)
 {
-    const H5FD_class_mpi_t *cls=(const H5FD_class_mpi_t *)(file->cls);
+    const H5FD_class_mpi_t *cls;
     MPI_Comm	ret_value;
 
     FUNC_ENTER_NOAPI(MPI_COMM_NULL)
 
-    assert(file && cls);
+    assert(file);
+    cls = (const H5FD_class_mpi_t *)(file->cls);
+    assert(cls);
     assert(cls->get_comm);        /* All MPI drivers must implement this */
 
     /* Dispatch to driver */
@@ -466,7 +473,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5FD_mpi_setup_collective(hid_t dxpl_id, MPI_Datatype btype, MPI_Datatype ftype)
+H5FD_mpi_setup_collective(hid_t dxpl_id, MPI_Datatype *btype, MPI_Datatype *ftype)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
     herr_t      ret_value=SUCCEED;       /* Return value */
@@ -478,56 +485,15 @@ H5FD_mpi_setup_collective(hid_t dxpl_id, MPI_Datatype btype, MPI_Datatype ftype)
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list")
 
     /* Set buffer MPI type */
-    if(H5P_insert(plist,H5FD_MPI_XFER_MEM_MPI_TYPE_NAME,H5FD_MPI_XFER_MEM_MPI_TYPE_SIZE,&btype,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property")
+    if(H5P_set(plist, H5FD_MPI_XFER_MEM_MPI_TYPE_NAME, btype) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set MPI-I/O property")
 
-    /* Set file MPI type */
-    if(H5P_insert(plist,H5FD_MPI_XFER_FILE_MPI_TYPE_NAME,H5FD_MPI_XFER_FILE_MPI_TYPE_SIZE,&ftype,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property")
+    /* Set File MPI type */
+    if(H5P_set(plist, H5FD_MPI_XFER_FILE_MPI_TYPE_NAME, ftype) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set MPI-I/O property")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5FD_mpi_setup_collective() */
 
-
-/*-------------------------------------------------------------------------
- * Function:	H5FD_mpi_teardown_collective
- *
- * Purpose:	Remove the temporary MPI-I/O properties from dxpl.
- *
- * Return:	Success:        Non-negative
- *		Failure:	Negative
- *
- * Programmer:	Quincey Koziol
- *              Monday, June 17, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_mpi_teardown_collective(hid_t dxpl_id)
-{
-    H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t      ret_value=SUCCEED;       /* Return value */
-
-    FUNC_ENTER_NOAPI(FAIL)
-
-    /* Check arguments */
-    if(NULL == (plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)))
-        HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list")
-
-    /* Remove buffer MPI type */
-    if(H5P_remove(dxpl_id,plist,H5FD_MPI_XFER_MEM_MPI_TYPE_NAME)<0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property")
-
-    /* Remove file MPI type */
-    if(H5P_remove(dxpl_id,plist,H5FD_MPI_XFER_FILE_MPI_TYPE_NAME)<0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property")
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpi_teardown_collective() */
-
 #endif /* H5_HAVE_PARALLEL */
-
diff --git a/src/H5FDmpi.h b/src/H5FDmpi.h
index b9998dd..9ca2966 100644
--- a/src/H5FDmpi.h
+++ b/src/H5FDmpi.h
@@ -81,10 +81,8 @@ typedef struct H5FD_class_mpi_t {
 /* ======== Temporary data transfer properties ======== */
 /* Definitions for memory MPI type property */
 #define H5FD_MPI_XFER_MEM_MPI_TYPE_NAME        "H5FD_mpi_mem_mpi_type"
-#define H5FD_MPI_XFER_MEM_MPI_TYPE_SIZE        sizeof(MPI_Datatype)
 /* Definitions for file MPI type property */
 #define H5FD_MPI_XFER_FILE_MPI_TYPE_NAME       "H5FD_mpi_file_mpi_type"
-#define H5FD_MPI_XFER_FILE_MPI_TYPE_SIZE       sizeof(MPI_Datatype)
 
 /*
  * The view is set to this value
@@ -105,9 +103,8 @@ H5_DLL herr_t H5FD_mpi_comm_info_free(MPI_Comm *comm, MPI_Info *info);
 H5_DLL herr_t H5FD_mpio_wait_for_left_neighbor(H5FD_t *file);
 H5_DLL herr_t H5FD_mpio_signal_right_neighbor(H5FD_t *file);
 #endif /* NOT_YET */
-H5_DLL herr_t H5FD_mpi_setup_collective(hid_t dxpl_id, MPI_Datatype btype,
-    MPI_Datatype ftype);
-H5_DLL herr_t H5FD_mpi_teardown_collective(hid_t dxpl_id);
+H5_DLL herr_t H5FD_mpi_setup_collective(hid_t dxpl_id, MPI_Datatype *btype,
+    MPI_Datatype *ftype);
 
 /* Driver specific methods */
 H5_DLL int H5FD_mpi_get_rank(const H5FD_t *file);
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c
index 058324e..e67e4ff 100644
--- a/src/H5FDmpio.c
+++ b/src/H5FDmpio.c
@@ -125,7 +125,7 @@ static const H5FD_class_mpi_t H5FD_mpio_g = {
     H5FD_mpio_truncate,        /*truncate    */
     NULL,                                       /*lock                  */
     NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE                           /*fl_map                */
+    H5FD_FLMAP_DICHOTOMY                        /*fl_map                */
     },  /* End of superclass information */
     H5FD_mpio_mpi_rank,                         /*get_rank              */
     H5FD_mpio_mpi_size,                         /*get_size              */
@@ -449,27 +449,23 @@ done:
  *      Use collective I/O access.
  *
  * Return:  Success:  Non-negative
- *
  *     Failure:  Negative
  *
  * Programmer:  Albert Cheng
  *    April 2, 1998
  *
- * Modifications:
- *     Robb Matzke, 1999-08-06
- *    Modified to work with the virtual file layer.
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value;
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iDt", dxpl_id, xfer_mode);
 
-    if(dxpl_id==H5P_DEFAULT)
+    if(dxpl_id == H5P_DEFAULT)
         HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "can't set values in default property list")
 
     /* Check arguments */
@@ -479,15 +475,12 @@ H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "incorrect xfer_mode")
 
     /* Set the transfer mode */
-    if (H5P_set(plist,H5D_XFER_IO_XFER_MODE_NAME,&xfer_mode)<0)
+    if(H5P_set(plist, H5D_XFER_IO_XFER_MODE_NAME, &xfer_mode) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
-    /* Initialize driver-specific properties */
-    ret_value= H5P_set_driver(plist, H5FD_MPIO, NULL);
-
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_dxpl_mpio() */
 
 
 /*-------------------------------------------------------------------------
@@ -505,63 +498,54 @@ done:
  * Programmer:  Albert Cheng
  *    April 2, 1998
  *
- * Modifications:
- *     Robb Matzke, 1999-08-06
- *    Modified to work with the virtual file layer.
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/)
 {
-    H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t      ret_value=SUCCEED;       /* Return value */
+    H5P_genplist_t *plist;              /* Property list pointer */
+    herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "ix", dxpl_id, xfer_mode);
 
     if(NULL == (plist = H5P_object_verify(dxpl_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl")
-    if(H5FD_MPIO != H5P_get_driver(plist))
-        HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
 
     /* Get the transfer mode */
-    if (xfer_mode)
-        if (H5P_get(plist,H5D_XFER_IO_XFER_MODE_NAME,xfer_mode)<0)
+    if(xfer_mode)
+        if(H5P_get(plist, H5D_XFER_IO_XFER_MODE_NAME, xfer_mode) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to get value")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_dxpl_mpio() */
+
 
 /*-------------------------------------------------------------------------
  * Function:  H5Pset_dxpl_mpio_collective_opt
-
-Purpose:
-  To set a flag to choose linked chunk IO or multi-chunk IO without
-        involving decision-making inside HDF5
-
-Description:
-        The library will do linked chunk IO or multi-chunk IO without
-        involving communications for decision-making process.
-        The library won't behave as it asks for only when we find
-        that the low-level MPI-IO package doesn't support this.
-
-Parameters:
-        hid_t dxpl_id            in: Data transfer property list identifier
-  H5FD_mpio_chunk_opt_t     in: The optimization flag for linked chunk IO
-                                            or multi-chunk IO.
-
-
-Returns:
-Returns a non-negative value if successful. Otherwise returns a negative value.
-*
+ *
+ * Purpose:	To set a flag to choose linked chunk I/O or multi-chunk I/O
+ *		without involving decision-making inside HDF5
+ *
+ * Note:	The library will do linked chunk I/O or multi-chunk I/O without
+ *		involving communications for decision-making process.
+ *		The library won't behave as it asks for only when we find
+ *		that the low-level MPI-IO package doesn't support this.
+ *
+ * Return:	Success:	Non-negative
+ * 		Failure:	Negative
+ *
+ * Programmer:	Kent Yang
+ *		? ?, ?
+ *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_dxpl_mpio_collective_opt(hid_t dxpl_id, H5FD_mpio_collective_opt_t opt_mode)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value;
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iDc", dxpl_id, opt_mode);
@@ -577,9 +561,6 @@ H5Pset_dxpl_mpio_collective_opt(hid_t dxpl_id, H5FD_mpio_collective_opt_t opt_mo
     if(H5P_set(plist, H5D_XFER_MPIO_COLLECTIVE_OPT_NAME, &opt_mode) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
-    /* Initialize driver-specific properties */
-    ret_value = H5P_set_driver(plist, H5FD_MPIO, NULL);
-
 done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Pset_dxpl_mpio_collective_opt() */
@@ -587,33 +568,28 @@ done:
 
 /*-------------------------------------------------------------------------
  * Function:  H5Pset_dxpl_mpio_chunk_opt
-
-Purpose:
-  To set a flag to choose linked chunk IO or multi-chunk IO without
-        involving decision-making inside HDF5
-
-Description:
-        The library will do linked chunk IO or multi-chunk IO without
-        involving communications for decision-making process.
-        The library won't behave as it asks for only when we find
-        that the low-level MPI-IO package doesn't support this.
-
-Parameters:
-        hid_t dxpl_id            in: Data transfer property list identifier
-  H5FD_mpio_chunk_opt_t     in: The optimization flag for linked chunk IO
-                                            or multi-chunk IO.
-
-
-Returns:
-Returns a non-negative value if successful. Otherwise returns a negative value.
-*
+ *
+ * Purpose:	To set a flag to choose linked chunk I/O or multi-chunk I/O
+ *		without involving decision-making inside HDF5
+ *
+ * Note:	The library will do linked chunk I/O or multi-chunk I/O without
+ *		involving communications for decision-making process.
+ *		The library won't behave as it asks for only when we find
+ *		that the low-level MPI-IO package doesn't support this.
+ *
+ * Return:	Success:	Non-negative
+ * 		Failure:	Negative
+ *
+ * Programmer:	Kent Yang
+ *		? ?, ?
+ *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_dxpl_mpio_chunk_opt(hid_t dxpl_id, H5FD_mpio_chunk_opt_t opt_mode)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value;
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iDh", dxpl_id, opt_mode);
@@ -626,41 +602,36 @@ H5Pset_dxpl_mpio_chunk_opt(hid_t dxpl_id, H5FD_mpio_chunk_opt_t opt_mode)
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl")
 
     /* Set the transfer mode */
-    if (H5P_set(plist,H5D_XFER_MPIO_CHUNK_OPT_HARD_NAME,&opt_mode)<0)
+    if(H5P_set(plist, H5D_XFER_MPIO_CHUNK_OPT_HARD_NAME, &opt_mode) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
-    /* Initialize driver-specific properties */
-    ret_value= H5P_set_driver(plist, H5FD_MPIO, NULL);
-
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_dxpl_mpio_chunk_opt() */
 
 
 /*-------------------------------------------------------------------------
  * Function:  H5Pset_dxpl_mpio_chunk_opt_num
-
-Purpose:
-  To set a threshold for doing linked chunk IO
-
-Description:
-        If the number is greater than the threshold set by the user,
-        the library will do linked chunk IO; otherwise, IO will be done for every chunk.
-
-Parameters:
-        hid_t dxpl_id            in: Data transfer property list identifier
-  unsigned num_proc_per_chunk  in: the threshold of the average number of chunks selected by each process
-
-Returns:
-Returns a non-negative value if successful. Otherwise returns a negative value.
-*
+ *
+ * Purpose:	To set a threshold for doing linked chunk IO
+ *
+ * Note:	If the number is greater than the threshold set by the user,
+ *		the library will do linked chunk I/O; otherwise, I/O will be
+ *		done for every chunk.
+ *
+ * Return:	Success:	Non-negative
+ * 		Failure:	Negative
+ *
+ * Programmer:	Kent Yang
+ *		? ?, ?
+ *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_dxpl_mpio_chunk_opt_num(hid_t dxpl_id, unsigned num_chunk_per_proc)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value;
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iIu", dxpl_id, num_chunk_per_proc);
@@ -673,41 +644,39 @@ H5Pset_dxpl_mpio_chunk_opt_num(hid_t dxpl_id, unsigned num_chunk_per_proc)
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl")
 
     /* Set the transfer mode */
-    if (H5P_set(plist,H5D_XFER_MPIO_CHUNK_OPT_NUM_NAME,&num_chunk_per_proc)<0)
+    if(H5P_set(plist, H5D_XFER_MPIO_CHUNK_OPT_NUM_NAME, &num_chunk_per_proc) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
-    /* Initialize driver-specific properties */
-    ret_value= H5P_set_driver(plist, H5FD_MPIO, NULL);
-
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_dxpl_mpio_chunk_opt_num() */
 
 
 /*-------------------------------------------------------------------------
  * Function:  H5Pset_dxpl_mpio_chunk_opt_ratio
-
-Purpose:
-  To set a threshold for doing collective IO for each chunk
-Description:
-  The library will calculate the percentage of the number of process holding selections at each chunk. If that percentage of number of process in the individual chunk is greater than the threshold set by the user, the library will do collective chunk IO for this chunk; otherwise, independent IO will be done for this chunk.
-Parameters:
-  hid_t dxpl_id
-    in: Data transfer property list identifier
-  unsigned percent_num_proc_per_chunk
-    in: the threshold of the percentage of the number of process holding selections per chunk
-Returns:
-Returns a non-negative value if successful. Otherwise returns a negative value.
-
-
-*
+ *
+ * Purpose:	To set a threshold for doing collective I/O for each chunk
+ *
+ * Note:	The library will calculate the percentage of the number of
+ *		process holding selections at each chunk. If that percentage
+ *		of number of process in the individual chunk is greater than
+ *		the threshold set by the user, the library will do collective
+ *		chunk I/O for this chunk; otherwise, independent I/O will be
+ *		done for this chunk.
+ *
+ * Return:	Success:	Non-negative
+ * 		Failure:	Negative
+ *
+ * Programmer:	Kent Yang
+ *		? ?, ?
+ *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_dxpl_mpio_chunk_opt_ratio(hid_t dxpl_id, unsigned percent_num_proc_per_chunk)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value;
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iIu", dxpl_id, percent_num_proc_per_chunk);
@@ -720,15 +689,12 @@ H5Pset_dxpl_mpio_chunk_opt_ratio(hid_t dxpl_id, unsigned percent_num_proc_per_ch
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl")
 
     /* Set the transfer mode */
-    if (H5P_set(plist,H5D_XFER_MPIO_CHUNK_OPT_RATIO_NAME,&percent_num_proc_per_chunk)<0)
+    if(H5P_set(plist, H5D_XFER_MPIO_CHUNK_OPT_RATIO_NAME, &percent_num_proc_per_chunk) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
-    /* Initialize driver-specific properties */
-    ret_value= H5P_set_driver(plist, H5FD_MPIO, NULL);
-
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_dxpl_mpio_chunk_opt_ratio() */
 
 
 /*-------------------------------------------------------------------------
@@ -745,10 +711,6 @@ done:
  * Programmer:  Robb Matzke
  *              Friday, August 13, 1999
  *
- * Modifications:
- *     Albert Cheng, 2003-04-17
- *     Duplicate the communicator and Info object so that the new
- *     property list is insulated from the old one.
  *-------------------------------------------------------------------------
  */
 static void *
@@ -790,8 +752,6 @@ done:
  * Programmer:  Albert Cheng
  *              Jan  8, 2003
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static void *
diff --git a/src/H5FDmpiposix.c b/src/H5FDmpiposix.c
index 74eb566..768548e 100644
--- a/src/H5FDmpiposix.c
+++ b/src/H5FDmpiposix.c
@@ -37,15 +37,15 @@
 #define H5_INTERFACE_INIT_FUNC  H5FD_mpiposix_init_interface
 
 
-#include "H5private.h"    /* Generic Functions      */
-#include "H5ACprivate.h"  /* Metadata cache      */
-#include "H5Eprivate.h"    /* Error handling        */
-#include "H5Fprivate.h"    /* File access        */
-#include "H5FDprivate.h"  /* File drivers        */
-#include "H5FDmpi.h"            /* MPI-based file drivers    */
-#include "H5Iprivate.h"    /* IDs            */
-#include "H5MMprivate.h"  /* Memory management      */
-#include "H5Pprivate.h"         /* Property lists                       */
+#include "H5private.h"      /* Generic Functions            */
+#include "H5ACprivate.h"    /* Metadata cache               */
+#include "H5Eprivate.h"     /* Error handling               */
+#include "H5Fprivate.h"     /* File access                  */
+#include "H5FDprivate.h"    /* File drivers                 */
+#include "H5FDmpi.h"        /* MPI-based file drivers       */
+#include "H5Iprivate.h"     /* IDs                          */
+#include "H5MMprivate.h"    /* Memory management            */
+#include "H5Pprivate.h"     /* Property lists               */
 
 /* Features:
  *   H5_HAVE_GPFS   -- issue gpfs_fcntl() calls to hopefully improve
@@ -71,107 +71,101 @@
  */
 static hid_t H5FD_MPIPOSIX_g = 0;
 
-/* File operations */
-#define OP_UNKNOWN  0
-#define OP_READ    1
-#define OP_WRITE  2
+/* Since Windows doesn't follow the rest of the world when it comes
+ * to POSIX I/O types, some typedefs and constants are needed to avoid
+ * making the code messy with #ifdefs.
+ */
+#ifdef H5_HAVE_WIN32_API
+typedef unsigned int    h5_mpiposix_io_t;
+typedef int             h5_mpiposix_io_ret_t;
+static int H5_MPIPOSIX_MAX_IO_BYTES_g = INT_MAX;
+#else
+/* Unix, everyone else */
+typedef size_t          h5_mpiposix_io_t;
+typedef ssize_t         h5_mpiposix_io_ret_t;
+static size_t H5_MPIPOSIX_MAX_IO_BYTES_g = SSIZET_MAX;
+#endif /* H5_HAVE_WIN32_API */
 
 /*
  * The description of a file belonging to this driver.
- * The EOF value
- * is only used just after the file is opened in order for the library to
- * determine whether the file is empty, truncated, or okay. The MPIPOSIX driver
- * doesn't bother to keep it updated since it's an expensive operation.
+ * The EOF value is only used just after the file is opened in order for the
+ * library to determine whether the file is empty, truncated, or okay. The
+ * MPIPOSIX driver doesn't bother to keep it updated since it's an expensive
+ * operation.
  */
 typedef struct H5FD_mpiposix_t {
-    H5FD_t  pub;    /*public stuff, must be first    */
-    int    fd;    /*the unix file handle            */
-    MPI_Comm  comm;    /*communicator        */
-    int         mpi_rank;       /* This process's rank                  */
-    int         mpi_size;       /* Total number of processes            */
-    haddr_t  eof;    /*end-of-file marker      */
-    haddr_t  eoa;    /*end-of-address marker      */
-    haddr_t  last_eoa;  /* Last known end-of-address marker  */
-    haddr_t  pos;    /* Current file I/O position          */
-    int    op;    /* Last file I/O operation    */
-    hsize_t  naccess;  /* Number of (write) accesses to file   */
+    H5FD_t          pub;            /* public stuff, must be first          */
+    int             fd;             /* the unix file handle                 */
+    MPI_Comm        comm;           /* communicator                         */
+    int             mpi_rank;       /* This process's rank                  */
+    int             mpi_size;       /* Total number of processes            */
+    haddr_t         eof;            /* end-of-file marker                   */
+    haddr_t         eoa;            /* end-of-address marker                */
+    haddr_t         last_eoa;       /* Last known end-of-address marker     */
+    haddr_t         pos;            /* Current file I/O position            */
+    H5FD_file_op_t  op;             /* Last file I/O operation              */
+    hsize_t         naccess;        /* Number of (write) accesses to file   */
 #ifdef H5_HAVE_GPFS
-    size_t      blksize;        /* Block size of file system            */
+    size_t          blksize;        /* Block size of file system            */
 #endif
-    hbool_t     use_gpfs;       /* Use GPFS to write things             */
+    hbool_t         use_gpfs;       /* Use GPFS to write things             */
 #ifndef H5_HAVE_WIN32_API
-    /*
-     * On most systems the combination of device and i-node number uniquely
-     * identify a file.
+    /* On most systems the combination of device and i-node number uniquely
+     * identify a file.  Note that Cygwin, MinGW and other Windows POSIX
+     * environments have the stat function (which fakes inodes)
+     * and will use the 'device + inodes' scheme as opposed to the
+     * Windows code further below.
      */
-    dev_t  device;    /*file device number    */
-    ino_t  inode;    /*file i-node number    */
+    dev_t           device;     /* file device number   */
+#ifdef H5_VMS
+    ino_t           inode[3];   /* file i-node number   */
 #else
-    /*
-     * On H5_HAVE_WIN32_API the low-order word of a unique identifier associated with the
-     * file and the volume serial number uniquely identify a file. This number
-     * (which, both? -rpm) may change when the system is restarted or when the
-     * file is opened. After a process opens a file, the identifier is
-     * constant until the file is closed. An application can use this
-     * identifier and the volume serial number to determine whether two
-     * handles refer to the same file.
+    ino_t           inode;      /* file i-node number   */
+#endif /* H5_VMS */
+#else
+    /* Files in windows are uniquely identified by the volume serial
+     * number and the file index (both low and high parts).
+     *
+     * There are caveats where these numbers can change, especially
+     * on FAT file systems.  On NTFS, however, a file should keep
+     * those numbers the same until renamed or deleted (though you
+     * can use ReplaceFile() on NTFS to keep the numbers the same
+     * while renaming).
+     *
+     * See the MSDN "BY_HANDLE_FILE_INFORMATION Structure" entry for
+     * more information.
+     *
+     * http://msdn.microsoft.com/en-us/library/aa363788(v=VS.85).aspx
      */
-    int fileindexlo;
-    int fileindexhi;
-#endif
+    DWORD           nFileIndexLow;
+    DWORD           nFileIndexHigh;
+    DWORD           dwVolumeSerialNumber;
+    
+    HANDLE          hFile;      /* Native windows file handle */
+#endif  /* H5_HAVE_WIN32_API */
 } H5FD_mpiposix_t;
 
 /*
- * This driver supports systems that have the lseek64() function by defining
- * some macros here so we don't have to have conditional compilations later
- * throughout the code.
- *
- * file_offset_t:  The datatype for file offsets, the second argument of
- *      the lseek() or lseek64() call.
- *
- * file_seek:    The function which adjusts the current file position,
- *      either lseek() or lseek64().
- */
-/* adding for windows NT file system support. */
-
-#ifdef H5_HAVE_LSEEK64
-#   define file_offset_t  off64_t
-#   define file_seek    lseek64
-#   define file_truncate  ftruncate64
-#elif defined (H5_HAVE_WIN32_API)
-# /*MSVC*/
-#   define file_offset_t __int64
-#   define file_seek _lseeki64
-#   define file_truncate  _ftruncatei64
-#else
-#   define file_offset_t  off_t
-#   define file_seek    HDlseek
-#   define file_truncate  HDftruncate
-#endif
-
-/*
  * These macros check for overflow of various quantities.  These macros
- * assume that file_offset_t is signed and haddr_t and size_t are unsigned.
+ * assume that HDoff_t is signed and haddr_t and size_t are unsigned.
  *
- * ADDR_OVERFLOW:  Checks whether a file address of type `haddr_t'
- *      is too large to be represented by the second argument
- *      of the file seek function.
+ * ADDR_OVERFLOW:   Checks whether a file address of type `haddr_t'
+ *                  is too large to be represented by the second argument
+ *                  of the file seek function.
  *
- * SIZE_OVERFLOW:  Checks whether a buffer size of type `hsize_t' is too
- *      large to be represented by the `size_t' type.
+ * SIZE_OVERFLOW:   Checks whether a buffer size of type `hsize_t' is too
+ *                  large to be represented by the `size_t' type.
  *
- * REGION_OVERFLOW:  Checks whether an address and size pair describe data
- *      which can be addressed entirely by the second
- *      argument of the file seek function.
+ * REGION_OVERFLOW: Checks whether an address and size pair describe data
+ *                  which can be addressed entirely by the second
+ *                  argument of the file seek function.
  */
-#define MAXADDR (((haddr_t)1<<(8*sizeof(file_offset_t)-1))-1)
-#define ADDR_OVERFLOW(A)  (HADDR_UNDEF==(A) ||            \
-         ((A) & ~(haddr_t)MAXADDR))
-#define SIZE_OVERFLOW(Z)  ((Z) & ~(hsize_t)MAXADDR)
-#define REGION_OVERFLOW(A,Z)  (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) ||      \
-         sizeof(file_offset_t)<sizeof(size_t) ||      \
-                                 HADDR_UNDEF==(A)+(Z) ||          \
-         (file_offset_t)((A)+(Z))<(file_offset_t)(A))
+#define MAXADDR                 (((haddr_t)1 << (8*sizeof(HDoff_t) - 1)) - 1)
+#define ADDR_OVERFLOW(A)        (HADDR_UNDEF == (A) || ((A) & ~(haddr_t)MAXADDR))
+#define SIZE_OVERFLOW(Z)        ((Z) & ~(hsize_t)MAXADDR)
+#define REGION_OVERFLOW(A,Z)    (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) ||    \
+                                    HADDR_UNDEF == (A) + (Z) ||             \
+                                    (HDoff_t)((A) + (Z)) < (HDoff_t)(A))
 
 /* Callbacks */
 static void *H5FD_mpiposix_fapl_get(H5FD_t *_file);
@@ -197,48 +191,48 @@ static MPI_Comm H5FD_mpiposix_communicator(const H5FD_t *_file);
 
 /* MPIPOSIX-specific file access properties */
 typedef struct H5FD_mpiposix_fapl_t {
-    hbool_t             use_gpfs;       /*use GPFS hints                */
-    MPI_Comm    comm;    /*communicator      */
+    hbool_t     use_gpfs;   /* use GPFS hints       */
+    MPI_Comm    comm;       /* communicator         */
 } H5FD_mpiposix_fapl_t;
 
 /* The MPIPOSIX file driver information */
 static const H5FD_class_mpi_t H5FD_mpiposix_g = {
     {   /* Start of superclass information */
-    "mpiposix",          /*name      */
-    MAXADDR,          /*maxaddr    */
-    H5F_CLOSE_SEMI,        /* fc_degree    */
-    NULL,          /*sb_size    */
-    NULL,          /*sb_encode    */
-    NULL,          /*sb_decode    */
-    sizeof(H5FD_mpiposix_fapl_t),    /*fapl_size    */
-    H5FD_mpiposix_fapl_get,      /*fapl_get    */
-    H5FD_mpiposix_fapl_copy,      /*fapl_copy    */
-    H5FD_mpiposix_fapl_free,       /*fapl_free    */
-    0,            /*dxpl_size    */
-    NULL,          /*dxpl_copy    */
-    NULL,          /*dxpl_free    */
-    H5FD_mpiposix_open,        /*open      */
-    H5FD_mpiposix_close,      /*close      */
-    H5FD_mpiposix_cmp,              /*cmp      */
-    H5FD_mpiposix_query,            /*query      */
-    NULL,          /*get_type_map    */
-    NULL,          /*alloc      */
-    NULL,          /*free      */
-    H5FD_mpiposix_get_eoa,      /*get_eoa    */
-    H5FD_mpiposix_set_eoa,       /*set_eoa    */
-    H5FD_mpiposix_get_eof,      /*get_eof    */
-    H5FD_mpiposix_get_handle,                   /*get_handle            */
-    H5FD_mpiposix_read,        /*read      */
-    H5FD_mpiposix_write,      /*write      */
-    NULL,          /*flush      */
-    H5FD_mpiposix_truncate,      /*truncate    */
-    NULL,                                       /*lock                  */
-    NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE         /*fl_map    */
+    "mpiposix",                     /* name             */
+    MAXADDR,                        /* maxaddr          */
+    H5F_CLOSE_SEMI,                 /* fc_degree        */
+    NULL,                           /* sb_size          */
+    NULL,                           /* sb_encode        */
+    NULL,                           /* sb_decode        */
+    sizeof(H5FD_mpiposix_fapl_t),   /* fapl_size        */
+    H5FD_mpiposix_fapl_get,         /* fapl_get         */
+    H5FD_mpiposix_fapl_copy,        /* fapl_copy        */
+    H5FD_mpiposix_fapl_free,        /* fapl_free        */
+    0,                              /* dxpl_size        */
+    NULL,                           /* dxpl_copy        */
+    NULL,                           /* dxpl_free        */
+    H5FD_mpiposix_open,             /* open             */
+    H5FD_mpiposix_close,            /* close            */
+    H5FD_mpiposix_cmp,              /* cmp              */
+    H5FD_mpiposix_query,            /* query            */
+    NULL,                           /* get_type_map     */
+    NULL,                           /* alloc            */
+    NULL,                           /* free             */
+    H5FD_mpiposix_get_eoa,          /* get_eoa          */
+    H5FD_mpiposix_set_eoa,          /* set_eoa          */
+    H5FD_mpiposix_get_eof,          /* get_eof          */
+    H5FD_mpiposix_get_handle,       /* get_handle       */
+    H5FD_mpiposix_read,             /* read             */
+    H5FD_mpiposix_write,            /* write            */
+    NULL,                           /* flush            */
+    H5FD_mpiposix_truncate,         /* truncate         */
+    NULL,                           /* lock             */
+    NULL,                           /* unlock           */
+    H5FD_FLMAP_DICHOTOMY            /* fl_map           */
     },  /* End of superclass information */
-    H5FD_mpiposix_mpi_rank,                     /*get_rank              */
-    H5FD_mpiposix_mpi_size,                     /*get_size              */
-    H5FD_mpiposix_communicator                  /*get_comm              */
+    H5FD_mpiposix_mpi_rank,         /* get_rank         */
+    H5FD_mpiposix_mpi_size,         /* get_size         */
+    H5FD_mpiposix_communicator      /* get_comm         */
 };
 
 
@@ -265,34 +259,31 @@ H5FD_mpiposix_init_interface(void)
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_init
- *
- * Purpose:  Initialize this driver by registering the driver with the
- *    library.
+ * Function:    H5FD_mpiposix_init
  *
- * Return:  Success:  The driver ID for the mpiposix driver.
+ * Purpose:     Initialize this driver by registering the driver with the
+ *              library.
  *
- *    Failure:  Negative.
+ * Return:      Success:    The driver ID for the mpiposix driver.
+ *              Failure:    Negative.
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 hid_t
 H5FD_mpiposix_init(void)
 {
-    hid_t ret_value=H5FD_MPIPOSIX_g;    /* Return value */
+    hid_t ret_value = H5FD_MPIPOSIX_g;    /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
-    if (H5I_VFL!=H5Iget_type(H5FD_MPIPOSIX_g))
+    if (H5I_VFL != H5Iget_type(H5FD_MPIPOSIX_g))
         H5FD_MPIPOSIX_g = H5FD_register((const H5FD_class_t *)&H5FD_mpiposix_g,sizeof(H5FD_class_mpi_t),FALSE);
 
     /* Set return value */
-    ret_value=H5FD_MPIPOSIX_g;
+    ret_value = H5FD_MPIPOSIX_g;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -300,11 +291,11 @@ done:
 
 
 /*---------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_term
+ * Function:    H5FD_mpiposix_term
  *
- * Purpose:  Shut down the VFD
+ * Purpose:     Shut down the VFD
  *
- * Return:  <none>
+ * Returns:     SUCCEED (can't fail)
  *
  * Programmer:  Quincey Koziol
  *              Friday, Jan 30, 2004
@@ -319,52 +310,41 @@ H5FD_mpiposix_term(void)
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Reset VFL ID */
-    H5FD_MPIPOSIX_g=0;
+    H5FD_MPIPOSIX_g = 0;
 
     FUNC_LEAVE_NOAPI_VOID
 } /* end H5FD_mpiposix_term() */
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5Pset_fapl_mpiposix
+ * Function:    H5Pset_fapl_mpiposix
  *
- * Purpose:  Store the user supplied MPI communicator COMM in
- *    the file access property list FAPL_ID which can then be used
- *    to create and/or open the file.  This function is available
- *    only in the parallel HDF5 library and is not collective.
+ * Purpose:     Store the user supplied MPI communicator COMM in
+ *              the file access property list FAPL_ID which can then be used
+ *              to create and/or open the file.  This function is available
+ *              only in the parallel HDF5 library and is not collective.
  *
- *    comm is the MPI communicator to be used for file open as
- *    defined in MPI_FILE_OPEN of MPI-2. This function makes a
- *    duplicate of comm. Any modification to comm after this function
- *    call returns has no effect on the access property list.
+ *              comm is the MPI communicator to be used for file open as
+ *              defined in MPI_FILE_OPEN of MPI-2. This function makes a
+ *              duplicate of comm. Any modification to comm after this function
+ *              call returns has no effect on the access property list.
  *
  *              If fapl_id has previously set comm value, it will be replaced
  *              and the old communicator is freed.
  *
- * Return:  Success:  Non-negative
- *     Failure:  Negative
+ * Return:      SUCCEED/FAIL
  *
  * Programmer:  Quincey Koziol
- *    Thursday, July 11, 2002
- *
- * Modifications:
- *    Albert Cheng, 2003-04-24
- *    Modified the description of the function that it now stores
- *    a duplicate of the communicator.  Free the old duplicate if
- *    previously set.  (Work is actually done by H5P_set_driver.)
- *
- *    Bill Wendling, 2003-05-01
- *    Modified to take an extra flag indicating that we should
- *    use the GPFS hints (if available) for this file.
+ *              Thursday, July 11, 2002
  *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs)
 {
-    H5FD_mpiposix_fapl_t  fa;
-    H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value;
+    H5FD_mpiposix_fapl_t    fa;
+    H5P_genplist_t          *plist;      /* Property list pointer */
+    herr_t                  ret_value;
 
     FUNC_ENTER_API(FAIL)
     H5TRACE3("e", "iMcb", fapl_id, comm, use_gpfs);
@@ -373,14 +353,14 @@ H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs)
     if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
     if (MPI_COMM_NULL == comm)
-  HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator")
+        HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator")
 
     /* Initialize driver specific properties */
     fa.comm = comm;
     fa.use_gpfs = use_gpfs;
 
     /* duplication is done during driver setting. */
-    ret_value= H5P_set_driver(plist, H5FD_MPIPOSIX, &fa);
+    ret_value = H5P_set_driver(plist, H5FD_MPIPOSIX, &fa);
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -388,57 +368,49 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5Pget_fapl_mpiposix
- *
- * Purpose:  If the file access property list is set to the H5FD_MPIPOSIX
- *    driver then this function returns a duplicate of the MPI
- *    communicator through the comm pointer. It is the responsibility
- *    of the application to free the returned communicator.
- *
- * Return:  Success:  Non-negative with the communicator and
- *        information returned through the COMM
- *        argument if non-null.  Since it is a duplicate
- *        of the stored object, future modifications to
- *        the access property list do not affect it and
- *        it is the responsibility of the application to
- *        free it.
- *
- *     Failure:  Negative
+ * Function:    H5Pget_fapl_mpiposix
+ *
+ * Purpose:     If the file access property list is set to the H5FD_MPIPOSIX
+ *              driver then this function returns a duplicate of the MPI
+ *              communicator through the comm pointer. It is the responsibility
+ *              of the application to free the returned communicator.
+ *
+ * Return:      Success:    Non-negative with the communicator and
+ *                          information returned through the COMM
+ *                          argument if non-null.  Since it is a duplicate
+ *                          of the stored object, future modifications to
+ *                          the access property list do not affect it and
+ *                          it is the responsibility of the application to
+ *                          free it.
+ *              Failure:    Negative
  *
  * Programmer:  Quincey Koziol
- *    Thursday, July 11, 2002
- *
- * Modifications:
- *    Albert Cheng, 2003-04-24
- *    Return duplicate of the stored communicator.
- *
- *              Bill Wendling, 2003-05-01
- *              Return the USE_GPFS flag.
+ *              Thursday, July 11, 2002
  *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/)
 {
-    H5FD_mpiposix_fapl_t  *fa;
-    H5P_genplist_t *plist;      /* Property list pointer */
-    int    mpi_code;    /* mpi return code */
-    herr_t      ret_value=SUCCEED;      /* Return value */
+    H5FD_mpiposix_fapl_t    *fa;
+    H5P_genplist_t          *plist;                 /* Property list pointer    */
+    int                     mpi_code;               /* mpi return code          */
+    herr_t                  ret_value = SUCCEED;    /* Return value             */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE3("e", "ixx", fapl_id, comm, use_gpfs);
 
     if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
         HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
-    if (H5FD_MPIPOSIX!=H5P_get_driver(plist))
+    if (H5FD_MPIPOSIX != H5P_get_driver(plist))
         HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
-    if (NULL==(fa=H5P_get_driver_info(plist)))
+    if (NULL == (fa = H5P_get_driver_info(plist)))
         HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
 
     /* Get MPI Communicator */
     if (comm){
-  if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(fa->comm, comm)))
-      HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code)
+        if (MPI_SUCCESS != (mpi_code = MPI_Comm_dup(fa->comm, comm)))
+            HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code)
     }
 
     if (use_gpfs)
@@ -450,45 +422,39 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_fapl_get
- *
- * Purpose:  Returns a file access property list which could be used to
- *    create another file the same as this one.
+ * Function:    H5FD_mpiposix_fapl_get
  *
- * Return:  Success:  Ptr to new file access property list with all
- *        fields copied from the file pointer.
+ * Purpose:     Returns a file access property list which could be used to
+ *              create another file the same as this one.
  *
- *    Failure:  NULL
+ * Return:      Success:    Ptr to new file access property list with all
+ *                          fields copied from the file pointer.
+ *              Failure:    NULL
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *     Albert Cheng, 2003-04-24
- *     Duplicate the communicator object so that the new
- *     property list is insulated from the old one.
- *
  *-------------------------------------------------------------------------
  */
 static void *
 H5FD_mpiposix_fapl_get(H5FD_t *_file)
 {
-    H5FD_mpiposix_t  *file = (H5FD_mpiposix_t*)_file;
-    H5FD_mpiposix_fapl_t *fa = NULL;
-    int    mpi_code;  /* MPI return code */
-    void        *ret_value;     /* Return value */
+    H5FD_mpiposix_t         *file = (H5FD_mpiposix_t*)_file;
+    H5FD_mpiposix_fapl_t    *fa = NULL;
+    int                     mpi_code;       /* MPI return code */
+    void                    *ret_value;     /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
-    if (NULL==(fa=H5MM_calloc(sizeof(H5FD_mpiposix_fapl_t))))
+    if (NULL == (fa = H5MM_calloc(sizeof(H5FD_mpiposix_fapl_t))))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
     /* Duplicate the communicator. */
     if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(file->comm, &fa->comm)))
-  HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
+        HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
 
     fa->use_gpfs = file->use_gpfs;
 
@@ -501,19 +467,16 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_fapl_copy
+ * Function:    H5FD_mpiposix_fapl_copy
  *
- * Purpose:  Copies the mpiposix-specific file access properties.
+ * Purpose:     Copies the mpiposix-specific file access properties.
  *
- * Return:  Success:  Ptr to a new property list
- *
- *    Failure:  NULL
+ * Return:      Success:    Ptr to a new property list
+ *              Failure:    NULL
  *
  * Programmer:  Albert Cheng
  *              Apr 24, 2003
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static void *
@@ -526,24 +489,24 @@ H5FD_mpiposix_fapl_copy(const void *_old_fa)
 
     FUNC_ENTER_NOAPI_NOINIT
 
-    if (NULL==(new_fa=H5MM_malloc(sizeof(H5FD_mpiposix_fapl_t))))
+    if (NULL == (new_fa = H5MM_malloc(sizeof(H5FD_mpiposix_fapl_t))))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
     /* Copy the general information */
     HDmemcpy(new_fa, old_fa, sizeof(H5FD_mpiposix_fapl_t));
 
     /* Duplicate communicator. */
-    if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(old_fa->comm, &new_fa->comm)))
-  HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
+    if (MPI_SUCCESS != (mpi_code = MPI_Comm_dup(old_fa->comm, &new_fa->comm)))
+        HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
 
     new_fa->use_gpfs = old_fa->use_gpfs;
     ret_value = new_fa;
 
 done:
     if (NULL == ret_value){
-  /* cleanup */
-  if (new_fa)
-      H5MM_xfree(new_fa);
+        /* cleanup */
+        if (new_fa)
+            H5MM_xfree(new_fa);
     }
 
     FUNC_LEAVE_NOAPI(ret_value)
@@ -551,19 +514,15 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_fapl_free
+ * Function:    H5FD_mpiposix_fapl_free
  *
- * Purpose:  Frees the mpiposix-specific file access properties.
+ * Purpose:     Frees the mpiposix-specific file access properties.
  *
- * Return:  Success:  0
- *
- *    Failure:  -1
+ * Return:      SUCCEED (can't fail)
  *
  * Programmer:  Albert Cheng
  *              Apr 24, 2003
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
@@ -573,10 +532,10 @@ H5FD_mpiposix_fapl_free(void *_fa)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(fa);
+    HDassert(fa);
 
     /* Free the internal communicator */
-    assert(MPI_COMM_NULL!=fa->comm);
+    HDassert(MPI_COMM_NULL != fa->comm);
     MPI_Comm_free(&fa->comm);
     H5MM_xfree(fa);
 
@@ -588,53 +547,46 @@ H5FD_mpiposix_fapl_free(void *_fa)
  * Function:    H5FD_mpiposix_open
  *
  * Purpose:     Opens a file with name NAME.  The FLAGS are a bit field with
- *    purpose similar to the second argument of open(2) and which
- *    are defined in H5Fpublic.h. The file access property list
- *    FAPL_ID contains the properties driver properties and MAXADDR
- *    is the largest address which this file will be expected to
- *    access.  This is collective.
+ *              purpose similar to the second argument of open(2) and which
+ *              are defined in H5Fpublic.h. The file access property list
+ *              FAPL_ID contains the properties driver properties and MAXADDR
+ *              is the largest address which this file will be expected to
+ *              access.  This is collective.
  *
- * Return:      Success:        A new file pointer.
- *              Failure:        NULL
+ * Return:      Success:    A new file pointer.
+ *              Failure:    NULL
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *     Albert Cheng, 2003-04-24
- *     Duplicate the communicator so that file is insulated from the
- *     old one.
- *
  *-------------------------------------------------------------------------
  */
 static H5FD_t *
 H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
          haddr_t maxaddr)
 {
-    H5FD_mpiposix_t    *file=NULL;     /* New MPIPOSIX file struct */
-    int                         o_flags;        /* Flags for file open call */
-    int              fd=(-1);        /* File handle for file opened */
-    int        mpi_rank;       /* MPI rank of this process */
-    int        mpi_size;       /* Total number of MPI processes */
-    int        mpi_code;  /* mpi return code */
-    const H5FD_mpiposix_fapl_t  *fa=NULL;       /* MPIPOSIX file access property list information */
-    H5FD_mpiposix_fapl_t  _fa;            /* Private copy of default file access property list information */
-    H5P_genplist_t              *plist;         /* Property list pointer */
-    h5_stat_t                   sb;             /* Portable 'stat' struct */
+    H5FD_mpiposix_t *file = NULL;   /* New MPIPOSIX file struct         */
+    int             o_flags;        /* Flags for file open call         */
+    int             fd = -1;        /* File handle for file opened      */
+    int             mpi_rank;       /* MPI rank of this process         */
+    int             mpi_size;       /* Total number of MPI processes    */
+    int             mpi_code;       /* mpi return code                  */
+    const H5FD_mpiposix_fapl_t  *fa = NULL;     /* MPIPOSIX file access property list information                   */
+    H5FD_mpiposix_fapl_t        _fa;            /* Private copy of default file access property list information    */
+    H5P_genplist_t  *plist;         /* Property list pointer            */
+    h5_stat_t       sb;             /* Portable 'stat' struct           */
 #ifdef H5_HAVE_WIN32_API
-    HFILE filehandle;
     struct _BY_HANDLE_FILE_INFORMATION fileinfo;
-    int results;
 #endif
-    H5FD_t                     *ret_value=NULL; /* Return value */
-    MPI_Comm                    comm_dup=MPI_COMM_NULL;
+    H5FD_t          *ret_value = NULL; /* Return value */
+    MPI_Comm        comm_dup = MPI_COMM_NULL;
 
     FUNC_ENTER_NOAPI_NOINIT
 
     /* Check arguments */
     if (!name || !*name)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
-    if (0==maxaddr || HADDR_UNDEF==maxaddr)
+    if (0 == maxaddr || HADDR_UNDEF == maxaddr)
         HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
     if (ADDR_OVERFLOW(maxaddr))
         HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr")
@@ -642,31 +594,31 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
     /* Obtain a pointer to mpiposix-specific file access properties */
     if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
-    if (H5P_FILE_ACCESS_DEFAULT==fapl_id || H5FD_MPIPOSIX!=H5P_get_driver(plist)) {
-  _fa.comm = MPI_COMM_SELF; /*default*/
+    if (H5P_FILE_ACCESS_DEFAULT == fapl_id || H5FD_MPIPOSIX != H5P_get_driver(plist)) {
+        _fa.comm = MPI_COMM_SELF; /*default*/
         _fa.use_gpfs = FALSE;
-  fa = &_fa;
+        fa = &_fa;
     } /* end if */
     else {
-  fa = H5P_get_driver_info(plist);
-  assert(fa);
+        fa = H5P_get_driver_info(plist);
+        HDassert(fa);
     } /* end else */
 
     /* Duplicate the communicator for use by this file. */
-    if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(fa->comm, &comm_dup)))
-  HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
+    if (MPI_SUCCESS != (mpi_code = MPI_Comm_dup(fa->comm, &comm_dup)))
+        HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
 
     /* Get the MPI rank of this process and the total number of processes */
-    if (MPI_SUCCESS != (mpi_code=MPI_Comm_rank (comm_dup, &mpi_rank)))
+    if (MPI_SUCCESS != (mpi_code = MPI_Comm_rank (comm_dup, &mpi_rank)))
         HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code)
-    if (MPI_SUCCESS != (mpi_code=MPI_Comm_size (comm_dup, &mpi_size)))
+    if (MPI_SUCCESS != (mpi_code = MPI_Comm_size (comm_dup, &mpi_size)))
         HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mpi_code)
 
     /* Build the open flags */
     o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
 
     /* Only set the creation flag(s) for process 0 */
-    if(mpi_rank==0) {
+    if(0 == mpi_rank) {
         if (H5F_ACC_TRUNC & flags)
             o_flags |= O_TRUNC;
         if (H5F_ACC_CREAT & flags)
@@ -680,13 +632,14 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
      * open (never create) the file and all processes proceed.
      */
     /* Process 0 opens (or creates) file and broadcasts result to other processes */
-    if(mpi_rank==0) {
+    if(0 == mpi_rank) {
         /* Open the file */
-        fd=HDopen(name, o_flags, 0666);
+        fd = HDopen(name, o_flags, 0666);
     } /* end if */
 
-    /* Broadcast the results of the open() from process 0 */
-    /* This is necessary because of the "tentative open" code in H5F_open()
+    /* Broadcast the results of the open() from process 0
+     *
+     * This is necessary because of the "tentative open" code in H5F_open()
      * where the file is attempted to be opened with different flags from the
      * user's, in order to check for the file's existence, etc.  Here, process 0
      * gets different flags from the other processes (since it is in charge of
@@ -698,34 +651,36 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
         HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
 
     /* If the file open on process 0 failed, bail out on all processes now */
-    if(fd<0)
+    if(fd < 0)
         HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
 
     /* Other processes (non 0) wait for broadcast result from process 0 and then open file */
-    if(mpi_rank!=0) {
+    if(mpi_rank != 0) {
         /* Open the file */
-        if ((fd=HDopen(name, o_flags, 0666))<0)
+        if ((fd = HDopen(name, o_flags, 0666)) < 0)
             HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
     } /* end if */
 
     /* Process 0 fstat()s the file and broadcasts the results to the other processes */
-    if(mpi_rank==0) {
+    if(0 == mpi_rank) {
         /* Get the stat information */
-        if (HDfstat(fd, &sb)<0)
+        if (HDfstat(fd, &sb) < 0)
             HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
     } /* end if */
 
     /* Broadcast the results of the fstat() from process 0 */
-    if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&sb, sizeof(h5_stat_t), MPI_BYTE, 0, comm_dup)))
+    if (MPI_SUCCESS != (mpi_code = MPI_Bcast(&sb, sizeof(h5_stat_t), MPI_BYTE, 0, comm_dup)))
         HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
 
 #ifdef H5_HAVE_GPFS
     if (fa->use_gpfs) {
         /*
-         * Free all byte range tokens. This is a good thing to do if raw data is aligned on 256kB boundaries (a GPFS page is
-         * 256kB). Care should be taken that there aren't too many sub-page writes, or the mmfsd may become overwhelmed.  This
-         * should probably eventually be passed down here as a property. The gpfs_fcntl() will most likely fail if `fd' isn't
-         * on a GPFS file system. */
+         * Free all byte range tokens. This is a good thing to do if raw data
+         * is aligned on 256kB boundaries (a GPFS page is 256kB). Care should
+         * be taken that there aren't too many sub-page writes, or the mmfsd
+         * may become overwhelmed.  This should probably eventually be passed
+         * down here as a property. The gpfs_fcntl() will most likely fail if
+         * 'fd' isn't on a GPFS file system. */
         struct {
             gpfsFcntlHeader_t   hdr;
             gpfsFreeRange_t     fr;
@@ -738,13 +693,13 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
         hint.fr.start = 0;
         hint.fr.length = 0;
 
-        if (gpfs_fcntl(fd, &hint)<0)
+        if (gpfs_fcntl(fd, &hint) < 0)
             HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS")
     }
 #endif  /* H5_HAVE_GPFS */
 
     /* Build the file struct and initialize it */
-    if (NULL==(file=H5MM_calloc(sizeof(H5FD_mpiposix_t))))
+    if (NULL == (file=H5MM_calloc(sizeof(H5FD_mpiposix_t))))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
 #ifdef REPORT_IO
@@ -755,8 +710,9 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
     file->fd = fd;
     file->eof = sb.st_size;
 
-    /* for H5_HAVE_WIN32_API support. H5_HAVE_WIN32_API 'stat' does not have st_blksize and st_blksize
-       is only used for the H5_HAVE_GPFS case */
+    /* for H5_HAVE_WIN32_API support. H5_HAVE_WIN32_API 'stat' does not have
+     * st_blksize and st_blksize is only used for the H5_HAVE_GPFS case.
+     */
 #ifdef H5_HAVE_GPFS
     file->blksize = sb.st_blksize;
 #endif
@@ -775,26 +731,38 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
 
     /* Set the information for the file's device and inode */
 #ifdef H5_HAVE_WIN32_API
-    filehandle = _get_osfhandle(fd);
-    results = GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
-    file->fileindexhi = fileinfo.nFileIndexHigh;
-    file->fileindexlo = fileinfo.nFileIndexLow;
-#else
+    file->hFile = (HANDLE)_get_osfhandle(fd);
+    if(INVALID_HANDLE_VALUE == file->hFile)
+        HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to get Windows file handle")
+
+    if(!GetFileInformationByHandle((HANDLE)file->hFile, &fileinfo))
+        HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to get Windows file information")
+
+    file->nFileIndexHigh = fileinfo.nFileIndexHigh;
+    file->nFileIndexLow = fileinfo.nFileIndexLow;
+    file->dwVolumeSerialNumber = fileinfo.dwVolumeSerialNumber;
+#else /* H5_HAVE_WIN32_API */
     file->device = sb.st_dev;
+#ifdef H5_VMS
+    file->inode[0] = sb.st_ino[0];
+    file->inode[1] = sb.st_ino[1];
+    file->inode[2] = sb.st_ino[2];
+#else /* H5_VMS */
     file->inode = sb.st_ino;
-#endif
+#endif /* H5_VMS */
+#endif /* H5_HAVE_WIN32_API */
 
     /* Indicate success */
-    ret_value=(H5FD_t *)file;
+    ret_value = (H5FD_t *)file;
 
 done:
     /* Error cleanup */
-    if(ret_value==NULL) {
+    if(NULL == ret_value) {
         /* Close the file if it was left open */
-        if(fd!=(-1))
+        if(fd != -1)
             HDclose(fd);
-  if (MPI_COMM_NULL != comm_dup)
-      MPI_Comm_free(&comm_dup);
+        if (MPI_COMM_NULL != comm_dup)
+            MPI_Comm_free(&comm_dup);
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
@@ -806,30 +774,26 @@ done:
  *
  * Purpose:     Closes a file.
  *
- * Return:      Success:  Non-negative
- *     Failure:  Negative
+ * Return:      SUCCEED/FAIL
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *     Albert Cheng, 2003-04-24
- *    Free the communicator stored.
  *-------------------------------------------------------------------------
  */
 static herr_t
 H5FD_mpiposix_close(H5FD_t *_file)
 {
-    H5FD_mpiposix_t  *file = (H5FD_mpiposix_t*)_file;
-    herr_t      ret_value=SUCCEED;       /* Return value */
+    H5FD_mpiposix_t     *file = (H5FD_mpiposix_t*)_file;
+    herr_t              ret_value = SUCCEED;       /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
     /* Close the unix file */
-    if (HDclose(file->fd)<0)
+    if(HDclose(file->fd) < 0)
         HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
 
     /* make sure all processes have closed the file before returning. */
@@ -844,20 +808,17 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_cmp
+ * Function:    H5FD_mpiposix_cmp
  *
- * Purpose:  Compares two files belonging to this driver using an
- *    arbitrary (but consistent) ordering.
+ * Purpose:     Compares two files belonging to this driver using an
+ *              arbitrary (but consistent) ordering.
  *
- * Return:  Success:  A value like strcmp()
- *    Failure:  never fails (arguments were checked by the
- *        caller).
+ * Return:      Success:    A value like strcmp()
+ *              Failure:    never fails (arguments were checked by the caller).
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static int
@@ -865,33 +826,39 @@ H5FD_mpiposix_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
 {
     const H5FD_mpiposix_t  *f1 = (const H5FD_mpiposix_t*)_f1;
     const H5FD_mpiposix_t  *f2 = (const H5FD_mpiposix_t*)_f2;
-    int ret_value=0;
+    int ret_value = 0;
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
 #ifdef H5_HAVE_WIN32_API
-    if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)
-    if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1)
+    if(f1->dwVolumeSerialNumber < f2->dwVolumeSerialNumber) HGOTO_DONE(-1)
+    if(f1->dwVolumeSerialNumber > f2->dwVolumeSerialNumber) HGOTO_DONE(1)
 
-    if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1)
-    if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1)
+    if(f1->nFileIndexHigh < f2->nFileIndexHigh) HGOTO_DONE(-1)
+    if(f1->nFileIndexHigh > f2->nFileIndexHigh) HGOTO_DONE(1)
 
-#else
+    if(f1->nFileIndexLow < f2->nFileIndexLow) HGOTO_DONE(-1)
+    if(f1->nFileIndexLow > f2->nFileIndexLow) HGOTO_DONE(1)
+#else /* H5_HAVE_WIN32_API */
 #ifdef H5_DEV_T_IS_SCALAR
-    if (f1->device < f2->device) HGOTO_DONE(-1)
-    if (f1->device > f2->device) HGOTO_DONE(1)
+    if(f1->device < f2->device) HGOTO_DONE(-1)
+    if(f1->device > f2->device) HGOTO_DONE(1)
 #else /* H5_DEV_T_IS_SCALAR */
     /* If dev_t isn't a scalar value on this system, just use memcmp to
      * determine if the values are the same or not.  The actual return value
      * shouldn't really matter...
      */
-    if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1)
-    if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1)
+    if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t)) < 0) HGOTO_DONE(-1)
+    if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t)) > 0) HGOTO_DONE(1)
 #endif /* H5_DEV_T_IS_SCALAR */
-
-    if (f1->inode < f2->inode) HGOTO_DONE(-1)
-    if (f1->inode > f2->inode) HGOTO_DONE(1)
-#endif
+#ifdef H5_VMS
+    if(HDmemcmp(&(f1->inode), &(f2->inode), 3 * sizeof(ino_t)) < 0) HGOTO_DONE(-1)
+    if(HDmemcmp(&(f1->inode), &(f2->inode), 3 * sizeof(ino_t)) > 0) HGOTO_DONE(1)
+#else /* H5_VMS */
+    if(f1->inode < f2->inode) HGOTO_DONE(-1)
+    if(f1->inode > f2->inode) HGOTO_DONE(1)
+#endif /* H5_VMS */
+#endif /* H5_HAVE_WIN32_API */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -899,25 +866,16 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_query
+ * Function:    H5FD_mpiposix_query
  *
- * Purpose:  Set the flags that this VFL driver is capable of supporting.
+ * Purpose:     Set the flags that this VFL driver is capable of supporting.
  *              (listed in H5FDpublic.h)
  *
- * Return:  Success:  non-negative
- *    Failure:  negative
+ * Return:      SUCCEED (can't fail)
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
- *              John Mainzer -- 9/21/05
- *              Modified code to turn off the
- *              H5FD_FEAT_ACCUMULATE_METADATA_WRITE flag.
- *    With the movement of all cache writes to process 0,
- *    this flag has become problematic in PHDF5.
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
@@ -928,8 +886,8 @@ H5FD_mpiposix_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
     /* Set the VFL feature flags that this driver supports */
     if(flags) {
         *flags=0;
-        *flags|=H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
-        *flags|=H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
+        *flags |= H5FD_FEAT_AGGREGATE_METADATA;  /* OK to aggregate metadata allocations */
+        *flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
     } /* end if */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
@@ -937,23 +895,18 @@ H5FD_mpiposix_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_get_eoa
+ * Function:    H5FD_mpiposix_get_eoa
  *
- * Purpose:  Gets the end-of-address marker for the file. The EOA marker
- *    is the first address past the last byte allocated in the
- *    format address space.
+ * Purpose:     Gets the end-of-address marker for the file. The EOA marker
+ *              is the first address past the last byte allocated in the
+ *              format address space.
  *
- * Return:  Success:  The end-of-address marker.
- *    Failure:  HADDR_UNDEF
+ * Return:      Success:    The end-of-address marker.
+ *              Failure:    HADDR_UNDEF
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *              Raymond Lu
- *              21 Dec. 2006
- *              Added the parameter TYPE.  It's only used for MULTI driver.
- *
  *-------------------------------------------------------------------------
  */
 static haddr_t
@@ -963,31 +916,25 @@ H5FD_mpiposix_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
     FUNC_LEAVE_NOAPI(file->eoa)
 } /* end H5FD_mpiposix_get_eoa() */
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_set_eoa
+ * Function:    H5FD_mpiposix_set_eoa
  *
- * Purpose:  Set the end-of-address marker for the file. This function is
- *    called shortly after an existing HDF5 file is opened in order
- *    to tell the driver where the end of the HDF5 data is located.
+ * Purpose:     Set the end-of-address marker for the file. This function is
+ *              called shortly after an existing HDF5 file is opened in order
+ *              to tell the driver where the end of the HDF5 data is located.
  *
- * Return:  Success:  non-negative
- *    Failure:  negative
+ * Return:      SUCCEED (can't fail)
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *              Raymond Lu
- *              21 Dec. 2006
- *              Added the parameter TYPE.  It's only used for MULTI driver.
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
@@ -997,8 +944,8 @@ H5FD_mpiposix_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
     file->eoa = addr;
 
@@ -1007,25 +954,23 @@ H5FD_mpiposix_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_get_eof
+ * Function:    H5FD_mpiposix_get_eof
  *
- * Purpose:  Gets the end-of-file marker for the file. The EOF marker
- *    is the real size of the file.
+ * Purpose:     Gets the end-of-file marker for the file. The EOF marker
+ *              is the real size of the file.
  *
- *    The MPIPOSIX driver doesn't bother keeping this field updated
- *    since that's a relatively expensive operation. Fortunately
- *    the library only needs the EOF just after the file is opened
- *    in order to determine whether the file is empty, truncated,
- *    or okay.
+ *              The MPIPOSIX driver doesn't bother keeping this field updated
+ *              since that's a relatively expensive operation. Fortunately
+ *              the library only needs the EOF just after the file is opened
+ *              in order to determine whether the file is empty, truncated,
+ *              or okay.
  *
- * Return:  Success:  The end-of-address marker.
- *    Failure:  HADDR_UNDEF
+ * Return:      Success:    The end-of-address marker.
+ *              Failure:    HADDR_UNDEF
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static haddr_t
@@ -1035,10 +980,10 @@ H5FD_mpiposix_get_eof(const H5FD_t *_file)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
-    FUNC_LEAVE_NOAPI(MAX(file->eof,file->eoa))
+    FUNC_LEAVE_NOAPI(MAX(file->eof, file->eoa))
 } /* end H5FD_mpiposix_get_eof() */
 
 
@@ -1047,13 +992,11 @@ H5FD_mpiposix_get_eof(const H5FD_t *_file)
  *
  * Purpose:        Returns the file handle of MPI-POSIX file driver.
  *
- * Returns:        Non-negative if succeed or negative if fails.
+ * Returns:        SUCCEED/FAIL
  *
  * Programmer:     Raymond Lu
  *                 Sept. 16, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
@@ -1075,43 +1018,41 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_read
+ * Function:    H5FD_mpiposix_read
  *
- * Purpose:  Reads SIZE bytes of data from FILE beginning at address ADDR
- *    into buffer BUF according to data transfer properties in
- *    DXPL_ID using potentially complex file and buffer types to
- *    effect the transfer.
+ * Purpose:     Reads SIZE bytes of data from FILE beginning at address ADDR
+ *              into buffer BUF according to data transfer properties in
+ *              DXPL_ID using potentially complex file and buffer types to
+ *              effect the transfer.
  *
- *    Reading past the end of the file returns zeros instead of
- *    failing.
+ *              Reading past the end of the file returns zeros instead of
+ *              failing.
  *
- * Return:  Success:  Non-negative. Result is stored in caller-supplied
- *        buffer BUF.
- *    Failure:  Negative, Contents of buffer BUF are undefined.
+ * Return:      Success:    Non-negative. Result is stored in caller-supplied
+ *                          buffer BUF.
+ *              Failure:    Negative, Contents of buffer BUF are undefined.
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr, size_t size,
-         void *buf/*out*/)
+H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
+        haddr_t addr, size_t size, void *buf/*out*/)
 {
-    H5FD_mpiposix_t  *file = (H5FD_mpiposix_t*)_file;
-    ssize_t          nbytes;         /* Number of bytes read each I/O call */
-    herr_t               ret_value=SUCCEED;
+    H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
+    ssize_t         nbytes;         /* Number of bytes read each I/O call */
+    herr_t          ret_value = SUCCEED;
 
     FUNC_ENTER_NOAPI_NOINIT
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
-    assert(buf);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
+    HDassert(buf);
 
     /* Check for overflow conditions */
-    if (HADDR_UNDEF==addr)
+    if (HADDR_UNDEF == addr)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
     if (REGION_OVERFLOW(addr, size))
         HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
@@ -1128,31 +1069,52 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
 #endif
 
     /* Seek to the correct location */
-    if ((addr!=file->pos || OP_READ!=file->op) &&
-            file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0)
-        HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+    if(addr != file->pos || OP_READ != file->op) {
+        if(HDlseek(file->fd, (HDoff_t)addr, SEEK_SET) < 0)
+            HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+    } /* end if */
 
-    /*
-     * Read data, being careful of interrupted system calls, partial results,
+    /* Read data, being careful of interrupted system calls, partial results,
      * and the end of the file.
      */
-    while (size>0) {
+    while(size > 0) {
+
+        h5_mpiposix_io_t        bytes_in    = 0;    /* # of bytes to read       */
+        h5_mpiposix_io_ret_t    bytes_read  = -1;   /* # of bytes actually read */ 
+
+        /* Trying to read more bytes than the return type can handle is
+         * undefined behavior in POSIX.
+         */
+        if(size > H5_MPIPOSIX_MAX_IO_BYTES_g)
+            bytes_in = H5_MPIPOSIX_MAX_IO_BYTES_g;
+        else
+            bytes_in = (h5_mpiposix_io_t)size;
+
         do {
-            nbytes = HDread(file->fd, buf, size);
-        } while (-1==nbytes && EINTR==errno);
-        if (-1==nbytes)
-            HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed")
-        if (0==nbytes) {
+            bytes_read = HDread(file->fd, buf, bytes_in);
+        } while(-1 == bytes_read && EINTR == errno);
+        
+        if(-1 == bytes_read) { /* error */
+            int myerrno = errno;
+            time_t mytime = HDtime(NULL);
+            HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
+
+            HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
+        } /* end if */
+        
+        if(0 == bytes_read) {
             /* end of file but not end of format address space */
             HDmemset(buf, 0, size);
             break;
         } /* end if */
-        assert(nbytes>=0);
-        assert((size_t)nbytes<=size);
-        size -= nbytes;
-        addr += (haddr_t)nbytes;
-        buf = (char*)buf + nbytes;
-    }
+        
+        HDassert(bytes_read >= 0);
+        HDassert((size_t)bytes_read <= size);
+        
+        size -= (size_t)bytes_read;
+        addr += (haddr_t)bytes_read;
+        buf = (char *)buf + bytes_read;
+    } /* end while */
 
     /* Update current position */
     file->pos = addr;
@@ -1160,7 +1122,7 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
 
 done:
     /* Check for error */
-    if(ret_value<0) {
+    if(ret_value < 0) {
         /* Reset last file I/O information */
         file->pos = HADDR_UNDEF;
         file->op = OP_UNKNOWN;
@@ -1171,55 +1133,46 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_write
+ * Function:    H5FD_mpiposix_write
  *
- * Purpose:  Writes SIZE bytes of data to FILE beginning at address ADDR
- *    from buffer BUF according to data transfer properties in
- *    DXPL_ID using potentially complex file and buffer types to
- *    effect the transfer.
+ * Purpose:     Writes SIZE bytes of data to FILE beginning at address ADDR
+ *              from buffer BUF according to data transfer properties in
+ *              DXPL_ID using potentially complex file and buffer types to
+ *              effect the transfer.
  *
- * Return:  Success:  non-negative
- *    Failure:  negative
+ * Return:      SUCCEED/FAIL
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
- *              Quincey Koziol - 2002/07/18
- *              Added "block_before_meta_write" dataset transfer flag, which
- *              is set during writes from a metadata cache flush and indicates
- *              that all the processes must sync up before (one of them)
- *              writing metadata.
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
 H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
     size_t size, const void *buf)
 {
-    H5FD_mpiposix_t  *file = (H5FD_mpiposix_t*)_file;
+    H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
 #if 0 /* JRM */
     int      mpi_code;  /* MPI return code */
 #endif /* JRM */
-    ssize_t          nbytes;         /* Number of bytes written each I/O call */
-    H5P_genplist_t      *plist;         /* Property list pointer */
-    herr_t               ret_value=SUCCEED;      /* Return value */
+    ssize_t         nbytes;                 /* Number of bytes written each I/O call    */
+    H5P_genplist_t  *plist;                 /* Property list pointer                    */
+    herr_t          ret_value = SUCCEED;    /* Return value                             */
 
     FUNC_ENTER_NOAPI_NOINIT
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
-    assert(H5I_GENPROP_LST==H5I_get_type(dxpl_id));
-    assert(TRUE==H5P_isa_class(dxpl_id,H5P_DATASET_XFER));
-    assert(buf);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
+    HDassert(H5I_GENPROP_LST == H5I_get_type(dxpl_id));
+    HDassert(TRUE == H5P_isa_class(dxpl_id,H5P_DATASET_XFER));
+    HDassert(buf);
 
     /* Check for overflow conditions */
-    if (HADDR_UNDEF==addr)
+    if (HADDR_UNDEF == addr)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
     if (REGION_OVERFLOW(addr, size))
         HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
-    if (addr+size>file->eoa)
+    if ((addr + size) > file->eoa)
         HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
 
     /* Obtain the data transfer properties */
@@ -1235,26 +1188,26 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
      * metadata.
      *             -- JRM 9/1/05
      */
-    if(type!=H5FD_MEM_DRAW) {
-        unsigned    block_before_meta_write=0;      /* Whether to block before a metadata write */
-
-        /* Check if we need to syncronize all processes before attempting metadata write
-         * (Prevents race condition where the process writing the metadata goes ahead
-         * and writes the metadata to the file before all the processes have
-         * read the data, "transmitting" data from the "future" to the reading
-         * process. -QAK )
+    if(type != H5FD_MEM_DRAW) {
+        unsigned    block_before_meta_write = 0;    /* Whether to block before a metadata write */
+
+        /* Check if we need to synchronize all processes before attempting
+         * metadata write (Prevents race condition where the process writing
+         * the metadata goes ahead and writes the metadata to the file before
+         * all the processes have read the data, "transmitting" data from the
+         * "future" to the reading process. -QAK )
          *
          * The only time we don't want to block before a metadata write is when
          * we are flushing out a bunch of metadata.  Then, we block before the
          * first write and don't block for further writes in the sequence.
          */
-        if(H5P_exist_plist(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME)>0)
-            if(H5P_get(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,&block_before_meta_write)<0)
+        if(H5P_exist_plist(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME) > 0)
+            if(H5P_get(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,&block_before_meta_write) < 0)
                 HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property")
 
 #if 0 /* JRM */
         if(block_before_meta_write)
-            if (MPI_SUCCESS!= (mpi_code=MPI_Barrier(file->comm)))
+            if (MPI_SUCCESS != (mpi_code = MPI_Barrier(file->comm)))
                 HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
 #endif /* JRM */
 
@@ -1271,11 +1224,11 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
         MPI_Comm_rank(MPI_COMM_WORLD, &commrank);
         HDfprintf(stderr, "write: rank=%d file=0x%08lx type=%d, addr=%a size=%Zu %s\n",
                 commrank, (unsigned long)file, (int)type, addr, size,
-                0==file->naccess?"(FIRST ACCESS)":"");
+                0 == file->naccess ? "(FIRST ACCESS)" : "");
     }
 #endif
 
-    if (0==file->naccess++) {
+    if (0 == file->naccess++) {
         /* First write access to this file */
 #ifdef H5_HAVE_GPFS
         if (file->use_gpfs) {
@@ -1300,50 +1253,76 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
     }
 
     /* Seek to the correct location */
-    if ((addr!=file->pos || OP_WRITE!=file->op) &&
-            file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0)
-        HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+    if(addr != file->pos || OP_WRITE != file->op) {
+        if(HDlseek(file->fd, (HDoff_t)addr, SEEK_SET) < 0)
+            HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+    } /* end if */
 
-    /*
-     * Write the data, being careful of interrupted system calls and partial
-     * results
+    /* Write data, being careful of interrupted system calls, partial results,
+     * and the end of the file.
      */
-    while (size>0) {
+    while(size > 0) {
+
+        h5_mpiposix_io_t        bytes_in    = 0;    /* # of bytes to write          */
+        h5_mpiposix_io_ret_t    bytes_wrote = -1;   /* # of bytes actually written  */ 
+
+        /* Trying to write more bytes than the return type can handle is
+         * undefined behavior in POSIX.
+         */
+        if(size > H5_MPIPOSIX_MAX_IO_BYTES_g)
+            bytes_in = H5_MPIPOSIX_MAX_IO_BYTES_g;
+        else
+            bytes_in = (h5_mpiposix_io_t)size;
+
         do {
-            nbytes = HDwrite(file->fd, buf, size);
-        } while (-1==nbytes && EINTR==errno);
-        if (-1==nbytes)
-            HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
-        assert(nbytes>0);
-        assert((size_t)nbytes<=size);
-        size -= nbytes;
-        addr += (haddr_t)nbytes;
-        buf = (const char*)buf + nbytes;
+            bytes_wrote = HDwrite(file->fd, buf, bytes_in);
+        } while(-1 == bytes_wrote && EINTR == errno);
+        
+        if(-1 == bytes_wrote) { /* error */
+            int myerrno = errno;
+            time_t mytime = HDtime(NULL);
+            HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
+
+            HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file write failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
+        } /* end if */
+        
+        if(0 == bytes_wrote) {
+            /* end of file but not end of format address space */
+            HDmemset(buf, 0, size);
+            break;
+        } /* end if */
+        
+        HDassert(bytes_wrote >= 0);
+        HDassert((size_t)bytes_wrote <= size);
+        
+        size -= (size_t)bytes_wrote;
+        addr += (haddr_t)bytes_wrote;
+        buf = (char *)buf + bytes_wrote;
     } /* end while */
 
-    /* Update current last file I/O information */
+    /* Update current position */
     file->pos = addr;
     file->op = OP_WRITE;
 
 done:
     /* Check for error */
-    if(ret_value<0) {
+    if(ret_value < 0) {
         /* Reset last file I/O information */
         file->pos = HADDR_UNDEF;
         file->op = OP_UNKNOWN;
     } /* end if */
 #if 0 /* JRM */
-        /* Since metadata writes are now done by process 0 only, this broadcast
-   * is no longer needed.  I leave it in and commented out to remind us
-   * that we need to re-work this function to reflect this reallity.
-   *
-   *                                          -- JRM 9/1/05
-   */
+    /* Since metadata writes are now done by process 0 only, this broadcast
+     * is no longer needed.  I leave it in and commented out to remind us
+     * that we need to re-work this function to reflect this reallity.
+     *
+     *                                          -- JRM 9/1/05
+     */
 
     /* Guard against getting into metadata broadcast in failure cases */
     else {
         /* when only one process writes, need to broadcast the ret_value to other processes */
-        if (type!=H5FD_MEM_DRAW) {
+        if (type != H5FD_MEM_DRAW) {
             if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&ret_value, sizeof(ret_value), MPI_BYTE, H5_PAR_META_WRITE, file->comm)))
                 HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mpi_code)
         } /* end if */
@@ -1357,11 +1336,10 @@ done:
 /*-------------------------------------------------------------------------
  * Function:    H5FD_mpiposix_truncate
  *
- * Purpose:  Makes sure that the true file size is the same (or larger)
- *    than the end-of-address.
+ * Purpose:     Makes sure that the true file size is the same (or larger)
+ *              than the end-of-address.
  *
- * Return:      Success:  Non-negative
- *     Failure:  Negative
+ * Return:      SUCCEED/FAIL
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
@@ -1372,12 +1350,8 @@ static herr_t
 H5FD_mpiposix_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
 {
     H5FD_mpiposix_t  *file = (H5FD_mpiposix_t*)_file;
-#ifdef H5_HAVE_WIN32_API
-    HFILE filehandle;   /* Windows file handle */
-    LARGE_INTEGER li;   /* 64-bit integer for SetFilePointer() call */
-#endif /* H5_HAVE_WIN32_API */
-    int      mpi_code;  /* MPI return code */
-    herr_t              ret_value = SUCCEED;
+    herr_t          ret_value = SUCCEED;                /* Return value     */
+    int             mpi_code;                           /* MPI return code  */
 
     FUNC_ENTER_NOAPI_NOINIT
 
@@ -1388,19 +1362,42 @@ H5FD_mpiposix_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closi
     if(file->eoa > file->last_eoa) {
         /* Use the round-robin process to truncate (extend) the file */
         if(file->mpi_rank == H5_PAR_META_WRITE) {
+
 #ifdef H5_HAVE_WIN32_API
-            /* Map the posix file handle to a Windows file handle */
-            filehandle = _get_osfhandle(file->fd);
-
-            /* Translate 64-bit integers into form Windows wants */
-            /* [This algorithm is from the Windows documentation for SetFilePointer()] */
-            li.QuadPart = file->eoa;
-            SetFilePointer((HANDLE)filehandle, li.LowPart, &li.HighPart, FILE_BEGIN);
-            if(SetEndOfFile((HANDLE)filehandle) == 0)
+            LARGE_INTEGER   li;         /* 64-bit (union) integer for SetFilePointer() call */
+            DWORD           dwPtrLow;   /* Low-order pointer bits from SetFilePointer()
+                                         * Only used as an error code here.
+                                         */
+            DWORD           dwError;    /* DWORD error code from GetLastError() */
+            BOOL            bError;     /* Boolean error flag */
+
+            /* Windows uses this odd QuadPart union for 32/64-bit portability */
+            li.QuadPart = (__int64)file->eoa;
+
+            /* Extend the file to make sure it's large enough.
+             *
+             * Since INVALID_SET_FILE_POINTER can technically be a valid return value
+             * from SetFilePointer(), we also need to check GetLastError().
+             */
+            dwPtrLow = SetFilePointer(file->hFile, li.LowPart, &li.HighPart, FILE_BEGIN);
+            if(INVALID_SET_FILE_POINTER == dwPtrLow) {
+                dwError = GetLastError();
+                if(dwError != NO_ERROR )
+                    HGOTO_ERROR(H5E_FILE, H5E_FILEOPEN, FAIL, "unable to set file pointer")
+            }
+
+            bError = SetEndOfFile(file->hFile);
+            if(0 == bError)
                 HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
 #else /* H5_HAVE_WIN32_API */
-            if(-1==file_truncate(file->fd, (file_offset_t)file->eoa))
-                HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
+#ifdef H5_VMS
+            /* Reset seek offset to the beginning of the file, so that the file isn't
+             * re-extended later.  This may happen on Open VMS. */
+            if(-1 == HDlseek(file->fd, (HDoff_t)0, SEEK_SET))
+                HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+#endif /* H5_VMS */
+            if(-1 == HDftruncate(file->fd, (HDoff_t)file->eoa))
+                HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
 #endif /* H5_HAVE_WIN32_API */
         } /* end if */
 
@@ -1428,18 +1425,15 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_mpi_rank
+ * Function:    H5FD_mpiposix_mpi_rank
  *
- * Purpose:  Returns the MPI rank for a process
+ * Purpose:     Returns the MPI rank for a process
  *
- * Return:  Success: non-negative
- *    Failure: negative
+ * Return:      MPI rank.  Cannot report failure.
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static int
@@ -1449,26 +1443,23 @@ H5FD_mpiposix_mpi_rank(const H5FD_t *_file)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
     FUNC_LEAVE_NOAPI(file->mpi_rank)
 } /* end H5FD_mpiposix_mpi_rank() */
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_mpi_size
+ * Function:    H5FD_mpiposix_mpi_size
  *
- * Purpose:  Returns the number of MPI processes
+ * Purpose:     Returns the number of MPI processes
  *
- * Return:  Success: non-negative
- *    Failure: negative
+ * Return:      The number of MPI processes.  Cannot report failure.
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static int
@@ -1478,27 +1469,23 @@ H5FD_mpiposix_mpi_size(const H5FD_t *_file)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
     FUNC_LEAVE_NOAPI(file->mpi_size)
 } /* end H5FD_mpiposix_mpi_size() */
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5FD_mpiposix_communicator
- *
- * Purpose:  Returns the MPI communicator for the file.
+ * Function:    H5FD_mpiposix_communicator
  *
- * Return:  Success:  The communicator
+ * Purpose:     Returns the MPI communicator for the file.
  *
- *    Failure:  NULL
+ * Return:      The MPI communicator.  Cannot report failure.
  *
  * Programmer:  Quincey Koziol
  *              Thursday, July 11, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static MPI_Comm
@@ -1508,11 +1495,10 @@ H5FD_mpiposix_communicator(const H5FD_t *_file)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    assert(file);
-    assert(H5FD_MPIPOSIX==file->pub.driver_id);
+    HDassert(file);
+    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
 
     FUNC_LEAVE_NOAPI(file->comm)
 } /* end H5FD_mpi_posix_communicator() */
 
 #endif /*H5_HAVE_PARALLEL*/
-
diff --git a/src/H5FDmpiposix.h b/src/H5FDmpiposix.h
index 832839e..a435924 100644
--- a/src/H5FDmpiposix.h
+++ b/src/H5FDmpiposix.h
@@ -14,7 +14,7 @@
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 /*
- * Programmer:  Quincey Koziol <koziol at ncsa.uiuc.edu>
+ * Programmer:  Quincey Koziol <koziol at hdfgroup.org>
  *              Thursday, July 11, 2002
  *
  * Purpose:	The public header file for the mpiposix driver.
@@ -24,14 +24,14 @@
 #define __H5FDmpiposix_H
 
 #ifdef H5_HAVE_PARALLEL
-#   define H5FD_MPIPOSIX	(H5FD_mpiposix_init())
+#   define H5FD_MPIPOSIX    (H5FD_mpiposix_init())
 #else
-#   define H5FD_MPIPOSIX	(-1)
+#   define H5FD_MPIPOSIX    (-1)
 #endif
 
 /* Macros */
 
-#define IS_H5FD_MPIPOSIX(f)	/* (H5F_t *f) */				    \
+#define IS_H5FD_MPIPOSIX(f) /* (H5F_t *f) */                                \
     (H5FD_MPIPOSIX==H5F_DRIVER_ID(f))
 
 #ifdef H5_HAVE_PARALLEL
@@ -53,4 +53,3 @@ H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t
 #endif /*H5_HAVE_PARALLEL*/
 
 #endif /* __H5FDmpiposix_H */
-
diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c
index 772384f..e5eda70 100644
--- a/src/H5FDmulti.c
+++ b/src/H5FDmulti.c
@@ -74,6 +74,10 @@
 #define END_MEMBERS	}}
 
 
+#define H5FD_MULTI_DXPL_PROP_NAME       "H5FD_MULTI_DXPL"
+#define H5FD_MULTI_DXPL_PROP_SIZE       sizeof(H5FD_multi_dxpl_t)
+
+
 /* The driver identification number, initialized at runtime */
 static hid_t H5FD_MULTI_g = 0;
 
@@ -125,8 +129,6 @@ static herr_t H5FD_multi_sb_decode(H5FD_t *file, const char *name,
 static void *H5FD_multi_fapl_get(H5FD_t *file);
 static void *H5FD_multi_fapl_copy(const void *_old_fa);
 static herr_t H5FD_multi_fapl_free(void *_fa);
-static void *H5FD_multi_dxpl_copy(const void *_old_dx);
-static herr_t H5FD_multi_dxpl_free(void *_dx);
 static H5FD_t *H5FD_multi_open(const char *name, unsigned flags,
 			       hid_t fapl_id, haddr_t maxaddr);
 static herr_t H5FD_multi_close(H5FD_t *_file);
@@ -159,9 +161,9 @@ static const H5FD_class_t H5FD_multi_g = {
     H5FD_multi_fapl_get,			/*fapl_get		*/
     H5FD_multi_fapl_copy,			/*fapl_copy		*/
     H5FD_multi_fapl_free,			/*fapl_free		*/
-    sizeof(H5FD_multi_dxpl_t),			/*dxpl_size		*/
-    H5FD_multi_dxpl_copy,			/*dxpl_copy		*/
-    H5FD_multi_dxpl_free,			/*dxpl_free		*/
+    0,						/*dxpl_size		*/
+    NULL,					/*dxpl_copy		*/
+    NULL,					/*dxpl_free		*/
     H5FD_multi_open,				/*open			*/
     H5FD_multi_close,				/*close			*/
     H5FD_multi_cmp,				/*cmp			*/
@@ -308,7 +310,8 @@ H5Pset_fapl_split(hid_t fapl, const char *meta_ext, hid_t meta_plist_id,
 
     /* Initialize */
     ALL_MEMBERS(mt) {
-	memb_map[mt] = (H5FD_MEM_DRAW==mt?mt:H5FD_MEM_SUPER);
+	/* Treat global heap as raw data, not metadata */
+	memb_map[mt] = ((mt == H5FD_MEM_DRAW || mt == H5FD_MEM_GHEAP) ? H5FD_MEM_DRAW : H5FD_MEM_SUPER);
 	memb_fapl[mt] = -1;
 	memb_name[mt] = NULL;
 	memb_addr[mt] = HADDR_UNDEF;
@@ -588,6 +591,127 @@ H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/,
 
 
 /*-------------------------------------------------------------------------
+ * Function:	H5FD_multi_dxpl_copy_cb
+ *
+ * Purpose:	Multi VFD DXPL property 'copy' callback
+ *
+ * Return:	Success:	0
+ *		Failure:	-1
+ *
+ * Programmer:	Quincey Koziol
+ *              Wednesday, August 15, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5FD_multi_dxpl_copy_cb(const char *name, size_t size, void *_dx)
+{
+    H5FD_multi_dxpl_t *dx = (H5FD_multi_dxpl_t *)_dx;
+    static const char *func = "H5FD_multi_dxpl_copy_cb";  /* Function Name for error reporting */
+
+    /* Shut compiler up */
+    name = name;
+
+    /* Sanity check */
+    assert(size == sizeof(H5FD_multi_dxpl_t));
+
+    ALL_MEMBERS(mt) {
+        if(dx->memb_dxpl[mt] >= 0)
+            if(H5Iinc_ref(dx->memb_dxpl[mt]) < 0)
+                H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTINC, "can't increment ref. count for multi VFD property", -1)
+    } END_MEMBERS;
+
+    return 0;
+} /* end H5FD_multi_dxpl_copy_cb() */
+
+
+/*-------------------------------------------------------------------------
+ * Function:	H5FD_multi_dxpl_cmp_cb
+ *
+ * Purpose:	Multi VFD DXPL property 'compare' callback
+ *
+ * Return:	Success:	same as memcmp()
+ *		Failure:	<can't fail>
+ *
+ * Programmer:	Quincey Koziol
+ *              Wednesday, August 15, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5FD_multi_dxpl_cmp_cb(const void *_dx1, const void *_dx2, size_t size)
+{
+    const H5FD_multi_dxpl_t *dx1 = (const H5FD_multi_dxpl_t *)_dx1;
+    const H5FD_multi_dxpl_t *dx2 = (const H5FD_multi_dxpl_t *)_dx2;
+    int cmp_status;
+
+    /* Sanity check */
+    assert(size == sizeof(H5FD_multi_dxpl_t));
+
+    ALL_MEMBERS(mt) {
+        if(dx1->memb_dxpl[mt] >= 0) {
+            if(dx2->memb_dxpl[mt] >= 0) {
+                cmp_status = H5Pequal(dx1->memb_dxpl[mt], dx2->memb_dxpl[mt]);
+                if(cmp_status != 0)
+                    return(cmp_status);
+            } /* end if */
+            else
+                return(-1);
+        } /* end if */
+        else {
+            if(dx2->memb_dxpl[mt] >= 0)
+                return(1);
+            else
+                if(dx1->memb_dxpl[mt] > dx2->memb_dxpl[mt])
+                    return(-1);
+                else if(dx1->memb_dxpl[mt] < dx2->memb_dxpl[mt])
+                    return(1);
+                else
+                    continue;
+        } /* end else */
+    } END_MEMBERS;
+
+    return 0;
+} /* end H5FD_multi_dxpl_cmp_cb() */
+
+
+/*-------------------------------------------------------------------------
+ * Function:	H5FD_multi_dxpl_cls_cb
+ *
+ * Purpose:	Multi VFD DXPL property 'close' callback
+ *
+ * Return:	Success:	0
+ *		Failure:	-1
+ *
+ * Programmer:	Quincey Koziol
+ *              Wednesday, August 15, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5FD_multi_dxpl_cls_cb(const char *name, size_t size, void *_dx)
+{
+    H5FD_multi_dxpl_t *dx = (H5FD_multi_dxpl_t *)_dx;
+    static const char *func = "H5FD_multi_dxpl_cls_cb";  /* Function Name for error reporting */
+
+    /* Shut compiler up */
+    name = name;
+
+    /* Sanity check */
+    assert(size == sizeof(H5FD_multi_dxpl_t));
+
+    ALL_MEMBERS(mt) {
+        if(dx->memb_dxpl[mt] >= 0)
+            if(H5Idec_ref(dx->memb_dxpl[mt]) < 0)
+                H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTDEC, "can't increment ref. count for multi VFD property", -1)
+    } END_MEMBERS;
+
+    return 0;
+} /* end H5FD_multi_dxpl_cls_cb() */
+
+
+
+/*-------------------------------------------------------------------------
  * Function:	H5Pset_dxpl_multi
  *
  * Purpose:	Set the data transfer property list DXPL_ID to use the multi
@@ -611,7 +735,8 @@ H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl)
 {
     H5FD_multi_dxpl_t	dx;
     H5FD_mem_t		mt;
-    static const char *func="H5FDset_dxpl_multi";  /* Function Name for error reporting */
+    htri_t              prop_exists;            /* Whether the multi VFD DXPL property already exists */
+    static const char *func = "H5FDset_dxpl_multi";  /* Function Name for error reporting */
 
     /*NO TRACE*/
 
@@ -619,26 +744,56 @@ H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl)
     H5Eclear2(H5E_DEFAULT);
 
     /* Check arguments */
-    if (TRUE!=H5Pisa_class(dxpl_id,  H5P_DATASET_XFER))
+    if(TRUE != H5Pisa_class(dxpl_id,  H5P_DATASET_XFER))
         H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADTYPE, "not a data transfer property list", -1)
-    if (!memb_dxpl)
+    if(!memb_dxpl)
         H5Epush_ret(func, H5E_ERR_CLS, H5E_INTERNAL, H5E_BADVALUE, "invalid pointer", -1)
-    for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
-        if (memb_dxpl[mt]!=H5P_DEFAULT && TRUE!=H5Pisa_class(memb_dxpl[mt], H5P_DATASET_XFER))
+    for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
+        if(memb_dxpl[mt] != H5P_DEFAULT && TRUE != H5Pisa_class(memb_dxpl[mt], H5P_DATASET_XFER))
             H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADTYPE, "not a data transfer property list", -1)
-    }
+    } /* end for */
+
+    /* Check for existence of multi VFD DXPL property in DXPL */
+    if((prop_exists = H5Pexist(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME)) < 0)
+        H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't check for multi VFD property", -1)
+
+    /* Copy the DXPLs to internal property, converting "generic" default
+     * property lists into default dataset transfer property lists */
+    for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
+        if(memb_dxpl[mt] == H5P_DEFAULT)
+            dx.memb_dxpl[mt] = H5P_DATASET_XFER_DEFAULT;
+        else {
+            if((dx.memb_dxpl[mt] = H5Pcopy(memb_dxpl[mt])) < 0)
+                H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTCOPY, "can't copy dataset transfer property list", -1)
+        } /* end else */
+    } /* end for */
+
+    /* Clear previous property, if it exists */
+    if(prop_exists) {
+        H5FD_multi_dxpl_t	old_dx;
+
+        /* Get the old DXPL value */
+        if(H5Pget(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &old_dx) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get previous property value", -1)
 
-    /* Initialize the data transfer property list */
-    memcpy(dx.memb_dxpl, memb_dxpl, H5FD_MEM_NTYPES*sizeof(hid_t));
+        ALL_MEMBERS(mt) {
+            if(old_dx.memb_dxpl[mt] >= 0)
+                if(H5Pclose(old_dx.memb_dxpl[mt]) < 0)
+                    H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTCLOSEOBJ, "can't close property list", -1)
+        } END_MEMBERS;
 
-    /* Convert "generic" default property lists into default dataset transfer property lists */
-    for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
-        if (dx.memb_dxpl[mt]==H5P_DEFAULT)
-            dx.memb_dxpl[mt]=H5P_DATASET_XFER_DEFAULT;
-    }
+        /* Set the new value */
+        if(H5Pset(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &dx) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get previous property value", -1)
+    } /* end if */
+    else {
+        /* Insert multi VFD DXPL property into property list */
+        if(H5Pinsert2(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, H5FD_MULTI_DXPL_PROP_SIZE, &dx, NULL, NULL, NULL, H5FD_multi_dxpl_copy_cb, H5FD_multi_dxpl_cmp_cb, H5FD_multi_dxpl_cls_cb) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTINSERT, "can't insert multi VFD DXPL property", -1)
+    } /* end else */
 
-    return H5Pset_driver(dxpl_id, H5FD_MULTI, &dx);
-}
+    return 0;
+} /* end H5Pset_dxpl_multi() */
 
 
 /*-------------------------------------------------------------------------
@@ -661,33 +816,42 @@ H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl)
 herr_t
 H5Pget_dxpl_multi(hid_t dxpl_id, hid_t *memb_dxpl/*out*/)
 {
-    H5FD_multi_dxpl_t	*dx;
+    H5FD_multi_dxpl_t	dx;
     H5FD_mem_t		mt;
-    static const char *func="H5FDget_dxpl_multi";  /* Function Name for error reporting */
+    htri_t              prop_exists;            /* Whether the multi VFD DXPL property already exists */
+    static const char *func = "H5FDget_dxpl_multi";  /* Function Name for error reporting */
 
     /*NO TRACE*/
 
     /* Clear the error stack */
     H5Eclear2(H5E_DEFAULT);
 
-    if (TRUE!=H5Pisa_class(dxpl_id, H5P_DATASET_XFER))
+    /* Argument checking */
+    if(TRUE != H5Pisa_class(dxpl_id, H5P_DATASET_XFER))
         H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADTYPE, "not a file access property list", -1)
-    if (H5FD_MULTI!=H5Pget_driver(dxpl_id))
-        H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADVALUE, "incorrect VFL driver", -1)
-    if(NULL == (dx = (H5FD_multi_dxpl_t *)H5Pget_driver_info(dxpl_id)))
-        H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADVALUE, "bad VFL driver info", -1)
 
-    if (memb_dxpl) {
-	for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
-	    if (dx->memb_dxpl[mt]>=0)
-		memb_dxpl[mt] = H5Pcopy(dx->memb_dxpl[mt]);
+    if(memb_dxpl) {
+        /* Check for existence of multi VFD DXPL property in DXPL */
+        if((prop_exists = H5Pexist(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME)) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't check for multi VFD property", -1)
+        if(!prop_exists)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "multi VFD DXPL property not set", -1)
+
+        /* Get the DXPL value */
+        if(H5Pget(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &dx) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get property value", -1)
+
+        /* Deep copy the multi VFD DXPL value */
+	for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
+	    if(dx.memb_dxpl[mt] >= 0)
+		memb_dxpl[mt] = H5Pcopy(dx.memb_dxpl[mt]);
 	    else
-		memb_dxpl[mt] = dx->memb_dxpl[mt]; /*default or bad ID */
-	}
-    }
+		memb_dxpl[mt] = dx.memb_dxpl[mt]; /*default or bad ID */
+	} /* end for */
+    } /* end if */
 
     return 0;
-}
+} /* end H5Pget_dxpl_multi() */
 
 
 /*-------------------------------------------------------------------------
@@ -1104,90 +1268,6 @@ H5FD_multi_fapl_free(void *_fa)
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5FD_multi_dxpl_copy
- *
- * Purpose:	Copes the multi-specific data transfer properties.
- *
- * Return:	Success:	Ptr to new property list
- *
- *		Failure:	NULL
- *
- * Programmer:	Robb Matzke
- *              Wednesday, August  4, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void *
-H5FD_multi_dxpl_copy(const void *_old_dx)
-{
-    const H5FD_multi_dxpl_t *old_dx = (const H5FD_multi_dxpl_t*)_old_dx;
-    H5FD_multi_dxpl_t *new_dx = (H5FD_multi_dxpl_t *)malloc(sizeof(H5FD_multi_dxpl_t));
-    int nerrors = 0;
-    static const char *func="H5FD_multi_dxpl_copy";  /* Function Name for error reporting */
-
-    assert(new_dx);
-
-    /* Clear the error stack */
-    H5Eclear2(H5E_DEFAULT);
-
-    memcpy(new_dx, old_dx, sizeof(H5FD_multi_dxpl_t));
-    ALL_MEMBERS(mt) {
-	if (old_dx->memb_dxpl[mt]>=0) {
-	    new_dx->memb_dxpl[mt] = H5Pcopy(old_dx->memb_dxpl[mt]);
-	    if (new_dx->memb_dxpl[mt]<0) nerrors++;
-	}
-    } END_MEMBERS;
-
-    if (nerrors) {
-        ALL_MEMBERS(mt) {
-            (void)H5Pclose(new_dx->memb_dxpl[mt]);
-        } END_MEMBERS;
-        free(new_dx);
-        H5Epush_ret(func, H5E_ERR_CLS, H5E_INTERNAL, H5E_BADVALUE, "invalid freespace objects", NULL)
-    }
-    return new_dx;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function:	H5FD_multi_dxpl_free
- *
- * Purpose:	Frees the multi-specific data transfer properties.
- *
- * Return:	Success:	0
- *
- *		Failure:	-1
- *
- * Programmer:	Robb Matzke
- *              Wednesday, August  4, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_multi_dxpl_free(void *_dx)
-{
-    H5FD_multi_dxpl_t	*dx = (H5FD_multi_dxpl_t*)_dx;
-    static const char *func="H5FD_multi_dxpl_free";  /* Function Name for error reporting */
-
-    /* Clear the error stack */
-    H5Eclear2(H5E_DEFAULT);
-
-    ALL_MEMBERS(mt) {
-        if (dx->memb_dxpl[mt]>=0)
-            if(H5Pclose(dx->memb_dxpl[mt])<0)
-                H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_CANTCLOSEOBJ, "can't close property list", -1)
-    } END_MEMBERS;
-
-    free(dx);
-    return 0;
-}
-
-
-/*-------------------------------------------------------------------------
  * Function:	H5FD_multi_open
  *
  * Purpose:	Creates and/or opens a multi HDF5 file.
@@ -1821,25 +1901,33 @@ H5FD_multi_free(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsi
  * Programmer:	Robb Matzke
  *              Wednesday, August  4, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5FD_multi_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size,
-		 void *_buf/*out*/)
+H5FD_multi_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
+    size_t size, void *_buf/*out*/)
 {
     H5FD_multi_t	*file = (H5FD_multi_t*)_file;
-    H5FD_multi_dxpl_t	*dx=NULL;
-    H5FD_mem_t		mt, mmt, hi=H5FD_MEM_DEFAULT;
-    haddr_t		start_addr=0;
+    H5FD_multi_dxpl_t	dx;
+    htri_t              prop_exists = FALSE;    /* Whether the multi VFD DXPL property already exists */
+    H5FD_mem_t		mt, mmt, hi = H5FD_MEM_DEFAULT;
+    haddr_t		start_addr = 0;
+    static const char  *func = "H5FD_multi_read";  /* Function Name for error reporting */
 
     /* Clear the error stack */
     H5Eclear2(H5E_DEFAULT);
 
     /* Get the data transfer properties */
-    if(H5P_FILE_ACCESS_DEFAULT != dxpl_id && H5FD_MULTI == H5Pget_driver(dxpl_id))
-	dx = (H5FD_multi_dxpl_t *)H5Pget_driver_info(dxpl_id);
+    if(H5P_FILE_ACCESS_DEFAULT != dxpl_id) {
+        /* Check for existence of multi VFD DXPL property in DXPL */
+        if((prop_exists = H5Pexist(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME)) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't check for multi VFD property", -1)
+
+        /* Get the DXPL value, if it exists */
+        if(prop_exists)
+            if(H5Pget(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &dx) < 0)
+                H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get property value", -1)
+    } /* end if */
 
     /* Find the file to which this address belongs */
     for(mt = H5FD_MEM_SUPER; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
@@ -1848,18 +1936,19 @@ H5FD_multi_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
             mmt = mt;
 	assert(mmt > 0 && mmt < H5FD_MEM_NTYPES);
 
-	if (file->fa.memb_addr[mmt]>addr) continue;
-	if (file->fa.memb_addr[mmt]>=start_addr) {
+	if(file->fa.memb_addr[mmt] > addr)
+            continue;
+	if(file->fa.memb_addr[mmt] >= start_addr) {
 	    start_addr = file->fa.memb_addr[mmt];
 	    hi = mmt;
-	}
-    }
-    assert(hi>0);
+	} /* end if */
+    } /* end for */
+    assert(hi > 0);
 
     /* Read from that member */
-    return H5FDread(file->memb[hi], type, dx?dx->memb_dxpl[hi]:H5P_DEFAULT,
-		    addr-start_addr, size, _buf);
-}
+    return H5FDread(file->memb[hi], type, (prop_exists ? dx.memb_dxpl[hi] : H5P_DEFAULT),
+            addr - start_addr, size, _buf);
+} /* end H5FD_multi_read() */
 
 
 /*-------------------------------------------------------------------------
@@ -1876,45 +1965,54 @@ H5FD_multi_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
  * Programmer:	Robb Matzke
  *              Wednesday, August  4, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5FD_multi_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size,
-		  const void *_buf)
+H5FD_multi_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
+    size_t size, const void *_buf)
 {
     H5FD_multi_t	*file = (H5FD_multi_t*)_file;
-    H5FD_multi_dxpl_t	*dx=NULL;
-    H5FD_mem_t		mt, mmt, hi=H5FD_MEM_DEFAULT;
-    haddr_t		start_addr=0;
+    H5FD_multi_dxpl_t	dx;
+    htri_t              prop_exists = FALSE;    /* Whether the multi VFD DXPL property already exists */
+    H5FD_mem_t		mt, mmt, hi = H5FD_MEM_DEFAULT;
+    haddr_t		start_addr = 0;
+    static const char  *func = "H5FD_multi_read";  /* Function Name for error reporting */
 
     /* Clear the error stack */
     H5Eclear2(H5E_DEFAULT);
 
     /* Get the data transfer properties */
-    if(H5P_FILE_ACCESS_DEFAULT != dxpl_id && H5FD_MULTI == H5Pget_driver(dxpl_id))
-	dx = (H5FD_multi_dxpl_t *)H5Pget_driver_info(dxpl_id);
+    if(H5P_FILE_ACCESS_DEFAULT != dxpl_id) {
+        /* Check for existence of multi VFD DXPL property in DXPL */
+        if((prop_exists = H5Pexist(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME)) < 0)
+            H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't check for multi VFD property", -1)
+
+        /* Get the DXPL value, if it exists */
+        if(prop_exists)
+            if(H5Pget(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &dx) < 0)
+                H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get property value", -1)
+    } /* end if */
 
     /* Find the file to which this address belongs */
     for(mt = H5FD_MEM_SUPER; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
 	mmt = file->fa.memb_map[mt];
 	if(H5FD_MEM_DEFAULT == mmt)
             mmt = mt;
-	assert(mmt>0 && mmt<H5FD_MEM_NTYPES);
+	assert(mmt > 0 && mmt<H5FD_MEM_NTYPES);
 
-	if (file->fa.memb_addr[mmt]>addr) continue;
-	if (file->fa.memb_addr[mmt]>=start_addr) {
+	if(file->fa.memb_addr[mmt] > addr)
+            continue;
+	if(file->fa.memb_addr[mmt] >= start_addr) {
 	    start_addr = file->fa.memb_addr[mmt];
 	    hi = mmt;
-	}
-    }
-    assert(hi>0);
+	} /* end if */
+    } /* end for */
+    assert(hi > 0);
 
     /* Write to that member */
-    return H5FDwrite(file->memb[hi], type, dx?dx->memb_dxpl[hi]:H5P_DEFAULT,
-		     addr-start_addr, size, _buf);
-}
+    return H5FDwrite(file->memb[hi], type, (prop_exists ? dx.memb_dxpl[hi] : H5P_DEFAULT),
+            addr - start_addr, size, _buf);
+} /* end H5FD_multi_write() */
 
 
 /*-------------------------------------------------------------------------
@@ -1929,8 +2027,6 @@ H5FD_multi_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
  * Programmer:	Robb Matzke
  *              Wednesday, August  4, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 static herr_t
diff --git a/src/H5FDprivate.h b/src/H5FDprivate.h
index 9c19562..64b71d4 100644
--- a/src/H5FDprivate.h
+++ b/src/H5FDprivate.h
@@ -96,8 +96,6 @@ H5_DLL herr_t H5FD_sb_decode(H5FD_t *file, const char *name, const uint8_t *buf)
 H5_DLL void *H5FD_fapl_get(H5FD_t *file);
 H5_DLL herr_t H5FD_fapl_open(struct H5P_genplist_t *plist, hid_t driver_id, const void *driver_info);
 H5_DLL herr_t H5FD_fapl_close(hid_t driver_id, void *fapl);
-H5_DLL herr_t H5FD_dxpl_open(struct H5P_genplist_t *plist, hid_t driver_id, const void *driver_info);
-H5_DLL herr_t H5FD_dxpl_close(hid_t driver_id, void *dxpl);
 H5_DLL hid_t H5FD_register(const void *cls, size_t size, hbool_t app_ref);
 H5_DLL H5FD_t *H5FD_open(const char *name, unsigned flags, hid_t fapl_id,
 		  haddr_t maxaddr);
diff --git a/src/H5FDpublic.h b/src/H5FDpublic.h
index 0c5605c..f1b3920 100644
--- a/src/H5FDpublic.h
+++ b/src/H5FDpublic.h
@@ -100,7 +100,7 @@ typedef enum H5F_mem_t	H5FD_mem_t;
     H5FD_MEM_SUPER,			/*super*/			      \
     H5FD_MEM_SUPER,			/*btree*/			      \
     H5FD_MEM_DRAW,			/*draw*/			      \
-    H5FD_MEM_SUPER,			/*gheap*/			      \
+    H5FD_MEM_DRAW,			/*gheap*/			      \
     H5FD_MEM_SUPER,			/*lheap*/			      \
     H5FD_MEM_SUPER			/*ohdr*/			      \
 }
@@ -267,7 +267,7 @@ typedef enum {
     H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE,
     H5FD_FILE_IMAGE_OP_FILE_OPEN,
     H5FD_FILE_IMAGE_OP_FILE_RESIZE,
-    H5FD_FILE_IMAGE_OP_FILE_CLOSE,
+    H5FD_FILE_IMAGE_OP_FILE_CLOSE
 } H5FD_file_image_op_t;
 
 /* Define structure to hold file image callbacks */
diff --git a/src/H5FDsec2.c b/src/H5FDsec2.c
index 868d4a4..877fae6 100644
--- a/src/H5FDsec2.c
+++ b/src/H5FDsec2.c
@@ -189,7 +189,7 @@ static const H5FD_class_t H5FD_sec2_g = {
     H5FD_sec2_truncate,				/*truncate		*/
     NULL,                                       /*lock                  */
     NULL,                                       /*unlock                */
-    H5FD_FLMAP_SINGLE 				/*fl_map		*/
+    H5FD_FLMAP_DICHOTOMY                        /*fl_map                */
 };
 
 /* Declare a free list to manage the H5FD_sec2_t struct */
diff --git a/src/H5FDstdio.c b/src/H5FDstdio.c
index ca0bb6d..68c952f 100644
--- a/src/H5FDstdio.c
+++ b/src/H5FDstdio.c
@@ -224,7 +224,7 @@ static const H5FD_class_t H5FD_stdio_g = {
     H5FD_stdio_truncate,        /* truncate     */
     NULL,                       /* lock         */
     NULL,                       /* unlock       */
-    H5FD_FLMAP_SINGLE           /* fl_map       */
+    H5FD_FLMAP_DICHOTOMY	/* fl_map       */
 };
 
 
diff --git a/src/H5FSprivate.h b/src/H5FSprivate.h
index 5fb8361..cbcb36a 100644
--- a/src/H5FSprivate.h
+++ b/src/H5FSprivate.h
@@ -195,6 +195,8 @@ H5_DLL herr_t H5FS_sect_stats(const H5FS_t *fspace, hsize_t *tot_space,
     hsize_t *nsects);
 H5_DLL herr_t H5FS_sect_change_class(H5F_t *f, hid_t dxpl_id, H5FS_t *fspace,
     H5FS_section_info_t *sect, unsigned new_class);
+H5_DLL htri_t H5FS_sect_try_shrink_eoa(const H5F_t *f, hid_t dxpl_id, const H5FS_t *fspace, void *op_data);
+H5_DLL herr_t H5FS_sect_query_last_sect(const H5FS_t *fspace, haddr_t *sect_addr, hsize_t *sect_size);
 
 /* Statistics routine */
 H5_DLL herr_t H5FS_stat_info(const H5F_t *f, const H5FS_t *frsp, H5FS_stat_t *stats);
diff --git a/src/H5FSsection.c b/src/H5FSsection.c
index 8959d7c..0aa007e 100644
--- a/src/H5FSsection.c
+++ b/src/H5FSsection.c
@@ -2309,3 +2309,114 @@ HDfprintf(stderr, "%s: sect->size = %Hu, sect->addr = %a, sect->type = %u\n", "H
 } /* end H5FS_sect_assert() */
 #endif /* H5FS_DEBUG_ASSERT */
 
+
+/*-------------------------------------------------------------------------
+ * Function:	H5FS_sect_try_shrink_eoa
+ *
+ * Purpose:	To shrink the last section on the merge list if the section
+ *		is at EOF.
+ *
+ * Return:      Success:        non-negative (TRUE/FALSE)
+ *              Failure:        negative
+ *
+ * Programmer:	Vailin Choi
+ *
+ *-------------------------------------------------------------------------
+ */
+htri_t
+H5FS_sect_try_shrink_eoa(const H5F_t *f, hid_t dxpl_id, const H5FS_t *fspace, void *op_data)
+{
+    hbool_t sinfo_valid = FALSE;        /* Whether the section info is valid */
+    hbool_t section_removed = FALSE;    /* Whether a section was removed */
+    htri_t ret_value = FALSE;          	/* Return value */
+
+    FUNC_ENTER_NOAPI(FAIL)
+
+    /* Check arguments. */
+    HDassert(fspace);
+
+    if(H5FS_sinfo_lock(f, dxpl_id, fspace, H5AC_WRITE) < 0)
+        HGOTO_ERROR(H5E_FSPACE, H5E_CANTGET, FAIL, "can't get section info")
+    sinfo_valid = TRUE;
+
+    if(fspace->sinfo && fspace->sinfo->merge_list) {
+        H5SL_node_t *last_node;         	/* Last node in merge list */
+
+        /* Check for last node in the merge list */
+        if(NULL != (last_node = H5SL_last(fspace->sinfo->merge_list))) {
+            H5FS_section_info_t *tmp_sect;  	/* Temporary free space section */
+            H5FS_section_class_t *tmp_sect_cls;	/* Temporary section's class */
+
+            /* Get the pointer to the last section, from the last node */
+            tmp_sect = (H5FS_section_info_t *)H5SL_item(last_node);
+            HDassert(tmp_sect);
+	    tmp_sect_cls = &fspace->sect_cls[tmp_sect->type];
+	    if(tmp_sect_cls->can_shrink) {
+                /* Check if the section can be shrunk away */
+		if((ret_value = (*tmp_sect_cls->can_shrink)(tmp_sect, op_data)) < 0)
+		    HGOTO_ERROR(H5E_FSPACE, H5E_CANTSHRINK, FAIL, "can't check for shrinking container")
+		if(ret_value > 0) {
+		    HDassert(tmp_sect_cls->shrink);
+
+                    /* Remove section from free space manager */
+		    if(H5FS_sect_remove_real(fspace, tmp_sect) < 0)
+			HGOTO_ERROR(H5E_FSPACE, H5E_CANTRELEASE, FAIL, "can't remove section from internal data structures")
+                    section_removed = TRUE;
+
+                    /* Shrink away section */
+		    if((*tmp_sect_cls->shrink)(&tmp_sect, op_data) < 0)
+			HGOTO_ERROR(H5E_FSPACE, H5E_CANTINSERT, FAIL, "can't shrink free space container")
+		} /* end if */
+	    } /* end if */
+	} /* end if */
+    } /* end if */
+
+done:
+    /* Release the section info */
+    if(sinfo_valid && H5FS_sinfo_unlock(f, dxpl_id, fspace, section_removed) < 0)
+        HDONE_ERROR(H5E_FSPACE, H5E_CANTRELEASE, FAIL, "can't release section info")
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* H5FS_sect_try_shrink_eoa() */
+
+
+/*-------------------------------------------------------------------------
+ * Function:	H5FS_sect_query_last_sect
+ *
+ * Purpose:	Retrieve info about the last section on the merge list
+ *
+ * Return:	Success:	non-negative
+ *		Failure:	negative
+ *
+ * Programmer:	Vailin Choi
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5FS_sect_query_last_sect(const H5FS_t *fspace, haddr_t *sect_addr, hsize_t *sect_size)
+{
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+    /* Check arguments. */
+    HDassert(fspace);
+
+    if(fspace->sinfo && fspace->sinfo->merge_list) {
+        H5SL_node_t *last_node;             /* Last node in merge list */
+
+        /* Check for last node in the merge list */
+        if(NULL != (last_node = H5SL_last(fspace->sinfo->merge_list))) {
+            H5FS_section_info_t *tmp_sect;      /* Temporary free space section */
+
+            /* Get the pointer to the last section, from the last node */
+            tmp_sect = (H5FS_section_info_t *)H5SL_item(last_node);
+            HDassert(tmp_sect);
+	    if(sect_addr)
+                *sect_addr = tmp_sect->addr;
+	    if(sect_size)
+                *sect_size = tmp_sect->size;
+	} /* end if */
+    } /* end if */
+
+    FUNC_LEAVE_NOAPI(SUCCEED)
+} /* H5FS_sect_query_last_sect() */
+
diff --git a/src/H5Faccum.c b/src/H5Faccum.c
index 1c2abd9..032bd80 100644
--- a/src/H5Faccum.c
+++ b/src/H5Faccum.c
@@ -115,6 +115,7 @@ herr_t
 H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
     size_t size, void *buf/*out*/)
 {
+    H5FD_mem_t  map_type;               /* Mapped memory type */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -123,8 +124,11 @@ H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
     HDassert(f->shared);
     HDassert(buf);
 
+    /* Treat global heap as raw data */
+    map_type = (type == H5FD_MEM_GHEAP) ? H5FD_MEM_DRAW : type;
+
     /* Check if this information is in the metadata accumulator */
-    if((f->shared->feature_flags & H5FD_FEAT_ACCUMULATE_METADATA) && type != H5FD_MEM_DRAW) {
+    if((f->shared->feature_flags & H5FD_FEAT_ACCUMULATE_METADATA) && map_type != H5FD_MEM_DRAW) {
         if(size < H5F_ACCUM_MAX_SIZE) {
             /* Sanity check */
             HDassert(!f->shared->accum.buf || (f->shared->accum.alloc_size >= f->shared->accum.size));
@@ -173,7 +177,7 @@ H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
                         f->shared->accum.dirty_off += amount_before;
 
                     /* Dispatch to driver */
-                    if(H5FD_read(f->shared->lf, dxpl_id, type, addr, amount_before, f->shared->accum.buf) < 0)
+                    if(H5FD_read(f->shared->lf, dxpl_id, map_type, addr, amount_before, f->shared->accum.buf) < 0)
                         HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "driver read request failed")
                 } /* end if */
                 else
@@ -187,7 +191,7 @@ H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
                     H5_ASSIGN_OVERFLOW(amount_after, ((addr + size) - (f->shared->accum.loc + f->shared->accum.size)), hsize_t, size_t);
 
                     /* Dispatch to driver */
-                    if(H5FD_read(f->shared->lf, dxpl_id, type, (f->shared->accum.loc + f->shared->accum.size), amount_after, (f->shared->accum.buf + f->shared->accum.size + amount_before)) < 0)
+                    if(H5FD_read(f->shared->lf, dxpl_id, map_type, (f->shared->accum.loc + f->shared->accum.size), amount_after, (f->shared->accum.buf + f->shared->accum.size + amount_before)) < 0)
                         HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "driver read request failed")
                 } /* end if */
 
@@ -201,13 +205,13 @@ H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
             /* Current read doesn't overlap with metadata accumulator, read it from file */
             else {
                 /* Dispatch to driver */
-                if(H5FD_read(f->shared->lf, dxpl_id, type, addr, size, buf) < 0)
+                if(H5FD_read(f->shared->lf, dxpl_id, map_type, addr, size, buf) < 0)
                     HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "driver read request failed")
             } /* end else */
         } /* end if */
         else {
             /* Read the data */
-            if(H5FD_read(f->shared->lf, dxpl_id, type, addr, size, buf) < 0)
+            if(H5FD_read(f->shared->lf, dxpl_id, map_type, addr, size, buf) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "driver read request failed")
 
             /* Check for overlap w/dirty accumulator */
@@ -250,7 +254,7 @@ H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
     } /* end if */
     else {
         /* Read the data */
-        if(H5FD_read(f->shared->lf, dxpl_id, type, addr, size, buf) < 0)
+        if(H5FD_read(f->shared->lf, dxpl_id, map_type, addr, size, buf) < 0)
             HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "driver read request failed")
     } /* end else */
 
@@ -415,6 +419,7 @@ herr_t
 H5F_accum_write(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
     size_t size, const void *buf)
 {
+    H5FD_mem_t  map_type;               /* Mapped memory type */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -424,8 +429,11 @@ H5F_accum_write(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
     HDassert(f->intent & H5F_ACC_RDWR);
     HDassert(buf);
 
+    /* Treat global heap as raw data */
+    map_type = (type == H5FD_MEM_GHEAP) ? H5FD_MEM_DRAW : type;
+
     /* Check for accumulating metadata */
-    if((f->shared->feature_flags & H5FD_FEAT_ACCUMULATE_METADATA) && type != H5FD_MEM_DRAW) {
+    if((f->shared->feature_flags & H5FD_FEAT_ACCUMULATE_METADATA) && map_type != H5FD_MEM_DRAW) {
         if(size < H5F_ACCUM_MAX_SIZE) {
             /* Sanity check */
             HDassert(!f->shared->accum.buf || (f->shared->accum.alloc_size >= f->shared->accum.size));
@@ -719,7 +727,7 @@ HDmemset(f->shared->accum.buf + size, 0, (f->shared->accum.alloc_size - size));
         } /* end if */
         else {
             /* Write the data */
-            if(H5FD_write(f->shared->lf, dxpl_id, type, addr, size, buf) < 0)
+            if(H5FD_write(f->shared->lf, dxpl_id, map_type, addr, size, buf) < 0)
                 HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
 
             /* Check for overlap w/accumulator */
@@ -804,7 +812,7 @@ HDmemset(f->shared->accum.buf + size, 0, (f->shared->accum.alloc_size - size));
     } /* end if */
     else {
         /* Write the data */
-        if(H5FD_write(f->shared->lf, dxpl_id, type, addr, size, buf) < 0)
+        if(H5FD_write(f->shared->lf, dxpl_id, map_type, addr, size, buf) < 0)
             HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
     } /* end else */
 
@@ -846,6 +854,7 @@ H5F_accum_free(H5F_t *f, hid_t dxpl_id, H5FD_mem_t UNUSED type, haddr_t addr,
         /* Sanity check */
         /* (The metadata accumulator should not intersect w/raw data */
         HDassert(H5FD_MEM_DRAW != type);
+        HDassert(H5FD_MEM_GHEAP != type); /* (global heap data is being treated as raw data currently) */
 
         /* Check for overlapping the beginning of the accumulator */
         if(H5F_addr_le(addr, f->shared->accum.loc)) {
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index b0aaeec..5a11f5f 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -70,10 +70,10 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
    *(p) = (uint8_t)(((i) >> 24) & 0xff); (p)++;				      \
 }
 
-/* Encode a 32-bit unsigned integer into a variable-sized buffer */
+/* Encode an unsigned integer into a variable-sized buffer */
 /* (Assumes that the high bits of the integer are zero) */
-#  define UINT32ENCODE_VAR(p, n, l) {					      \
-   uint32_t _n = (n);							      \
+#  define ENCODE_VAR(p, typ, n, l) {					      \
+   typ _n = (n);							      \
    size_t _i;								      \
    uint8_t *_p = (uint8_t*)(p);						      \
 									      \
@@ -82,6 +82,10 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
    (p) = (uint8_t*)(p) + l;						      \
 }
 
+/* Encode a 32-bit unsigned integer into a variable-sized buffer */
+/* (Assumes that the high bits of the integer are zero) */
+#  define UINT32ENCODE_VAR(p, n, l)     ENCODE_VAR(p, uint32_t, n, l)
+
 #  define INT64ENCODE(p, n) {						      \
    int64_t _n = (n);							      \
    size_t _i;								      \
@@ -108,15 +112,7 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
 
 /* Encode a 64-bit unsigned integer into a variable-sized buffer */
 /* (Assumes that the high bits of the integer are zero) */
-#  define UINT64ENCODE_VAR(p, n, l) {					      \
-   uint64_t _n = (n);							      \
-   size_t _i;								      \
-   uint8_t *_p = (uint8_t*)(p);						      \
-									      \
-   for(_i = 0; _i < l; _i++, _n >>= 8)					      \
-      *_p++ = (uint8_t)(_n & 0xff);					      \
-   (p) = (uint8_t*)(p) + l;						      \
-}
+#  define UINT64ENCODE_VAR(p, n, l)     ENCODE_VAR(p, uint64_t, n, l)
 
 /* DECODE converts little endian bytes pointed by p to integer values and store
  * it in i.  For signed values, need to do sign-extension when converting
@@ -152,12 +148,9 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
    (i) |= ((uint32_t)(*(p) & 0xff) << 24); (p)++;			      \
 }
 
-/* Decode a variable-sized buffer into a 32-bit unsigned integer */
+/* Decode a variable-sized buffer */
 /* (Assumes that the high bits of the integer will be zero) */
-/* (Note: this is exactly the same code as the 64-bit variable-length decoder
- *      and bugs/improvements should be make in both places - QAK)
- */
-#  define UINT32DECODE_VAR(p, n, l) {					      \
+#  define DECODE_VAR(p, n, l) {						      \
    size_t _i;								      \
 									      \
    n = 0;								      \
@@ -167,6 +160,10 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
    (p) += l;								      \
 }
 
+/* Decode a variable-sized buffer into a 32-bit unsigned integer */
+/* (Assumes that the high bits of the integer will be zero) */
+#  define UINT32DECODE_VAR(p, n, l)     DECODE_VAR(p, n, l)
+
 #  define INT64DECODE(p, n) {						      \
    /* WE DON'T CHECK FOR OVERFLOW! */					      \
    size_t _i;								      \
@@ -191,18 +188,7 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
 
 /* Decode a variable-sized buffer into a 64-bit unsigned integer */
 /* (Assumes that the high bits of the integer will be zero) */
-/* (Note: this is exactly the same code as the 32-bit variable-length decoder
- *      and bugs/improvements should be make in both places - QAK)
- */
-#  define UINT64DECODE_VAR(p, n, l) {					      \
-   size_t _i;								      \
-									      \
-   n = 0;								      \
-   (p) += l;								      \
-   for (_i = 0; _i < l; _i++)						      \
-      n = (n << 8) | *(--p);						      \
-   (p) += l;								      \
-}
+#  define UINT64DECODE_VAR(p, n, l)     DECODE_VAR(p, n, l)
 
 /* Address-related macros */
 #define H5F_addr_overflow(X,Z)	(HADDR_UNDEF==(X) ||			      \
diff --git a/src/H5G.c b/src/H5G.c
index 3883ade..a0e7767 100644
--- a/src/H5G.c
+++ b/src/H5G.c
@@ -100,8 +100,6 @@
 /* Local Macros */
 /****************/
 
-#define H5G_RESERVED_ATOMS	0
-
 
 /******************/
 /* Local Typedefs */
@@ -132,6 +130,15 @@
 /* Local Variables */
 /*******************/
 
+/* Group ID class */
+static const H5I_class_t H5I_GROUP_CLS[1] = {{
+    H5I_GROUP,			/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5G_close	/* Callback routine for closing objects of this class */
+}};
+
 
 
 /*-------------------------------------------------------------------------
@@ -187,7 +194,7 @@ H5G_init_interface(void)
     FUNC_ENTER_NOAPI_NOINIT
 
     /* Initialize the atom group for the group IDs */
-    if(H5I_register_type(H5I_GROUP, (size_t)H5I_GROUPID_HASHSIZE, H5G_RESERVED_ATOMS, (H5I_free_t)H5G_close) < 0)
+    if(H5I_register_type(H5I_GROUP_CLS) < 0)
 	HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
 done:
diff --git a/src/H5Gcache.c b/src/H5Gcache.c
index e390eaa..575b27a 100644
--- a/src/H5Gcache.c
+++ b/src/H5Gcache.c
@@ -301,7 +301,7 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5G_node_dest(H5F_t *f, H5G_node_t *sym)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
diff --git a/src/H5HFdbg.c b/src/H5HFdbg.c
index e52ecc1..b5ac40a 100644
--- a/src/H5HFdbg.c
+++ b/src/H5HFdbg.c
@@ -80,7 +80,7 @@ typedef struct {
 /* Local Prototypes */
 /********************/
 
-static herr_t H5HF_dtable_debug(H5HF_dtable_t *dtable, FILE *stream,
+static herr_t H5HF_dtable_debug(const H5HF_dtable_t *dtable, FILE *stream,
     int indent, int fwidth);
 
 
@@ -113,7 +113,7 @@ static herr_t H5HF_dtable_debug(H5HF_dtable_t *dtable, FILE *stream,
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5HF_dtable_debug(H5HF_dtable_t *dtable, FILE *stream, int indent, int fwidth)
+H5HF_dtable_debug(const H5HF_dtable_t *dtable, FILE *stream, int indent, int fwidth)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
diff --git a/src/H5HFsection.c b/src/H5HFsection.c
index 87fa069..72ea100 100644
--- a/src/H5HFsection.c
+++ b/src/H5HFsection.c
@@ -651,9 +651,7 @@ herr_t
 H5HF_sect_single_dblock_info(H5HF_hdr_t *hdr, hid_t dxpl_id,
     H5HF_free_section_t *sect, haddr_t *dblock_addr, size_t *dblock_size)
 {
-    herr_t ret_value = SUCCEED;         /* Return value */
-
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_NOAPI_NOERR
 
     /*
      * Check arguments.
@@ -678,8 +676,7 @@ H5HF_sect_single_dblock_info(H5HF_hdr_t *hdr, hid_t dxpl_id,
         *dblock_size =  hdr->man_dtable.row_block_size[sect->u.single.par_entry / hdr->man_dtable.cparam.width];
     } /* end else */
 
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
+    FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5HF_sect_single_dblock_info() */
 
 
@@ -2401,7 +2398,10 @@ H5HF_sect_indirect_init_rows(H5HF_hdr_t *hdr, hid_t dxpl_id,
     HDassert(sect->u.indirect.span_size > 0);
 
     /* Reset reference count for indirect section */
+    /* (Also reset the direct & indirect row pointers */
     sect->u.indirect.rc = 0;
+    sect->u.indirect.dir_rows = NULL;
+    sect->u.indirect.indir_ents = NULL;
 
     /* Set up direct block information, if necessary */
     if(start_row < hdr->man_dtable.max_direct_rows) {
@@ -2427,7 +2427,6 @@ H5HF_sect_indirect_init_rows(H5HF_hdr_t *hdr, hid_t dxpl_id,
         /* No rows of direct blocks covered, reset direct row information */
         dir_nrows = 0;
         sect->u.indirect.dir_nrows = 0;
-        sect->u.indirect.dir_rows = NULL;
     } /* end else */
 
     /* Set up indirect block information, if necessary */
@@ -2462,7 +2461,6 @@ H5HF_sect_indirect_init_rows(H5HF_hdr_t *hdr, hid_t dxpl_id,
     else {
         /* No indirect block entries covered, reset indirect row information */
         sect->u.indirect.indir_nents = 0;
-        sect->u.indirect.indir_ents = NULL;
     } /* end else */
 
     /* Set up initial row information */
@@ -2601,6 +2599,13 @@ H5HF_sect_indirect_init_rows(H5HF_hdr_t *hdr, hid_t dxpl_id,
             (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
 
 done:
+    if(ret_value < 0) {
+        if(sect->u.indirect.indir_ents)
+            H5MM_xfree(sect->u.indirect.indir_ents);
+        if(sect->u.indirect.dir_rows)
+            H5MM_xfree(sect->u.indirect.dir_rows);
+    } /* end if */
+
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5HF_sect_indirect_init_rows() */
 
diff --git a/src/H5HG.c b/src/H5HG.c
index 7c2b282..3bf2b8f 100644
--- a/src/H5HG.c
+++ b/src/H5HG.c
@@ -136,7 +136,7 @@ H5HG_create(H5F_t *f, hid_t dxpl_id, size_t size)
 {
     H5HG_heap_t	*heap = NULL;
     uint8_t	*p = NULL;
-    haddr_t	addr;
+    haddr_t	addr = HADDR_UNDEF;
     size_t	n;
     haddr_t	ret_value = HADDR_UNDEF;        /* Return value */
 
diff --git a/src/H5I.c b/src/H5I.c
index ce81f3c..dbbc679 100644
--- a/src/H5I.c
+++ b/src/H5I.c
@@ -22,7 +22,7 @@
  * DESIGN:	The types are stored in an array of pointers to store each
  *		type in an element. Each "type" node contains a link to a
  *		hash table to manage the IDs in each type.  Allowed types are
- *		values within the range 1 to MAX_NUM_TYPES and are given out
+ *		values within the range 1 to H5I_MAX_NUM_TYPES and are given out
  *		at run-time.  Types used by the library are stored in global
  *		variables defined in H5Ipublic.h.
  *
@@ -102,14 +102,12 @@ typedef struct H5I_id_info_t {
 
 /* ID type structure used */
 typedef struct {
+    const H5I_class_t *cls;     /* Pointer to ID class                      */
     unsigned	count;		/*# of times this type has been initialized*/
     unsigned    free_count; /* # of available ID structures awaiting recycling */
-    unsigned	reserved;	/*# of IDs to reserve for constant IDs	    */
     unsigned	wrapped;	/*whether the id count has wrapped around   */
-    size_t	hash_size;	/*sizeof the hash table to store the IDs in */
     unsigned	ids;		/*current number of IDs held		    */
     unsigned	nextid;		/*ID to use for the next atom		    */
-    H5I_free_t	free_func;	/*release object method	    		    */
     unsigned    reuse_ids;  /* whether to reuse returned IDs for this type */
     H5I_id_info_t * next_id_ptr; /* pointer to head of available ID list */
     H5I_id_info_t **id_list;	/*pointer to an array of ptrs to IDs	    */
@@ -124,7 +122,7 @@ typedef struct {
 /*-------------------- Locally scoped variables -----------------------------*/
 
 /* Array of pointers to atomic types */
-static H5I_id_type_t *H5I_id_type_list_g[MAX_NUM_TYPES];
+static H5I_id_type_t *H5I_id_type_list_g[H5I_MAX_NUM_TYPES];
 
 /* Variable to keep track of the number of types allocated.  Its value is the */
 /* next type ID to be handed out, so it is always one greater than the number */
@@ -137,6 +135,12 @@ static H5I_type_t H5I_next_type = (H5I_type_t) H5I_NTYPES;
 /* Declare a free list to manage the H5I_id_info_t struct */
 H5FL_DEFINE_STATIC(H5I_id_info_t);
 
+/* Declare a free list to manage the H5I_id_type_t struct */
+H5FL_DEFINE_STATIC(H5I_id_type_t);
+
+/* Declare a free list to manage the H5I_class_t struct */
+H5FL_DEFINE_STATIC(H5I_class_t);
+
 /*--------------------- Local function prototypes ---------------------------*/
 static H5I_id_info_t *H5I_find_id(hid_t id);
 static int H5I_search_cb(void *obj, hid_t id, void *udata);
@@ -202,8 +206,11 @@ H5I_term_interface(void)
         if(0 == n) {
             for(type = (H5I_type_t)0; type < H5I_next_type; H5_INC_ENUM(H5I_type_t,type)) {
                 type_ptr = H5I_id_type_list_g[type];
-                H5MM_xfree(type_ptr);
-                H5I_id_type_list_g[type] = NULL;
+                if(type_ptr) {
+                    HDassert(NULL == type_ptr->id_list);
+                    type_ptr = H5FL_FREE(H5I_id_type_t, type_ptr);
+                    H5I_id_type_list_g[type] = NULL;
+                } /* end if */
             } /* end for */
         } /* end if */
 
@@ -239,15 +246,64 @@ H5I_term_interface(void)
 H5I_type_t
 H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func)
 {
+    H5I_class_t *cls = NULL;    /* New ID class */
+    H5I_type_t new_type;        /* New ID type value */
     H5I_type_t ret_value;       /* Return value */
 
     FUNC_ENTER_API(H5I_BADID)
     H5TRACE3("It", "zIux", hash_size, reserved, free_func);
 
-    /* Call H5I_register_type with a value of 0 to get a new type */
-    ret_value = H5I_register_type((H5I_type_t)0, hash_size, reserved, free_func);
+    /* Generate a new H5I_type_t value */
+
+    /* Increment the number of types*/
+    if(H5I_next_type < H5I_MAX_NUM_TYPES) {
+        new_type = H5I_next_type;
+        H5_INC_ENUM(H5I_type_t, H5I_next_type);
+    } /* end if */
+    else {
+        hbool_t done;       /* Indicate that search was successful */
+        int i;              /* Local index variable */
+
+        /* Look for a free type to give out */
+        done = FALSE;
+        for(i = H5I_NTYPES; i < H5I_MAX_NUM_TYPES && done == FALSE; i++) {
+            if(NULL == H5I_id_type_list_g[i]) {
+                /* Found a free type ID */
+                new_type = (H5I_type_t)i;
+                done = TRUE;
+            } /* end if */
+        } /* end for */
+
+        /* Verify that we found a type to give out */
+        if(done == FALSE)
+            HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, H5I_BADID, "Maximum number of ID types exceeded.")
+    } /* end else */
+
+    /* Allocate new ID class */
+    if(NULL == (cls = H5FL_MALLOC(H5I_class_t)))
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTALLOC, H5I_BADID, "ID class allocation failed")
+
+    /* Initialize class fields */
+    cls->type_id = new_type;
+    cls->flags = H5I_CLASS_IS_APPLICATION;
+    cls->hash_size = hash_size;
+    cls->reserved = reserved;
+    cls->free_func = free_func;
+
+    /* Register the new ID class */
+    if(H5I_register_type(cls) < 0)
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, H5I_BADID, "can't initialize ID class")
+
+    /* Set return value */
+    ret_value = new_type;
 
 done:
+    /* Clean up on error */
+    if(ret_value < 0) {
+        if(cls)
+            cls = H5FL_FREE(H5I_class_t, cls);
+    } /* end if */
+
     FUNC_LEAVE_API(ret_value)
 } /* end H5Iregister_type() */
 
@@ -255,17 +311,9 @@ done:
 /*-------------------------------------------------------------------------
  * Function:	H5I_register_type
  *
- * Purpose:	Creates a new type of ID's to give out.  A specific number
- *		(RESERVED) of type entries may be reserved to enable "constant"
- *		values to be handed out which are valid IDs in the type, but
- *		which do not map to any data structures and are not allocated
- *		dynamically later. TYPE_ID is the H5I_type_t value of the type
- *		to be initialized.  If this value is zero, a new type is created.
- *		If this value is one of the library types, that type is
- *		initialized or its reference count is incremented (if it is already
- *		initialized).  HASH_SIZE is the minimum hash table size to
- *		use for the type. FREE_FUNC is called with an object pointer
- *		when the object is removed from the type.
+ * Purpose:	Creates a new type of ID's to give out.
+ *		The class is initialized or its reference count is incremented
+ *              (if it is already initialized).
  *
  * Return:	Success:	Type ID of the new type
  *		Failure:	H5I_BADID
@@ -276,76 +324,45 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-H5I_type_t
-H5I_register_type(H5I_type_t type_id, size_t hash_size, unsigned reserved,
-    H5I_free_t free_func)
+herr_t
+H5I_register_type(const H5I_class_t *cls)
 {
-    H5I_id_type_t	*type_ptr = NULL;		/*ptr to the atomic type*/
-    H5I_type_t ret_value = H5I_BADID;                   /* type ID to return */
-
-    FUNC_ENTER_NOAPI(H5I_BADID)
+    H5I_id_type_t *type_ptr = NULL;	/* Ptr to the atomic type*/
+    herr_t ret_value = SUCCEED;         /* Return value */
 
-    /* Check that type_id is either a library type or zero */
-    if(type_id < 0 || type_id >= H5I_NTYPES)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, H5I_BADID, "invalid type ID")
-
-    if(type_id == 0) {	/* Generate a new H5I_type_t value */
-        /* Increment the number of types*/
-        if(H5I_next_type < MAX_NUM_TYPES) {
-            ret_value = H5I_next_type;
-            H5_INC_ENUM(H5I_type_t, H5I_next_type);
-        }
-        else {
-            hbool_t done;       /* Indicate that search was successful */
-            int i;              /* Local index variable */
-
-            /* Look for a free type to give out */
-            done = FALSE;
-            for(i = H5I_NTYPES; i < MAX_NUM_TYPES && done == FALSE; i++) {
-                if(NULL == H5I_id_type_list_g[i]) {
-                    /* Found a free type ID */
-                    ret_value = (H5I_type_t)i;
-                    done = TRUE;
-                } /* end if */
-            } /* end for */
+    FUNC_ENTER_NOAPI(FAIL)
 
-            /* Verify that we found a type to give out */
-            if(done == FALSE)
-                HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, H5I_BADID, "Maximum number of ID types exceeded.")
-        } /* end else */
-    } /* end if */
-    else	/* type_id is a library type; use this value. */
-        ret_value = type_id;
+    /* Sanity check */
+    HDassert(cls);
+    HDassert(cls->type_id > 0 && cls->type_id < H5I_MAX_NUM_TYPES);
 
     /* Initialize the type */
 
     /* Check arguments */
 #ifdef HASH_SIZE_POWER_2
-    if(!POWER_OF_TWO(hash_size) || hash_size == 1)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, H5I_BADID, "invalid hash size")
+    if(!POWER_OF_TWO(cls->hash_size) || cls->hash_size == 1)
+        HGOTO_ERROR(H5E_ATOM, H5E_BADRANGE, FAIL, "invalid hash size")
 #endif /* HASH_SIZE_POWER_2 */
 
-    if(NULL == H5I_id_type_list_g[ret_value]) {
+    if(NULL == H5I_id_type_list_g[cls->type_id]) {
         /* Allocate the type information for new type */
-        if(NULL == (type_ptr = (H5I_id_type_t *)H5MM_calloc(sizeof(H5I_id_type_t))))
-            HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, H5I_BADID, "memory allocation failed")
-        H5I_id_type_list_g[ret_value] = type_ptr;
+        if(NULL == (type_ptr = (H5I_id_type_t *)H5FL_CALLOC(H5I_id_type_t)))
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTALLOC, FAIL, "ID type allocation failed")
+        H5I_id_type_list_g[cls->type_id] = type_ptr;
     } /* end if */
     else {
         /* Get the pointer to the existing type */
-        type_ptr = H5I_id_type_list_g[ret_value];
+        type_ptr = H5I_id_type_list_g[cls->type_id];
     } /* end else */
 
+    /* Initialize the ID type structure for new types */
     if(type_ptr->count == 0) {
-        /* Initialize the ID type structure for new types */
-        type_ptr->hash_size = hash_size;
-        type_ptr->reserved = reserved;
+        type_ptr->cls = cls;
         type_ptr->wrapped = 0;
         type_ptr->ids = 0;
-        type_ptr->nextid = reserved;
-        type_ptr->free_func = free_func;
+        type_ptr->nextid = cls->reserved;
         type_ptr->next_id_ptr = NULL;
-        type_ptr->id_list = (H5I_id_info_t **)H5MM_calloc(hash_size * sizeof(H5I_id_info_t *));
+        type_ptr->id_list = (H5I_id_info_t **)H5MM_calloc(cls->hash_size * sizeof(H5I_id_info_t *));
         if(NULL == type_ptr->id_list)
             HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, H5I_BADID, "memory allocation failed")
 
@@ -353,7 +370,7 @@ H5I_register_type(H5I_type_t type_id, size_t hash_size, unsigned reserved,
          * with some virtual file drivers. Also, open datatypes are not 
          * getting reduced to zero before file close in some situations,
          * resulting in memory leak, so skip them for now as well. */
-        if (type_id == H5I_GENPROP_LST || type_id == H5I_DATATYPE)
+        if(cls->type_id == H5I_GENPROP_LST || cls->type_id == H5I_DATATYPE)
             type_ptr->reuse_ids = FALSE;
         else
             type_ptr->reuse_ids = TRUE;
@@ -364,10 +381,11 @@ H5I_register_type(H5I_type_t type_id, size_t hash_size, unsigned reserved,
     type_ptr->count++;
 
 done:
-    if(ret_value == H5I_BADID) {	/* Clean up on error */
-        if(type_ptr != NULL) {
-            H5MM_xfree(type_ptr->id_list);
-            H5MM_xfree(type_ptr);
+    if(ret_value < 0) {	/* Clean up on error */
+        if(type_ptr) {
+            if(type_ptr->id_list)
+                H5MM_xfree(type_ptr->id_list);
+            (void)H5FL_FREE(H5I_id_type_t, type_ptr);
         } /* end if */
     } /* end if */
 
@@ -584,7 +602,7 @@ H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref)
      * counts. Ignore the return value from from the free method and remove
      * object from type regardless if FORCE is non-zero.
      */
-    for(i = 0; i < type_ptr->hash_size; i++) {
+    for(i = 0; i < type_ptr->cls->hash_size; i++) {
         H5I_id_info_t *cur;          /* Current node being worked with */
         H5I_id_info_t *next;         /* Next node in list */
 
@@ -602,7 +620,7 @@ H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref)
 
             /* Check for a 'free' function and call it, if it exists */
             /* (Casting away const OK -QAK) */
-            if(type_ptr->free_func && (type_ptr->free_func)((void *)cur->obj_ptr) < 0) {
+            if(type_ptr->cls->free_func && (type_ptr->cls->free_func)((void *)cur->obj_ptr) < 0) {
                 if(force) {
 #ifdef H5I_DEBUG
                     if(H5DEBUG(I)) {
@@ -751,12 +769,17 @@ H5I_destroy_type(H5I_type_t type)
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* Close/clear/destroy all IDs for this type */
-    H5I_clear_type(type, TRUE, FALSE);
-    H5E_clear_stack(NULL); /*don't care about errors*/
+    H5E_BEGIN_TRY {
+        H5I_clear_type(type, TRUE, FALSE);
+    } H5E_END_TRY       /*don't care about errors*/
 
-    H5MM_xfree(type_ptr->id_list);
+    /* Check if we should release the ID class */
+    if(type_ptr->cls->flags & H5I_CLASS_IS_APPLICATION)
+        type_ptr->cls = H5FL_FREE(H5I_class_t, (void *)type_ptr->cls);
 
-    H5MM_free(type_ptr);
+    type_ptr->id_list = H5MM_xfree(type_ptr->id_list);
+
+    type_ptr = H5FL_FREE(H5I_id_type_t, type_ptr);
     H5I_id_type_list_g[type] = NULL;
 
 done:
@@ -872,7 +895,7 @@ H5I_register(H5I_type_t type, const void *object, hbool_t app_ref)
     id_ptr->next = NULL;
 
     /* hash bucket already full, prepend to front of chain */
-    hash_loc = id_ptr->id % (unsigned)type_ptr->hash_size;
+    hash_loc = id_ptr->id % (unsigned)type_ptr->cls->hash_size;
     if(type_ptr->id_list[hash_loc] != NULL)
 	id_ptr->next = type_ptr->id_list[hash_loc];
 
@@ -887,7 +910,7 @@ H5I_register(H5I_type_t type, const void *object, hbool_t app_ref)
      */
     if(type_ptr->nextid > (unsigned)ID_MASK) {
 	type_ptr->wrapped = 1;
-	type_ptr->nextid = type_ptr->reserved;
+	type_ptr->nextid = type_ptr->cls->reserved;
     } /* end if */
 
     /*
@@ -901,14 +924,14 @@ H5I_register(H5I_type_t type, const void *object, hbool_t app_ref)
 	 * we check all possible values and didn't find any free ones *then*
 	 * we can fail.
 	 */
-	for(i = type_ptr->reserved; i < ID_MASK; i++) {
+	for(i = type_ptr->cls->reserved; i < ID_MASK; i++) {
 	    /* Handle end of range by wrapping to beginning */
 	    if(type_ptr->nextid > (unsigned)ID_MASK)
-		type_ptr->nextid = type_ptr->reserved;
+		type_ptr->nextid = type_ptr->cls->reserved;
 
 	    /* new ID to check for */
 	    next_id = H5I_MAKE(type, type_ptr->nextid);
-	    hash_loc = (unsigned)H5I_LOC(type_ptr->nextid, type_ptr->hash_size);
+	    hash_loc = (unsigned)H5I_LOC(type_ptr->nextid, type_ptr->cls->hash_size);
 	    curr_id = type_ptr->id_list[hash_loc];
 	    if(curr_id == NULL)
                 break; /* Ha! this is not likely... */
@@ -1253,7 +1276,7 @@ H5I_remove(hid_t id)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, NULL, "invalid type")
 
     /* Get the bucket in which the ID is located */
-    hash_loc = (unsigned)H5I_LOC(id, type_ptr->hash_size);
+    hash_loc = (unsigned)H5I_LOC(id, type_ptr->cls->hash_size);
     curr_id = type_ptr->id_list[hash_loc];
     if(NULL == curr_id)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, NULL, "invalid ID")
@@ -1305,7 +1328,7 @@ H5I_remove(hid_t id)
         } /* end while */
         type_ptr->free_count = 0;
 
-        type_ptr->nextid = type_ptr->reserved;
+        type_ptr->nextid = type_ptr->cls->reserved;
         type_ptr->wrapped = FALSE;
     } /* end if */
 
@@ -1409,7 +1432,7 @@ H5I_dec_ref(hid_t id)
      */
     if(1 == id_ptr->count) {
         /* (Casting away const OK -QAK) */
-        if(!type_ptr->free_func || (type_ptr->free_func)((void *)id_ptr->obj_ptr) >= 0) {
+        if(!type_ptr->cls->free_func || (type_ptr->cls->free_func)((void *)id_ptr->obj_ptr) >= 0) {
             H5I_remove(id);
             ret_value = 0;
         } /* end if */
@@ -2006,13 +2029,12 @@ H5I_search_cb(void *obj, hid_t id, void *_udata)
     H5I_search_ud_t *udata = (H5I_search_ud_t *)_udata; /* User data for callback */
     int ret_value;     /* Callback return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     ret_value = (*udata->app_cb)(obj, id, udata->app_key);
     if(ret_value > 0)
         udata->ret_obj = obj;
 
-done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5I_search_cb() */
 
@@ -2118,7 +2140,7 @@ H5I_iterate(H5I_type_t type, H5I_search_func_t func, void *udata, hbool_t app_re
         unsigned u;			/* Counter		*/
 
         /* Start at the beginning of the array */
-        for(u = 0; u < type_ptr->hash_size; u++) {
+        for(u = 0; u < type_ptr->cls->hash_size; u++) {
             H5I_id_info_t	*id_ptr;	/* Ptr to the new ID	*/
 
             id_ptr = type_ptr->id_list[u];
@@ -2183,7 +2205,7 @@ H5I_find_id(hid_t id)
         HGOTO_DONE(NULL);
 
     /* Get the bucket in which the ID is located */
-    hash_loc = (unsigned)H5I_LOC(id, type_ptr->hash_size);
+    hash_loc = (unsigned)H5I_LOC(id, type_ptr->cls->hash_size);
     id_ptr = type_ptr->id_list[hash_loc];
 
     /* Scan the bucket's linked list for a match */
@@ -2370,9 +2392,9 @@ H5I_debug(H5I_type_t type)
 
     /* Header */
     fprintf(stderr, "	 count	   = %u\n", type_ptr->count);
-    fprintf(stderr, "	 reserved  = %u\n", type_ptr->reserved);
+    fprintf(stderr, "	 reserved  = %u\n", type_ptr->cls->reserved);
     fprintf(stderr, "	 wrapped   = %u\n", type_ptr->wrapped);
-    fprintf(stderr, "	 hash_size = %lu\n", (unsigned long)type_ptr->hash_size);
+    fprintf(stderr, "	 hash_size = %lu\n", (unsigned long)type_ptr->cls->hash_size);
     fprintf(stderr, "	 ids	   = %u\n", type_ptr->ids);
     fprintf(stderr, "	 nextid	   = %u\n", type_ptr->nextid);
 
diff --git a/src/H5Ipkg.h b/src/H5Ipkg.h
index f17a4b0..dc8e867 100644
--- a/src/H5Ipkg.h
+++ b/src/H5Ipkg.h
@@ -46,7 +46,7 @@
 #define TYPE_BITS	7
 #define TYPE_MASK	((1<<TYPE_BITS)-1)
 
-#define MAX_NUM_TYPES TYPE_MASK
+#define H5I_MAX_NUM_TYPES TYPE_MASK
 
 /*
  * Number of bits to use for the Atom index in each atom (assumes 8-bit
diff --git a/src/H5Iprivate.h b/src/H5Iprivate.h
index bc0ef41..ff1463d 100644
--- a/src/H5Iprivate.h
+++ b/src/H5Iprivate.h
@@ -28,29 +28,45 @@
 /* Private headers needed by this file */
 #include "H5private.h"
 
+/**************************/
+/* Library Private Macros */
+/**************************/
+
 /* Macro to determine if a H5I_type_t is a "library type" */
 #define H5I_IS_LIB_TYPE( type ) (type > 0 && type < H5I_NTYPES)
 
-/* Default sizes of the hash-tables for various atom types */
-#define H5I_ERRSTACK_HASHSIZE		64
-#define H5I_FILEID_HASHSIZE		64
-#define H5I_TEMPID_HASHSIZE		64
-#define H5I_DATATYPEID_HASHSIZE		64
-#define H5I_DATASPACEID_HASHSIZE	64
-#define H5I_DATASETID_HASHSIZE		64
-#define H5I_OID_HASHSIZE		64
-#define H5I_GROUPID_HASHSIZE		64
-#define H5I_ATTRID_HASHSIZE		64
-#define H5I_REFID_HASHSIZE		64
-#define H5I_VFL_HASHSIZE		64
-#define H5I_GENPROPCLS_HASHSIZE		64
-#define H5I_GENPROPOBJ_HASHSIZE		128
-#define H5I_ERRCLS_HASHSIZE		64
-#define H5I_ERRMSG_HASHSIZE		64
-#define H5I_ERRSTK_HASHSIZE		64
-
-/* Private Functions in H5I.c */
-H5_DLL H5I_type_t H5I_register_type(H5I_type_t type_id, size_t hash_size, unsigned reserved, H5I_free_t free_func);
+/* Flags for ID class */
+#define H5I_CLASS_IS_APPLICATION        0x01
+
+
+/****************************/
+/* Library Private Typedefs */
+/****************************/
+
+typedef struct H5I_class_t {
+    H5I_type_t type_id;         /* Class ID for the type */
+    unsigned flags;             /* Class behavior flags */
+    size_t hash_size;           /* Minimum hash table size for the type */
+    unsigned reserved;          /* Number of reserved IDs for this type */
+                                /* [A specific number of type entries may be
+                                 * reserved to enable "constant" values to be
+                                 * handed out which are valid IDs in the type,
+                                 * but which do not map to any data structures
+                                 * and are not allocated dynamically later.]
+                                 */
+    H5I_free_t free_func;       /* Free function for object's of this type */
+} H5I_class_t;
+
+
+/*****************************/
+/* Library-private Variables */
+/*****************************/
+
+
+/***************************************/
+/* Library-private Function Prototypes */
+/***************************************/
+H5_DLL herr_t H5I_register_type(const H5I_class_t *cls);
 H5_DLL int H5I_nmembers(H5I_type_t type);
 H5_DLL herr_t H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref);
 H5_DLL int H5I_destroy_type(H5I_type_t type);
diff --git a/src/H5MF.c b/src/H5MF.c
index 203c942..57002c8 100644
--- a/src/H5MF.c
+++ b/src/H5MF.c
@@ -153,7 +153,8 @@ H5MF_init_merge_flags(H5F_t *f)
             all_metadata_same = TRUE;
             for(type = H5FD_MEM_SUPER; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type))
                 /* Skip checking raw data free list mapping */
-                if(type != H5FD_MEM_DRAW) {
+                /* (global heap is treated as raw data) */
+                if(type != H5FD_MEM_DRAW && type != H5FD_MEM_GHEAP) {
                     /* Check for any different type mappings */
                     if(f->shared->fs_type_map[type] != f->shared->fs_type_map[H5FD_MEM_SUPER]) {
                         all_metadata_same = FALSE;
@@ -176,9 +177,12 @@ H5MF_init_merge_flags(H5F_t *f)
             HDmemset(f->shared->fs_aggr_merge, 0, sizeof(f->shared->fs_aggr_merge));
 
             /* Check if merging raw data should be allowed */
+            /* (treat global heaps as raw data) */
             if(H5FD_MEM_DRAW == f->shared->fs_type_map[H5FD_MEM_DRAW] ||
-                    H5FD_MEM_DEFAULT == f->shared->fs_type_map[H5FD_MEM_DRAW])
+                    H5FD_MEM_DEFAULT == f->shared->fs_type_map[H5FD_MEM_DRAW]) {
                 f->shared->fs_aggr_merge[H5FD_MEM_DRAW] = H5F_FS_MERGE_RAWDATA;
+                f->shared->fs_aggr_merge[H5FD_MEM_GHEAP] = H5F_FS_MERGE_RAWDATA;
+	    } /* end if */
             break;
 
         case H5MF_AGGR_MERGE_DICHOTOMY:
@@ -186,7 +190,9 @@ H5MF_init_merge_flags(H5F_t *f)
             HDmemset(f->shared->fs_aggr_merge, H5F_FS_MERGE_METADATA, sizeof(f->shared->fs_aggr_merge));
 
             /* Allow merging raw data allocations together */
+            /* (treat global heaps as raw data) */
             f->shared->fs_aggr_merge[H5FD_MEM_DRAW] = H5F_FS_MERGE_RAWDATA;
+            f->shared->fs_aggr_merge[H5FD_MEM_GHEAP] = H5F_FS_MERGE_RAWDATA;
             break;
 
         case H5MF_AGGR_MERGE_TOGETHER:
@@ -232,6 +238,7 @@ H5MF_alloc_open(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type)
      */
     HDassert(f);
     HDassert(f->shared);
+    HDassert(type != H5FD_MEM_NOLIST);
     HDassert(H5F_addr_defined(f->shared->fs_addr[type]));
     HDassert(f->shared->fs_state[type] == H5F_FS_STATE_CLOSED);
 
@@ -279,6 +286,7 @@ H5MF_alloc_create(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type)
      */
     HDassert(f);
     HDassert(f->shared);
+    HDassert(type != H5FD_MEM_NOLIST);
     HDassert(!H5F_addr_defined(f->shared->fs_addr[type]));
     HDassert(f->shared->fs_state[type] == H5F_FS_STATE_CLOSED);
 
@@ -329,6 +337,7 @@ H5MF_alloc_start(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type)
      */
     HDassert(f);
     HDassert(f->shared);
+    HDassert(type != H5FD_MEM_NOLIST);
 
     /* Check if the free space manager exists already */
     if(H5F_addr_defined(f->shared->fs_addr[type])) {
@@ -371,6 +380,7 @@ H5MF_alloc_close(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type)
      */
     HDassert(f);
     HDassert(f->shared);
+    HDassert(type != H5FD_MEM_NOLIST);
     HDassert(f->shared->fs_man[type]);
     HDassert(f->shared->fs_state[type] != H5F_FS_STATE_CLOSED);
 
@@ -470,6 +480,7 @@ HDfprintf(stderr, "%s: Check 1.6, freeing node\n", FUNC);
                     udata.dxpl_id = dxpl_id;
                     udata.alloc_type = alloc_type;
                     udata.allow_sect_absorb = TRUE;
+		    udata.allow_eoa_shrink_only = FALSE; 
 
 #ifdef H5MF_ALLOC_DEBUG_MORE
 HDfprintf(stderr, "%s: Check 1.7, re-adding node, node->sect_info.size = %Hu\n", FUNC, node->sect_info.size);
@@ -670,6 +681,7 @@ HDfprintf(stderr, "%s: dropping addr = %a, size = %Hu, on the floor!\n", FUNC, a
     udata.dxpl_id = dxpl_id;
     udata.alloc_type = alloc_type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE; 
 
     /* Add to the free space for the file */
 #ifdef H5MF_ALLOC_DEBUG_MORE
@@ -717,6 +729,7 @@ H5MF_try_extend(H5F_t *f, hid_t dxpl_id, H5FD_mem_t alloc_type, haddr_t addr,
     hsize_t size, hsize_t extra_requested)
 {
     haddr_t     end;            /* End of block to extend */
+    H5FD_mem_t  map_type;       /* Mapped type */
     htri_t	ret_value;      /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -728,18 +741,21 @@ HDfprintf(stderr, "%s: Entering: alloc_type = %u, addr = %a, size = %Hu, extra_r
     HDassert(f);
     HDassert(H5F_INTENT(f) & H5F_ACC_RDWR);
 
+    /* Set mapped type, treating global heap as raw data */
+    map_type = (alloc_type == H5FD_MEM_GHEAP) ? H5FD_MEM_DRAW : alloc_type;
+
     /* Compute end of block to extend */
     end = addr + size;
 
     /* Check if the block is exactly at the end of the file */
-    if((ret_value = H5FD_try_extend(f->shared->lf, alloc_type, f, end, extra_requested)) < 0)
+    if((ret_value = H5FD_try_extend(f->shared->lf, map_type, f, end, extra_requested)) < 0)
         HGOTO_ERROR(H5E_RESOURCE, H5E_CANTEXTEND, FAIL, "error extending file")
     else if(ret_value == FALSE) {
         H5F_blk_aggr_t *aggr;   /* Aggregator to use */
 
         /* Check for test block able to extend aggregation block */
-        aggr = (alloc_type == H5FD_MEM_DRAW) ?  &(f->shared->sdata_aggr) : &(f->shared->meta_aggr);
-        if((ret_value = H5MF_aggr_try_extend(f, aggr, alloc_type, end, extra_requested)) < 0)
+        aggr = (map_type == H5FD_MEM_DRAW) ?  &(f->shared->sdata_aggr) : &(f->shared->meta_aggr);
+        if((ret_value = H5MF_aggr_try_extend(f, aggr, map_type, end, extra_requested)) < 0)
             HGOTO_ERROR(H5E_RESOURCE, H5E_CANTEXTEND, FAIL, "error extending aggregation block")
         else if(ret_value == FALSE) {
             H5FD_mem_t  fs_type;                /* Free space type (mapped from allocation type) */
@@ -782,6 +798,11 @@ H5MF_sects_dump(f, dxpl_id, stderr);
  * Programmer:  Quincey Koziol
  *              Monday, October  6, 2003
  *
+ * Modifications:
+ *      Vailin Choi; July 2012
+ *      As the default free-list mapping is changed to H5FD_FLMAP_DICHOTOMY,
+ *      checks are added to account for the last section of each free-space manager
+ *      and the remaining space in the two aggregators are at EOF.
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -795,6 +816,8 @@ H5MF_get_freespace(H5F_t *f, hid_t dxpl_id, hsize_t *tot_space, hsize_t *meta_si
     hsize_t tot_fs_size = 0;    /* Amount of all free space managed */
     hsize_t tot_meta_size = 0;  /* Amount of metadata for free space managers */
     H5FD_mem_t type;            /* Memory type for iteration */
+    H5FD_mem_t fs_started[H5FD_MEM_NTYPES]; /* Indicate whether the free-space manager has been started */
+    hbool_t eoa_shrank;		/* Whether an EOA shrink occurs */
     herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -818,14 +841,15 @@ H5MF_get_freespace(H5F_t *f, hid_t dxpl_id, hsize_t *tot_space, hsize_t *meta_si
 
     /* Iterate over all the free space types that have managers and get each free list's space */
     for(type = H5FD_MEM_DEFAULT; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type)) {
-	hbool_t fs_started = FALSE;
+
+	fs_started[type] = FALSE;
 
 	/* Check if the free space for the file has been initialized */
         if(!f->shared->fs_man[type] && H5F_addr_defined(f->shared->fs_addr[type])) {
             if(H5MF_alloc_open(f, dxpl_id, type) < 0)
                 HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't initialize file free space")
             HDassert(f->shared->fs_man[type]);
-            fs_started = TRUE;
+            fs_started[type] = TRUE;
         } /* end if */
 
 	/* Check if there's free space of this type */
@@ -843,32 +867,54 @@ H5MF_get_freespace(H5F_t *f, hid_t dxpl_id, hsize_t *tot_space, hsize_t *meta_si
             tot_fs_size += type_fs_size;
             tot_meta_size += type_meta_size;
 	} /* end if */
+    } /* end for */
+
+    /* Iterate until no more EOA shrink occurs */
+    do {
+	eoa_shrank = FALSE;
+
+	/* Check the last section of each free-space manager */
+	for(type = H5FD_MEM_DEFAULT; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type)) {
+	    haddr_t sect_addr = HADDR_UNDEF;
+	    hsize_t sect_size = 0;
+
+	    if(f->shared->fs_man[type]) {
+		if(H5FS_sect_query_last_sect(f->shared->fs_man[type], &sect_addr, &sect_size) < 0)
+		    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTGET, FAIL, "can't query last section on merge list")
+
+		/* Deduct space from previous accumulation if the section is at EOA */
+		if(H5F_addr_eq(sect_addr + sect_size, eoa)) {
+		    eoa = sect_addr;
+		    eoa_shrank = TRUE;
+		    tot_fs_size -= sect_size;
+		} /* end if */
+	    } /* end if */
+	} /* end for */
+
+	/* Check the metadata and raw data aggregators */
+	if(ma_size > 0 && H5F_addr_eq(ma_addr + ma_size, eoa)) {
+	    eoa = ma_addr;
+	    eoa_shrank = TRUE;
+	    ma_size = 0;
+	} /* end if */
+	if(sda_size > 0 && H5F_addr_eq(sda_addr + sda_size, eoa)) {
+	    eoa = sda_addr;
+	    eoa_shrank = TRUE;
+	    sda_size = 0;
+	} /* end if */
+    } while(eoa_shrank);
 
-	/* Close the free space manager, if we opened it here */
-        if(fs_started)
+    /* Close the free-space managers if they were opened earlier in this routine */
+    for(type = H5FD_MEM_DEFAULT; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type)) {
+	if(fs_started[type])
             if(H5MF_alloc_close(f, dxpl_id, type) < 0)
                 HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't close file free space")
     } /* end for */
 
-    /* Check for aggregating metadata allocations */
-    if(ma_size > 0) {
-        /* Add in the reserved space for metadata to the available free space */
-        /* (if it's not at the tail of the file) */
-        if(H5F_addr_ne(ma_addr + ma_size, eoa))
-            tot_fs_size += ma_size;
-    } /* end if */
-
-    /* Check for aggregating small data allocations */
-    if(sda_size > 0) {
-        /* Add in the reserved space for metadata to the available free space */
-        /* (if it's not at the tail of the file) */
-        if(H5F_addr_ne(sda_addr + sda_size, eoa))
-            tot_fs_size += sda_size;
-    } /* end if */
-
     /* Set the value(s) to return */
+    /* (The metadata & small data aggregators count as free space now, since they aren't at EOA) */
     if(tot_space)
-	*tot_space = tot_fs_size;
+	*tot_space = tot_fs_size + ma_size + sda_size;
     if(meta_size)
 	*meta_size = tot_meta_size;
 
@@ -920,6 +966,7 @@ HDfprintf(stderr, "%s: Entering - alloc_type = %u, addr = %a, size = %Hu\n", FUN
     udata.dxpl_id = dxpl_id;
     udata.alloc_type = alloc_type;
     udata.allow_sect_absorb = FALSE;    /* Force section to be absorbed into aggregator */
+    udata.allow_eoa_shrink_only = FALSE; 
 
     /* Call the "can shrink" callback for the section */
     if((ret_value = H5MF_sect_simple_can_shrink((const H5FS_section_info_t *)node, &udata)) < 0)
@@ -943,6 +990,66 @@ HDfprintf(stderr, "%s: Leaving, ret_value = %d\n", FUNC, ret_value);
 
 
 /*-------------------------------------------------------------------------
+ * Function:    H5MF_close_shrink_eoa
+ *
+ * Purpose:     Shrink the EOA while closing
+ *
+ * Return:	SUCCEED/FAIL
+ *
+ * Programmer:  Quincey Koziol
+ *              Saturday, July 7, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5MF_close_shrink_eoa(H5F_t *f, hid_t dxpl_id)
+{
+    H5FD_mem_t type;            /* Memory type for iteration */
+    hbool_t eoa_shrank;		/* Whether an EOA shrink occurs */
+    htri_t status;		/* Status value */
+    H5MF_sect_ud_t udata;	/* User data for callback */
+    herr_t ret_value = SUCCEED;	/* Return value */
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    /* check args */
+    HDassert(f);
+    HDassert(f->shared);
+
+    /* Construct user data for callbacks */
+    udata.f = f;
+    udata.dxpl_id = dxpl_id;
+    udata.allow_sect_absorb = FALSE;    
+    udata.allow_eoa_shrink_only = TRUE; 
+
+    /* Iterate until no more EOA shrinking occurs */
+    do {
+	eoa_shrank = FALSE;
+
+	/* Check the last section of each free-space manager */
+	for(type = H5FD_MEM_DEFAULT; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type)) {
+	    if(f->shared->fs_man[type]) {
+		udata.alloc_type = type;
+		if((status = H5FS_sect_try_shrink_eoa(f, dxpl_id, f->shared->fs_man[type], &udata)) < 0)
+		    HGOTO_ERROR(H5E_FSPACE, H5E_CANTSHRINK, FAIL, "can't check for shrinking eoa")
+		else if(status > 0)
+		    eoa_shrank = TRUE;
+	    } /* end if */
+	} /* end for */
+
+	/* check the two aggregators */
+	if((status = H5MF_aggrs_try_shrink_eoa(f, dxpl_id)) < 0)
+	    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTSHRINK, FAIL, "can't check for shrinking eoa")
+	else if(status > 0)
+	    eoa_shrank = TRUE;
+    } while(eoa_shrank);
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5MF_close_shrink_eoa() */
+
+
+/*-------------------------------------------------------------------------
  * Function:    H5MF_close
  *
  * Purpose:     Close the free space tracker(s) for a file
@@ -952,6 +1059,12 @@ HDfprintf(stderr, "%s: Leaving, ret_value = %d\n", FUNC, ret_value);
  * Programmer:  Quincey Koziol
  *              Tuesday, January 22, 2008
  *
+ * Modifications:
+ *      Vailin Choi; July 2012
+ *      As the default free-list mapping is changed to H5FD_FLMAP_DICHOTOMY,
+ *      modifications are needed to shrink EOA if the last section of each free-space manager
+ *      and the remaining space in the two aggregators are at EOA.
+
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -969,13 +1082,16 @@ HDfprintf(stderr, "%s: Entering\n", FUNC);
     HDassert(f);
     HDassert(f->shared);
     HDassert(f->shared->lf);
-    HDassert(f->shared->sblock);
 
     /* Free the space in aggregators */
     /* (for space not at EOF, it may be put into free space managers) */
     if(H5MF_free_aggrs(f, dxpl_id) < 0)
         HGOTO_ERROR(H5E_FILE, H5E_CANTFREE, FAIL, "can't free aggregators")
 
+    /* Trying shrinking the EOA for the file */
+    if(H5MF_close_shrink_eoa(f, dxpl_id) < 0)
+        HGOTO_ERROR(H5E_RESOURCE, H5E_CANTSHRINK, FAIL, "can't shrink eoa")
+
     /* Iterate over all the free space types that have managers and get each free list's space */
     for(type = H5FD_MEM_DEFAULT; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type)) {
 #ifdef H5MF_ALLOC_DEBUG_MORE
@@ -1031,6 +1147,11 @@ HDfprintf(stderr, "%s: Before deleting free space manager\n", FUNC);
     if(H5MF_free_aggrs(f, dxpl_id) < 0)
         HGOTO_ERROR(H5E_FILE, H5E_CANTFREE, FAIL, "can't free aggregators")
 
+    /* Trying shrinking the EOA for the file */
+    /* (in case any free space is now at the EOA) */
+    if(H5MF_close_shrink_eoa(f, dxpl_id) < 0)
+        HGOTO_ERROR(H5E_RESOURCE, H5E_CANTSHRINK, FAIL, "can't shrink eoa")
+
 done:
 #ifdef H5MF_ALLOC_DEBUG
 HDfprintf(stderr, "%s: Leaving\n", FUNC);
diff --git a/src/H5MFaggr.c b/src/H5MFaggr.c
index 4d8e7d5..6a799da 100644
--- a/src/H5MFaggr.c
+++ b/src/H5MFaggr.c
@@ -46,6 +46,7 @@
 /******************/
 /* Local Typedefs */
 /******************/
+#define EXTEND_THRESHOLD .10
 
 
 /********************/
@@ -56,6 +57,8 @@
 /********************/
 /* Local Prototypes */
 /********************/
+static herr_t H5MF_aggr_free(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type,
+    H5F_blk_aggr_t *aggr);
 
 
 /*********************/
@@ -108,14 +111,14 @@ HDfprintf(stderr, "%s: alloc_type = %u, size = %Hu\n", FUNC, (unsigned)alloc_typ
     HDassert(size > 0);
 
     /* Couldn't find anything from the free space manager, go allocate some */
-    if(alloc_type != H5FD_MEM_DRAW) {
+    if(alloc_type != H5FD_MEM_DRAW && alloc_type != H5FD_MEM_GHEAP) {
         /* Handle metadata differently from "raw" data */
         if(HADDR_UNDEF == (ret_value = H5MF_aggr_alloc(f, dxpl_id, &(f->shared->meta_aggr), &(f->shared->sdata_aggr), alloc_type, size)))
             HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, HADDR_UNDEF, "can't allocate metadata")
     } /* end if */
     else {
-        /* Allocate "raw" data */
-        if(HADDR_UNDEF == (ret_value = H5MF_aggr_alloc(f, dxpl_id, &(f->shared->sdata_aggr), &(f->shared->meta_aggr), alloc_type, size)))
+        /* Allocate "raw" data: H5FD_MEM_DRAW and H5FD_MEM_GHEAP */
+        if(HADDR_UNDEF == (ret_value = H5MF_aggr_alloc(f, dxpl_id, &(f->shared->sdata_aggr), &(f->shared->meta_aggr), H5FD_MEM_DRAW, size)))
             HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, HADDR_UNDEF, "can't allocate raw data")
     } /* end else */
 
@@ -230,19 +233,18 @@ HDfprintf(stderr, "%s: aggr = {%a, %Hu, %Hu}\n", FUNC, aggr->addr, aggr->tot_siz
                     if(H5F_addr_gt((eoa + size), f->shared->tmp_addr))
                         HGOTO_ERROR(H5E_RESOURCE, H5E_BADRANGE, HADDR_UNDEF, "'normal' file space allocation request will overlap into 'temporary' file space")
 
+                    /* Release "other" aggregator, if it exists, is at the end of the allocated space,
+                     * has allocated more than one block and the unallocated space is greater than its
+                     * allocation block size.
+                     */
 		    if ((other_aggr->size > 0) && (H5F_addr_eq((other_aggr->addr + other_aggr->size), eoa)) &&
-			((other_aggr->tot_size - other_aggr->size) >= other_aggr->alloc_size)) {
-
-                            if(H5FD_free(f->shared->lf, dxpl_id, other_alloc_type, f, other_aggr->addr, other_aggr->size) < 0)
+			(other_aggr->tot_size > other_aggr->size) && ((other_aggr->tot_size - other_aggr->size) >= other_aggr->alloc_size)) {
+                            if(H5MF_aggr_free(f, dxpl_id, other_alloc_type, other_aggr) < 0)
                                 HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, HADDR_UNDEF, "can't free aggregation block")
-
-                            other_aggr->addr = 0;
-                            other_aggr->tot_size = 0;
-                            other_aggr->size = 0;
 		    } /* end if */
 
                     /* Allocate space from the VFD (i.e. at the end of the file) */
-		    if(HADDR_UNDEF == (ret_value = H5FD_alloc(f->shared->lf, dxpl_id, type, f, size, &eoa_frag_addr, &eoa_frag_size)))
+		    if(HADDR_UNDEF == (ret_value = H5FD_alloc(f->shared->lf, dxpl_id, alloc_type, f, size, &eoa_frag_addr, &eoa_frag_size)))
 			HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, HADDR_UNDEF, "can't allocate aggregation block")
                 } /* end else */
             } /* end if */
@@ -274,14 +276,14 @@ HDfprintf(stderr, "%s: Allocating block\n", FUNC);
                     if(H5F_addr_gt((eoa + aggr->alloc_size), f->shared->tmp_addr))
                         HGOTO_ERROR(H5E_RESOURCE, H5E_BADRANGE, HADDR_UNDEF, "'normal' file space allocation request will overlap into 'temporary' file space")
 
+                    /* Release "other" aggregator, if it exists, is at the end of the allocated space,
+                     * has allocated more than one block and the unallocated space is greater than its
+                     * allocation block size.
+                     */
 		    if((other_aggr->size > 0) && (H5F_addr_eq((other_aggr->addr + other_aggr->size), eoa)) &&
-			((other_aggr->tot_size - other_aggr->size) >= other_aggr->alloc_size)) {
-
-                            if(H5FD_free(f->shared->lf, dxpl_id, other_alloc_type, f, other_aggr->addr, other_aggr->size) < 0)
+			(other_aggr->tot_size > other_aggr->size) && ((other_aggr->tot_size - other_aggr->size) >= other_aggr->alloc_size)) {
+                            if(H5MF_aggr_free(f, dxpl_id, other_alloc_type, other_aggr) < 0)
                                 HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, HADDR_UNDEF, "can't free aggregation block")
-                            other_aggr->addr = 0;
-                            other_aggr->tot_size = 0;
-                            other_aggr->size = 0;
 		    } /* end if */
 
                     /* Allocate space from the VFD (i.e. at the end of the file) */
@@ -307,12 +309,12 @@ HDfprintf(stderr, "%s: Allocating block\n", FUNC);
 
 	    /* Freeing any possible fragment due to file allocation */
 	    if(eoa_frag_size)
-		if(H5MF_xfree(f, type, dxpl_id, eoa_frag_addr, eoa_frag_size) < 0)
+		if(H5MF_xfree(f, alloc_type, dxpl_id, eoa_frag_addr, eoa_frag_size) < 0)
 		    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, HADDR_UNDEF, "can't free eoa fragment")
 
 	    /* Freeing any possible fragment due to alignment in the block after extension */
 	    if(extended && aggr_frag_size)
-		if(H5MF_xfree(f, type, dxpl_id, aggr_frag_addr, aggr_frag_size) < 0)
+		if(H5MF_xfree(f, alloc_type, dxpl_id, aggr_frag_addr, aggr_frag_size) < 0)
 		    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, HADDR_UNDEF, "can't free aggregation fragment")
         } /* end if */
         else {
@@ -323,7 +325,7 @@ HDfprintf(stderr, "%s: Allocating block\n", FUNC);
 
 	    /* free any possible fragment */
 	    if(aggr_frag_size)
-		if(H5MF_xfree(f, type, dxpl_id, aggr_frag_addr, aggr_frag_size) < 0)
+		if(H5MF_xfree(f, alloc_type, dxpl_id, aggr_frag_addr, aggr_frag_size) < 0)
 		    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, HADDR_UNDEF, "can't free aggregation fragment")
         } /* end else */
     } /* end if */
@@ -364,6 +366,16 @@ HDfprintf(stderr, "%s: ret_value = %a\n", FUNC, ret_value);
  * Purpose:	Check if a block is inside an aggregator block and extend it
  *              if possible.
  *
+ * Note:
+ *	        When the block to be extended adjoins the aggregator--
+ *		    1) When the aggregator is at end of file:
+ *		       A) If the request is below the threshold, extend the block into the aggregator
+ *		       B) If the request is above the threshold,
+ *			    a) extend the aggregator by aggr->alloc_size or the extended amount
+ *			    b) extend the block into the aggregator
+ *		    2) When the aggregator is not at end of file:
+ *		       Extended the block into the aggregator if it has enough space to satisfy the request
+ *
  * Return:	Success:	TRUE(1)  - Block was extended
  *                              FALSE(0) - Block could not be extended
  * 		Failure:	FAIL
@@ -388,26 +400,56 @@ H5MF_aggr_try_extend(H5F_t *f, H5F_blk_aggr_t *aggr, H5FD_mem_t type,
 
     /* Check if this aggregator is active */
     if(f->shared->feature_flags & aggr->feature_flag) {
-        /* If the block being tested adjoins the beginning of the aggregator
+        /* 
+	 * If the block being tested adjoins the beginning of the aggregator
          *      block, check if the aggregator can accomodate the extension.
          */
         if(H5F_addr_eq(blk_end, aggr->addr)) {
-            /* If the aggregator block is at the end of the file, extend the
-             * file and "bubble" the aggregator up
-             */
-            if((ret_value = H5FD_try_extend(f->shared->lf, type, f, (aggr->addr + aggr->size), extra_requested)) < 0)
-                HGOTO_ERROR(H5E_RESOURCE, H5E_CANTEXTEND, FAIL, "error extending file")
-            else if(ret_value == TRUE) {
-                /* Shift the aggregator block by the extra requested */
-                aggr->addr += extra_requested;
-
-                /* Add extra requested to the aggregator block's total amount allocated */
-                aggr->tot_size += extra_requested;
-            } /* end if */
-            else {
-                /* Check if the aggregator block has enough internal space to satisfy
-                 *      extending the block.
-                 */
+	    haddr_t eoa;      /* EOA for the file */
+
+	    /* Get the EOA for the file */
+	    if(HADDR_UNDEF == (eoa = H5F_get_eoa(f, type)))
+		HGOTO_ERROR(H5E_RESOURCE, H5E_CANTGET, FAIL, "Unable to get eoa")
+
+	    /* If the aggregator is at the end of file: */
+	    if(H5F_addr_eq(eoa, aggr->addr + aggr->size)) {
+		/* If extra_requested is below percentage threshold, extend block into the aggregator. */
+		if(extra_requested <= (EXTEND_THRESHOLD * aggr->size)) {
+		    aggr->size -= extra_requested;
+		    aggr->addr += extra_requested;
+
+		    /* Indicate success */
+		    HGOTO_DONE(TRUE);
+		} 
+		/* 
+		 * If extra_requested is above percentage threshold:
+		 * 1) "bubble" up the aggregator by aggr->alloc_size or extra_requested
+		 * 2) extend the block into the aggregator 
+		 */
+		else {
+		    hsize_t extra = (extra_requested < aggr->alloc_size) ? aggr->alloc_size : extra_requested;
+
+		    if((ret_value = H5FD_try_extend(f->shared->lf, type, f, (aggr->addr + aggr->size), extra)) < 0)
+			HGOTO_ERROR(H5E_RESOURCE, H5E_CANTEXTEND, FAIL, "error extending file")
+		    else if(ret_value == TRUE) {
+			/* Shift the aggregator block by the extra requested */
+                        /* (allocates the space for the extra_requested) */
+			aggr->addr += extra_requested;
+
+			/* Add extra to the aggregator's total allocated amount */
+			aggr->tot_size += extra;
+
+                        /* Account for any space added to the aggregator */
+                        /* (either 0 (if extra_requested > aggr->alloc_size) or
+                         *      (aggr->alloc_size - extra_requested) -QAK
+                         */
+			aggr->size += extra;
+			aggr->size -= extra_requested;
+		    } /* end if */
+		} /* end if */
+	    } /* end if */
+            else { /* The aggreator is not at end of file */
+                /* Check if aggregator has enough internal space to satisfy the extension. */
                 if(aggr->size >= extra_requested) {
                     /* Extend block into aggregator */
                     aggr->size -= extra_requested;
@@ -416,8 +458,8 @@ H5MF_aggr_try_extend(H5F_t *f, H5F_blk_aggr_t *aggr, H5FD_mem_t type,
                     /* Indicate success */
                     HGOTO_DONE(TRUE);
                  } /* end if */
-            } /* end else */
-        } /* end if */
+	    } /* end else */
+	} /* end if */
     } /* end if */
 
 done:
@@ -462,7 +504,7 @@ H5MF_aggr_can_absorb(const H5F_t *f, const H5F_blk_aggr_t *aggr,
                 || H5F_addr_eq((aggr->addr + aggr->size), sect->sect_info.addr)) {
 #ifdef H5MF_AGGR_DEBUG
 HDfprintf(stderr, "%s: section {%a, %Hu} adjoins aggr = {%a, %Hu}\n", "H5MF_aggr_can_absorb", sect->sect_info.addr, sect->sect_info.size, aggr->addr, aggr->size);
-#endif /* H5MF_AGGR_DBEUG */
+#endif /* H5MF_AGGR_DEBUG */
             /* Check if aggregator would get too large and should be absorbed into section */
             if((aggr->size + sect->sect_info.size) >= aggr->alloc_size)
                 *shrink = H5MF_SHRINK_SECT_ABSORB_AGGR;
@@ -510,9 +552,9 @@ H5MF_aggr_absorb(const H5F_t UNUSED *f, H5F_blk_aggr_t *aggr, H5MF_free_section_
     if((aggr->size + sect->sect_info.size) >= aggr->alloc_size && allow_sect_absorb) {
         /* Check if the section adjoins the beginning or end of the aggregator */
         if(H5F_addr_eq((sect->sect_info.addr + sect->sect_info.size), aggr->addr)) {
-#ifdef H5MF_AGGR_DBEUG
+#ifdef H5MF_AGGR_DEBUG
 HDfprintf(stderr, "%s: aggr {%a, %Hu} adjoins front of section = {%a, %Hu}\n", "H5MF_aggr_absorb", aggr->addr, aggr->size, sect->sect_info.addr, sect->sect_info.size);
-#endif /* H5MF_AGGR_DBEUG */
+#endif /* H5MF_AGGR_DEBUG */
             /* Absorb aggregator onto end of section */
             sect->sect_info.size += aggr->size;
         } /* end if */
@@ -520,9 +562,9 @@ HDfprintf(stderr, "%s: aggr {%a, %Hu} adjoins front of section = {%a, %Hu}\n", "
             /* Sanity check */
             HDassert(H5F_addr_eq((aggr->addr + aggr->size), sect->sect_info.addr));
 
-#ifdef H5MF_AGGR_DBEUG
+#ifdef H5MF_AGGR_DEBUG
 HDfprintf(stderr, "%s: aggr {%a, %Hu} adjoins end of section = {%a, %Hu}\n", "H5MF_aggr_absorb", aggr->addr, aggr->size, sect->sect_info.addr, sect->sect_info.size);
-#endif /* H5MF_AGGR_DBEUG */
+#endif /* H5MF_AGGR_DEBUG */
             /* Absorb aggregator onto beginning of section */
             sect->sect_info.addr -= aggr->size;
             sect->sect_info.size += aggr->size;
@@ -536,9 +578,9 @@ HDfprintf(stderr, "%s: aggr {%a, %Hu} adjoins end of section = {%a, %Hu}\n", "H5
     else {
         /* Check if the section adjoins the beginning or end of the aggregator */
         if(H5F_addr_eq((sect->sect_info.addr + sect->sect_info.size), aggr->addr)) {
-#ifdef H5MF_AGGR_DBEUG
+#ifdef H5MF_AGGR_DEBUG
 HDfprintf(stderr, "%s: section {%a, %Hu} adjoins front of aggr = {%a, %Hu}\n", "H5MF_aggr_absorb", sect->sect_info.addr, sect->sect_info.size, aggr->addr, aggr->size);
-#endif /* H5MF_AGGR_DBEUG */
+#endif /* H5MF_AGGR_DEBUG */
             /* Absorb section onto front of aggregator */
             aggr->addr -= sect->sect_info.size;
             aggr->size += sect->sect_info.size;
@@ -552,9 +594,9 @@ HDfprintf(stderr, "%s: section {%a, %Hu} adjoins front of aggr = {%a, %Hu}\n", "
             /* Sanity check */
             HDassert(H5F_addr_eq((aggr->addr + aggr->size), sect->sect_info.addr));
 
-#ifdef H5MF_AGGR_DBEUG
+#ifdef H5MF_AGGR_DEBUG
 HDfprintf(stderr, "%s: section {%a, %Hu} adjoins end of aggr = {%a, %Hu}\n", "H5MF_aggr_absorb", sect->sect_info.addr, sect->sect_info.size, aggr->addr, aggr->size);
-#endif /* H5MF_AGGR_DBEUG */
+#endif /* H5MF_AGGR_DEBUG */
             /* Absorb section onto end of aggregator */
             aggr->size += sect->sect_info.size;
         } /* end if */
@@ -592,8 +634,10 @@ H5MF_aggr_query(const H5F_t *f, const H5F_blk_aggr_t *aggr, haddr_t *addr,
 
     /* Check if this aggregator is active */
     if(f->shared->feature_flags & aggr->feature_flag) {
-        *addr = aggr->addr;
-        *size = aggr->size;
+	if(addr)
+            *addr = aggr->addr;
+        if(size)
+            *size = aggr->size;
     } /* end if */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
@@ -637,9 +681,9 @@ H5MF_aggr_reset(H5F_t *f, hid_t dxpl_id, H5F_blk_aggr_t *aggr)
         /* Retain aggregator info */
         tmp_addr = aggr->addr;
         tmp_size = aggr->size;
-#ifdef H5MF_AGGR_DBEUG
+#ifdef H5MF_AGGR_DEBUG
 HDfprintf(stderr, "%s: tmp_addr = %a, tmp_size = %Hu\n", FUNC, tmp_addr, tmp_size);
-#endif /* H5MF_AGGR_DBEUG */
+#endif /* H5MF_AGGR_DEBUG */
 
         /* Reset aggregator block information */
         aggr->tot_size = 0;
@@ -725,3 +769,131 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5MF_free_aggrs() */
 
+
+/*-------------------------------------------------------------------------
+ * Function:    H5MF_aggr_can_shrink_eoa
+ *
+ * Purpose:     Check if the remaining space in the aggregator is at EOA
+ *
+ * Return:      Success:        non-negative (TRUE/FALSE)
+ *              Failure:        negative
+ *
+ * Programmer:  Vailin Choi
+ *
+ *-------------------------------------------------------------------------
+ */
+static htri_t
+H5MF_aggr_can_shrink_eoa(H5F_t *f, H5FD_mem_t type, H5F_blk_aggr_t *aggr)
+{
+    haddr_t eoa = HADDR_UNDEF;      	/* EOA for the file */
+    htri_t ret_value = FALSE;   	/* Return value */
+
+    FUNC_ENTER_NOAPI(FAIL)
+
+    /* Sanity check */
+    HDassert(f);
+    HDassert(aggr);
+    HDassert(aggr->feature_flag == H5FD_FEAT_AGGREGATE_METADATA || aggr->feature_flag == H5FD_FEAT_AGGREGATE_SMALLDATA);
+
+    /* Get the EOA for the file */
+    if(HADDR_UNDEF == (eoa = H5F_get_eoa(f, type)))
+	HGOTO_ERROR(H5E_RESOURCE, H5E_CANTGET, FAIL, "Unable to get eoa")
+
+    /* Check if the aggregator is at EOA */
+    if(aggr->size > 0 && H5F_addr_defined(aggr->addr))
+	ret_value = H5F_addr_eq(eoa, aggr->addr + aggr->size);
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* H5MF_aggr_can_shrink_eoa() */
+
+
+/*-------------------------------------------------------------------------
+ * Function:    H5MF_aggr_free
+ *
+ * Purpose:     Free the aggregator's space in the file.
+ *
+ * Note:        Does _not_ put the space on a free list
+ *
+ * Return:      Success:        Non-negative
+ *              Failure:        Negative
+ *
+ * Programmer:  Vailin Choi
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5MF_aggr_free(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, H5F_blk_aggr_t *aggr)
+{
+    herr_t ret_value = SUCCEED;   	/* Return value */
+
+    FUNC_ENTER_NOAPI(FAIL)
+
+    /* Sanity check */
+    HDassert(f);
+    HDassert(f->shared->lf);
+    HDassert(aggr);
+    HDassert(H5F_addr_defined(aggr->addr));
+    HDassert(aggr->size > 0);
+    HDassert(H5F_INTENT(f) & H5F_ACC_RDWR);
+    HDassert(aggr->feature_flag == H5FD_FEAT_AGGREGATE_METADATA || aggr->feature_flag == H5FD_FEAT_AGGREGATE_SMALLDATA);
+    HDassert(f->shared->feature_flags & aggr->feature_flag);
+
+    /* Free the remaining space at EOA in the aggregator */
+    if(H5FD_free(f->shared->lf, dxpl_id, type, f, aggr->addr, aggr->size) < 0)
+        HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, FAIL, "can't free aggregation block")
+
+    /* Reset the aggregator */
+    aggr->tot_size = 0;
+    aggr->addr = HADDR_UNDEF;
+    aggr->size = 0;
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* H5MF_aggr_free() */
+
+
+/*-------------------------------------------------------------------------
+ * Function:    H5MF_aggrs_try_shrink_eoa
+ *
+ * Purpose:     Check the metadata & small block aggregators to see if
+ *		EOA shrink is possible; if so, shrink each aggregator
+ *
+ * Return:      Success:        Non-negative
+ *              Failure:        Negative
+ *
+ * Programmer:  Vailin Choi
+ *
+ *-------------------------------------------------------------------------
+ */
+htri_t
+H5MF_aggrs_try_shrink_eoa(H5F_t *f, hid_t dxpl_id)
+{
+    htri_t ma_status;        /* Whether the metadata aggregator can shrink the EOA */
+    htri_t sda_status;       /* Whether the small data aggregator can shrink the EOA */
+    htri_t ret_value;        /* Return value */
+
+    FUNC_ENTER_NOAPI(FAIL)
+
+    /* Check args */
+    HDassert(f);
+    HDassert(f->shared);
+
+    if((ma_status = H5MF_aggr_can_shrink_eoa(f, H5FD_MEM_DEFAULT, &(f->shared->meta_aggr))) < 0)
+        HGOTO_ERROR(H5E_RESOURCE, H5E_CANTGET, FAIL, "can't query metadata aggregator stats")
+    if(ma_status > 0)
+	if(H5MF_aggr_free(f, dxpl_id, H5FD_MEM_DEFAULT, &(f->shared->meta_aggr)) < 0)
+	    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTSHRINK, FAIL, "can't check for shrinking eoa")
+
+    if((sda_status = H5MF_aggr_can_shrink_eoa(f, H5FD_MEM_DRAW, &(f->shared->sdata_aggr))) < 0)
+        HGOTO_ERROR(H5E_RESOURCE, H5E_CANTGET, FAIL, "can't query small data aggregator stats")
+    if(sda_status > 0)
+	if(H5MF_aggr_free(f, dxpl_id, H5FD_MEM_DRAW, &(f->shared->sdata_aggr)) < 0)
+	    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTSHRINK, FAIL, "can't check for shrinking eoa")
+
+    ret_value = (ma_status || sda_status);
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5MF_aggrs_try_shrink_eoa() */
+
diff --git a/src/H5MFpkg.h b/src/H5MFpkg.h
index 25785ae..2071a0a 100644
--- a/src/H5MFpkg.h
+++ b/src/H5MFpkg.h
@@ -122,6 +122,7 @@ typedef struct H5MF_sect_ud_t {
     hid_t dxpl_id;              /* DXPL for VFD operations */
     H5FD_mem_t alloc_type;      /* Type of memory being allocated */
     hbool_t allow_sect_absorb;  /* Whether sections are allowed to absorb a block aggregator */
+    hbool_t allow_eoa_shrink_only;  /* Whether shrinking eoa is allowed only for the section */
 
     /* Up */
     H5MF_shrink_type_t shrink;  /* Type of shrink operation to perform */
diff --git a/src/H5MFprivate.h b/src/H5MFprivate.h
index 3f2a427..97c7aa3 100644
--- a/src/H5MFprivate.h
+++ b/src/H5MFprivate.h
@@ -79,6 +79,7 @@ H5_DLL haddr_t H5MF_alloc_tmp(H5F_t *f, hsize_t size);
 
 /* 'block aggregator' routines */
 H5_DLL herr_t H5MF_free_aggrs(H5F_t *f, hid_t dxpl_id);
+H5_DLL htri_t H5MF_aggrs_try_shrink_eoa(H5F_t *f, hid_t dxpl_id);
 
 /* Debugging routines */
 #ifdef H5MF_DEBUGGING
diff --git a/src/H5MFsection.c b/src/H5MFsection.c
index 89b2219..0572def 100644
--- a/src/H5MFsection.c
+++ b/src/H5MFsection.c
@@ -328,6 +328,10 @@ HDfprintf(stderr, "%s: section {%a, %Hu}, shrinks file, eoa = %a\n", FUNC, sect-
         HGOTO_DONE(TRUE)
     } /* end if */
     else {
+        /* Shrinking can't occur if the 'eoa_shrink_only' flag is set and we're not shrinking the EOA */
+        if(udata->allow_eoa_shrink_only)
+            HGOTO_DONE(FALSE)
+
         /* Check if this section is allowed to merge with metadata aggregation block */
         if(udata->f->shared->fs_aggr_merge[udata->alloc_type] & H5F_FS_MERGE_METADATA) {
             htri_t status;              /* Status from aggregator adjoin */
diff --git a/src/H5O.c b/src/H5O.c
index d3c2766..3d31c39 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -1710,7 +1710,7 @@ H5O_protect(const H5O_loc_t *loc, hid_t dxpl_id, H5AC_protect_t prot)
         while(curr_msg < cont_msg_info.nmsgs) {
             H5O_chunk_proxy_t *chk_proxy;       /* Proxy for chunk, to bring it into memory */
 #ifndef NDEBUG
-            unsigned chkcnt = oh->nchunks;      /* Count of chunks (for sanity checking) */
+            size_t chkcnt = oh->nchunks;      /* Count of chunks (for sanity checking) */
 #endif /* NDEBUG */
 
             /* Bring the chunk into the cache */
@@ -2000,15 +2000,15 @@ H5O_touch_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, hbool_t force)
 
         /* Check version, to determine how to store time information */
         if(oh->version == H5O_VERSION_1) {
-            int	idx;                    /* Index of modification time message to update */
+            size_t	idx;                    /* Index of modification time message to update */
 
             /* Look for existing message */
-            for(idx = 0; idx < (int)oh->nmesgs; idx++)
+            for(idx = 0; idx < oh->nmesgs; idx++)
                 if(H5O_MSG_MTIME == oh->mesg[idx].type || H5O_MSG_MTIME_NEW == oh->mesg[idx].type)
                     break;
 
             /* Create a new message, if necessary */
-            if(idx == (int)oh->nmesgs) {
+            if(idx == oh->nmesgs) {
                 unsigned mesg_flags = 0;        /* Flags for message in object header */
 
                 /* If we would have to create a new message, but we aren't 'forcing' it, get out now */
@@ -2016,7 +2016,7 @@ H5O_touch_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, hbool_t force)
                     HGOTO_DONE(SUCCEED);        /*nothing to do*/
 
                 /* Allocate space for the modification time message */
-                if((idx = H5O_msg_alloc(f, dxpl_id, oh, H5O_MSG_MTIME_NEW, &mesg_flags, &now)) < 0)
+                if(H5O_msg_alloc(f, dxpl_id, oh, H5O_MSG_MTIME_NEW, &mesg_flags, &now, &idx) < 0)
                     HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, "unable to allocate space for modification time message")
 
                 /* Set the message's flags if appropriate */
@@ -2123,7 +2123,7 @@ done:
 herr_t
 H5O_bogus_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned mesg_flags)
 {
-    int	idx;                        /* Local index variable */
+    size_t	idx;                /* Local index variable */
     herr_t ret_value = SUCCEED;     /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -2132,7 +2132,7 @@ H5O_bogus_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned mesg_flags)
     HDassert(oh);
 
     /* Look for existing message */
-    for(idx = 0; idx < (int)oh->nmesgs; idx++)
+    for(idx = 0; idx < oh->nmesgs; idx++)
 	if(H5O_MSG_BOGUS == oh->mesg[idx].type)
             break;
 
@@ -2148,7 +2148,7 @@ H5O_bogus_oh(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned mesg_flags)
         bogus->u = H5O_BOGUS_VALUE;
 
         /* Allocate space in the object header for bogus message */
-	if((idx = H5O_msg_alloc(f, dxpl_id, oh, H5O_MSG_BOGUS, &mesg_flags, bogus)) < 0)
+	if(H5O_msg_alloc(f, dxpl_id, oh, H5O_MSG_BOGUS, &mesg_flags, bogus, &idx) < 0)
 	    HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, "unable to allocate space for 'bogus' message")
 
         /* Point to "bogus" information (take it over) */
@@ -2708,8 +2708,8 @@ H5O_get_hdr_info_real(const H5O_t *oh, H5O_hdr_info_t *hdr)
     hdr->version = oh->version;
 
     /* Set the number of messages & chunks */
-    hdr->nmesgs = oh->nmesgs;
-    hdr->nchunks = oh->nchunks;
+    H5_ASSIGN_OVERFLOW(hdr->nmesgs, oh->nmesgs, size_t, unsigned);
+    H5_ASSIGN_OVERFLOW(hdr->nchunks, oh->nchunks, size_t, unsigned);
 
     /* Set the status flags */
     hdr->flags = oh->flags;
diff --git a/src/H5Oainfo.c b/src/H5Oainfo.c
index 8a146c4..fb68958 100644
--- a/src/H5Oainfo.c
+++ b/src/H5Oainfo.c
@@ -196,7 +196,7 @@ H5O_ainfo_encode(H5F_t *f, hbool_t UNUSED disable_shared, uint8_t *p, const void
 
     /* The flags for the attribute indices */
     flags = ainfo->track_corder ? H5O_AINFO_TRACK_CORDER : 0;
-    flags |= ainfo->index_corder ? H5O_AINFO_INDEX_CORDER : 0;
+    flags = (unsigned char)(flags | (ainfo->index_corder ? H5O_AINFO_INDEX_CORDER : 0));
     *p++ = flags;
 
     /* Max. creation order value for the object */
@@ -284,12 +284,12 @@ H5O_ainfo_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg)
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Set return value */
-    ret_value = 1                       /* Version */
+    ret_value = (size_t)(1                       /* Version */
                 + 1                     /* Index flags */
                 + (ainfo->track_corder ? 2 : 0) /* Curr. max. creation order value */
                 + H5F_SIZEOF_ADDR(f)    /* Address of fractal heap to store "dense" attributes */
                 + H5F_SIZEOF_ADDR(f)    /* Address of v2 B-tree for indexing names of attributes */
-                + (ainfo->index_corder ? H5F_SIZEOF_ADDR(f) : 0);   /* Address of v2 B-tree for indexing creation order values of attributes */
+                + (ainfo->index_corder ? H5F_SIZEOF_ADDR(f) : 0));   /* Address of v2 B-tree for indexing creation order values of attributes */
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_ainfo_size() */
diff --git a/src/H5Oalloc.c b/src/H5Oalloc.c
index 05322af..5c00fb2 100644
--- a/src/H5Oalloc.c
+++ b/src/H5Oalloc.c
@@ -59,14 +59,15 @@
 /********************/
 
 static herr_t H5O_add_gap(H5F_t *f, H5O_t *oh, unsigned chunkno,
-    hbool_t *chk_dirtied, unsigned idx, uint8_t *new_gap_loc, size_t new_gap_size);
+    hbool_t *chk_dirtied, size_t idx, uint8_t *new_gap_loc, size_t new_gap_size);
 static herr_t H5O_eliminate_gap(H5O_t *oh, hbool_t *chk_dirtied,
     H5O_mesg_t *mesg, uint8_t *new_gap_loc, size_t new_gap_size);
-static herr_t H5O_alloc_null(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned null_idx,
+static herr_t H5O_alloc_null(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t null_idx,
     const H5O_msg_class_t *new_type, void *new_native, size_t new_size);
 static htri_t H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
-    unsigned chunkno, size_t size, int *msg_idx);
-static int H5O_alloc_new_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t size);
+    unsigned chunkno, size_t size, size_t *msg_idx);
+static herr_t H5O_alloc_new_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t size,
+    size_t *new_idx);
 static htri_t H5O_move_cont(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned cont_u);
 static htri_t H5O_move_msgs_forward(H5F_t *f, hid_t dxpl_id, H5O_t *oh);
 static htri_t H5O_merge_null(H5F_t *f, hid_t dxpl_id, H5O_t *oh);
@@ -109,10 +110,10 @@ H5FL_EXTERN(H5O_cont_t);
  */
 static herr_t
 H5O_add_gap(H5F_t *f, H5O_t *oh, unsigned chunkno, hbool_t *chk_dirtied,
-    unsigned idx, uint8_t *new_gap_loc, size_t new_gap_size)
+    size_t idx, uint8_t *new_gap_loc, size_t new_gap_size)
 {
     hbool_t merged_with_null;           /* Whether the gap was merged with a null message */
-    unsigned u;                         /* Local index variable */
+    size_t u;                           /* Local index variable */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -335,7 +336,7 @@ H5O_eliminate_gap(H5O_t *oh, hbool_t *chk_dirtied, H5O_mesg_t *mesg,
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5O_alloc_null(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned null_idx,
+H5O_alloc_null(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t null_idx,
     const H5O_msg_class_t *new_type, void *new_native, size_t new_size)
 {
     H5O_chunk_proxy_t *chk_proxy = NULL;        /* Chunk that message is in */
@@ -505,7 +506,7 @@ done:
  */
 static htri_t
 H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
-    size_t size, int *msg_idx)
+    size_t size, size_t *msg_idx)
 {
     H5O_chunk_proxy_t *chk_proxy = NULL;    /* Chunk that message is in */
     hbool_t     chk_dirtied = FALSE;        /* Flag for unprotecting chunk */
@@ -514,11 +515,12 @@ H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
     uint8_t     *old_image;     /* Old address of chunk's image in memory */
     size_t      old_size;       /* Old size of chunk */
     htri_t      extended;       /* If chunk can be extended */
-    int         extend_msg = -1;/* Index of null message to extend */
+    size_t      extend_msg;     /* Index of null message to extend */
+    hbool_t     extended_msg = FALSE;   /* Whether an existing message was extended */
     uint8_t     new_size_flags = 0;     /* New chunk #0 size flags */
     hbool_t     adjust_size_flags = FALSE;      /* Whether to adjust the chunk #0 size flags */
     size_t      extra_prfx_size = 0; /* Extra bytes added to object header prefix */
-    unsigned    u;              /* Local index variable */
+    size_t      u;              /* Local index variable */
     htri_t      ret_value = TRUE; 	/* return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -542,13 +544,14 @@ H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
                 == ((oh->chunk[chunkno].image + oh->chunk[chunkno].size) -
                     (oh->chunk[chunkno].gap + H5O_SIZEOF_CHKSUM_OH(oh))))) {
 
-            extend_msg = (int)u;
+            extend_msg = u;
+            extended_msg = TRUE;
             break;
         } /* end if */
     } /* end for */
 
     /* If we can extend an existing null message, adjust the delta appropriately */
-    if(extend_msg >= 0) {
+    if(extended_msg) {
         HDassert(oh->chunk[chunkno].gap == 0);
         delta = aligned_size - oh->mesg[extend_msg].raw_size;
     } /* end if */
@@ -598,7 +601,7 @@ H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
 
     /* Adjust object header prefix flags */
     if(adjust_size_flags) {
-        oh->flags &= (uint8_t)~H5O_HDR_CHUNK0_SIZE;
+        oh->flags = (uint8_t)(oh->flags & ~H5O_HDR_CHUNK0_SIZE);
         oh->flags |= new_size_flags;
 
         /* Mark object header as dirty in cache */
@@ -607,7 +610,7 @@ H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
     } /* end if */
 
     /* If we can extend an existing null message, take care of that */
-    if(extend_msg >= 0) {
+    if(extended_msg) {
         /* Adjust message size of existing null message */
         oh->mesg[extend_msg].raw_size += delta;
     } /* end if */
@@ -619,7 +622,7 @@ H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate more space for messages")
 
         /* Set extension message */
-        extend_msg = (int)oh->nmesgs++;
+        extend_msg = oh->nmesgs++;
 
         /* Initialize new null message */
         oh->mesg[extend_msg].type = H5O_MSG_NULL;
@@ -690,7 +693,7 @@ H5O_alloc_extend_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno,
     if(H5O_chunk_resize(oh, chk_proxy) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTRESIZE, FAIL, "unable to resize object header chunk")
 
-    /* Set return value */
+    /* Set new message index */
     *msg_idx = extend_msg;
 
 done:
@@ -737,8 +740,8 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-static int
-H5O_alloc_new_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t size)
+static herr_t
+H5O_alloc_new_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t size, size_t *new_idx)
 {
     /* Struct for storing information about "best" messages to allocate from */
     typedef struct {
@@ -756,13 +759,13 @@ H5O_alloc_new_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t size)
     int         found_null = (-1);      /* Best fit null message         */
     alloc_info  found_attr = {-1, 0, 0, 0, 0};      /* Best fit attribute message    */
     alloc_info  found_other = {-1, 0, 0, 0, 0};     /* Best fit other message        */
-    unsigned    idx;                    /*message number */
+    size_t      idx;                    /* Message number */
     uint8_t     *p = NULL;              /*ptr into new chunk            */
     H5O_cont_t  *cont = NULL;           /*native continuation message   */
     unsigned    chunkno;                /* Chunk allocated */
     haddr_t	new_chunk_addr;
     unsigned    u;                      /* Local index variable */
-    int         ret_value;              /* Return value */
+    herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
@@ -1089,11 +1092,11 @@ H5O_alloc_new_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t size)
     cont->chunkno = chunkno;
 
     /* Split the null message and point at continuation message */
-    if(H5O_alloc_null(f, dxpl_id, oh, (unsigned)found_null, H5O_MSG_CONT, cont, cont_size) < 0)
+    if(H5O_alloc_null(f, dxpl_id, oh, (size_t)found_null, H5O_MSG_CONT, cont, cont_size) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTINSERT, FAIL, "can't split null message")
 
-    /* Set return value */
-    ret_value = (int)idx;
+    /* Set new message index value */
+    *new_idx = idx;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1114,14 +1117,14 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-int
+herr_t
 H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
-    const void *mesg)
+    const void *mesg, size_t *mesg_idx)
 {
-    size_t raw_size;        /* Raw size of message */
-    size_t aligned_size;    /* Size of message including alignment */
-    int idx;                /* Index of message which fits allocation */
-    int ret_value;          /* Return value */
+    size_t raw_size;            /* Raw size of message */
+    size_t aligned_size;        /* Size of message including alignment */
+    size_t idx;                 /* Index of message which fits allocation */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
@@ -1129,6 +1132,7 @@ H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
     HDassert(oh);
     HDassert(type);
     HDassert(mesg);
+    HDassert(mesg_idx);
 
     /* Compute the size needed to store the message in the object header */
     raw_size = (type->raw_size)(f, FALSE, mesg);
@@ -1139,12 +1143,12 @@ H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
     aligned_size = H5O_ALIGN_OH(oh, raw_size);
 
     /* look for a null message which is large enough */
-    for(idx = 0; idx < (int)oh->nmesgs; idx++)
+    for(idx = 0; idx < oh->nmesgs; idx++)
         if(H5O_NULL_ID == oh->mesg[idx].type->id && oh->mesg[idx].raw_size >= aligned_size)
             break;
 
     /* if we didn't find one, then allocate more header space */
-    if(idx >= (int)oh->nmesgs) {
+    if(idx >= oh->nmesgs) {
         unsigned        chunkno;
 
         /* check to see if we can extend one of the chunks.  If we can,
@@ -1163,22 +1167,22 @@ H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
         } /* end for */
 
         /* If we were not able to extend a chunk, create a new one */
-        if(idx >= (int)oh->nmesgs)
-            if((idx = H5O_alloc_new_chunk(f, dxpl_id, oh, raw_size)) < 0)
+        if(idx >= oh->nmesgs)
+            if(H5O_alloc_new_chunk(f, dxpl_id, oh, raw_size, &idx) < 0)
                 HGOTO_ERROR(H5E_OHDR, H5E_NOSPACE, FAIL, "unable to create a new object header data chunk")
     } /* end if */
-    HDassert(idx >= 0 && idx < (int)oh->nmesgs);
+    HDassert(idx < oh->nmesgs);
 
     /* Split the null message and point at continuation message */
-    if(H5O_alloc_null(f, dxpl_id, oh, (unsigned)idx, type, NULL, aligned_size) < 0)
+    if(H5O_alloc_null(f, dxpl_id, oh, idx, type, NULL, aligned_size) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTINSERT, FAIL, "can't split null message")
 
     /* Mark object header as dirty in cache */
     if(H5AC_mark_entry_dirty(oh) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTMARKDIRTY, FAIL, "unable to mark object header as dirty")
 
-    /* Set return value */
-    ret_value = (int)idx;
+    /* Set message index value */
+    *mesg_idx = idx;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1296,7 +1300,7 @@ H5O_move_cont(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned cont_u)
         size_t nonnull_size;	/* Total size of nonnull messages in the chunk pointed to by cont message */
         H5O_mesg_t *curr_msg;   /* Pointer to the current message to operate on */
         size_t gap_size;        /* Size of gap produced */
-        unsigned v;	        /* Local index variable */
+        size_t v;	        /* Local index variable */
 
         /* Spin through messages */
         nonnull_size = 0;
@@ -1533,7 +1537,7 @@ H5O_move_msgs_forward(H5F_t *f, hid_t dxpl_id, H5O_t *oh)
             } /* end if */
             else {
                 H5O_mesg_t *null_msg;   /* Pointer to current message to operate on */
-                unsigned   v;           /* Local index variable */
+                size_t   v;             /* Local index variable */
 
                 /* Check if messages in chunk pointed to can replace continuation message */
                 if(H5O_CONT_ID == curr_msg->type->id) {
@@ -1607,7 +1611,7 @@ H5O_move_msgs_forward(H5F_t *f, hid_t dxpl_id, H5O_t *oh)
                                 null_chk_dirtied = FALSE;
                             } /* end if */
                             else {
-                                unsigned new_null_msg;          /* Message index for new null message */
+                                size_t new_null_msg;          /* Message index for new null message */
 
                                 /* Check if null message is large enough to still exist */
                                 if((null_msg->raw_size - curr_msg->raw_size) < (size_t)H5O_SIZEOF_MSGHDR_OH(oh)) {
@@ -2135,8 +2139,8 @@ H5O_alloc_shrink_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno)
     uint8_t     new_size_flags = 0;             /* New chunk #0 size flags */
     hbool_t     adjust_size_flags = FALSE;      /* Whether to adjust the chunk #0 size flags */
     size_t      less_prfx_size = 0;             /* Bytes removed from object header prefix */
+    size_t      u;                              /* Index */
     herr_t      ret_value = SUCCEED;            /* Return value */
-    unsigned    u;                              /* Index */
 
     FUNC_ENTER_NOAPI_NOINIT
 
@@ -2237,7 +2241,7 @@ H5O_alloc_shrink_chunk(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned chunkno)
 
     if(adjust_size_flags) {
         /* Adjust object header prefix flags */
-        oh->flags &= (uint8_t)~H5O_HDR_CHUNK0_SIZE;
+        oh->flags = (uint8_t)(oh->flags & ~H5O_HDR_CHUNK0_SIZE);
         oh->flags |= new_size_flags;
 
         /* Slide chunk 0 data down */
diff --git a/src/H5Oattr.c b/src/H5Oattr.c
index 510d64f..b8e6b32 100644
--- a/src/H5Oattr.c
+++ b/src/H5Oattr.c
@@ -300,7 +300,7 @@ H5O_attr_encode(H5F_t *f, uint8_t *p, const void *mesg)
     if(attr->shared->version >= H5O_ATTR_VERSION_2) {
         flags = (is_type_shared ? H5O_ATTR_FLAG_TYPE_SHARED : 0 );
         flags |= (is_space_shared ? H5O_ATTR_FLAG_SPACE_SHARED : 0);
-        *p++ = flags;    /* Set flags for attribute */
+        *p++ = (uint8_t)flags;    /* Set flags for attribute */
     } /* end if */
     else
         *p++ = 0; /* Reserved, for version <2 */
@@ -723,7 +723,7 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5O_attr_get_crt_index(const void *_mesg, H5O_msg_crt_idx_t *crt_idx /*out*/)
 {
     const H5A_t  *attr = (const H5A_t *)_mesg;
@@ -753,7 +753,7 @@ H5O_attr_get_crt_index(const void *_mesg, H5O_msg_crt_idx_t *crt_idx /*out*/)
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5O_attr_set_crt_index(void *_mesg, H5O_msg_crt_idx_t crt_idx)
 {
     H5A_t  *attr = (H5A_t *)_mesg;
diff --git a/src/H5Ocache.c b/src/H5Ocache.c
index d4969a0..f2f1f96 100644
--- a/src/H5Ocache.c
+++ b/src/H5Ocache.c
@@ -656,7 +656,7 @@ H5O_size(const H5F_t UNUSED *f, const H5O_t *oh, size_t *size_ptr)
 
     /* Report the object header's prefix+first chunk length */
     if(oh->chunk0_size)
-       *size_ptr = H5O_SIZEOF_HDR(oh) + oh->chunk0_size;
+       *size_ptr = (size_t)H5O_SIZEOF_HDR(oh) + oh->chunk0_size;
     else
        *size_ptr = oh->chunk[0].size;
 
@@ -981,7 +981,7 @@ H5O_cache_chk_size(const H5F_t UNUSED *f, const H5O_chunk_proxy_t *chk_proxy, si
 static herr_t
 H5O_add_cont_msg(H5O_cont_msgs_t *cont_msg_info, const H5O_cont_t *cont)
 {
-    unsigned contno;            /* Continuation message index */
+    size_t contno;              /* Continuation message index */
     herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -1032,7 +1032,7 @@ H5O_chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image,
 {
     const uint8_t *p;           /* Pointer into buffer to decode */
     uint8_t *eom_ptr;           /* Pointer to end of messages for a chunk */
-    unsigned curmesg;           /* Current message being decoded in object header */
+    size_t curmesg;             /* Current message being decoded in object header */
     unsigned merged_null_msgs = 0;  /* Number of null messages merged together */
     unsigned chunkno;           /* Current chunk's index */
 #ifndef NDEBUG
@@ -1102,7 +1102,7 @@ H5O_chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image,
     nullcnt = 0;
 #endif /* NDEBUG */
     while(p < eom_ptr) {
-        unsigned mesgno;        /* Current message to operate on */
+        size_t mesgno;          /* Current message to operate on */
         size_t mesg_size;       /* Size of message read in */
         unsigned id;            /* ID (type) of current message */
         uint8_t	flags;          /* Flags for current message */
@@ -1164,7 +1164,7 @@ H5O_chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image,
 
             /* Combine adjacent null messages */
             mesgno = oh->nmesgs - 1;
-            oh->mesg[mesgno].raw_size += H5O_SIZEOF_MSGHDR_OH(oh) + mesg_size;
+            oh->mesg[mesgno].raw_size += (size_t)H5O_SIZEOF_MSGHDR_OH(oh) + mesg_size;
             oh->mesg[mesgno].dirty = TRUE;
             merged_null_msgs++;
             udata->merged_null_msgs++;
diff --git a/src/H5Ocont.c b/src/H5Ocont.c
index b609bfd..647532b 100644
--- a/src/H5Ocont.c
+++ b/src/H5Ocont.c
@@ -179,8 +179,8 @@ H5O_cont_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void UNUSED *
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Set return value */
-    ret_value = H5F_SIZEOF_ADDR(f) +    /* Continuation header address */
-                H5F_SIZEOF_SIZE(f);     /* Continuation header length */
+    ret_value = (size_t)(H5F_SIZEOF_ADDR(f) +    /* Continuation header address */
+                H5F_SIZEOF_SIZE(f));     /* Continuation header length */
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_cont_size() */
diff --git a/src/H5Ocopy.c b/src/H5Ocopy.c
index d26bdf7..9dd253d 100644
--- a/src/H5Ocopy.c
+++ b/src/H5Ocopy.c
@@ -342,7 +342,7 @@ H5O_copy_header_real(const H5O_loc_t *oloc_src, H5O_loc_t *oloc_dst /*out*/,
     void                   *cpy_udata = NULL;       /* User data for passing to message callbacks */
     uint64_t               dst_oh_size;             /* Total size of the destination OH */
     size_t                 dst_oh_null;             /* Size of the null message to add to destination OH */
-    unsigned               dst_oh_gap;              /* Size of the gap in chunk #0 of destination OH */
+    size_t                 dst_oh_gap;              /* Size of the gap in chunk #0 of destination OH */
     uint8_t                *current_pos;            /* Current position in destination image */
     size_t                 msghdr_size;
     herr_t                 ret_value = SUCCEED;
@@ -629,14 +629,14 @@ H5O_copy_header_real(const H5O_loc_t *oloc_src, H5O_loc_t *oloc_dst /*out*/,
     /* Compute space for messages. */
     dst_oh_size = 0;
     for(mesgno = 0; mesgno < oh_dst->nmesgs; mesgno++) {
-        dst_oh_size += H5O_SIZEOF_MSGHDR_OH(oh_dst);
+        dst_oh_size += (uint64_t)H5O_SIZEOF_MSGHDR_OH(oh_dst);
         dst_oh_size += oh_dst->mesg[mesgno].raw_size;
     } /* end for */
 
     /* Check if we need to determine correct value for chunk #0 size bits */
     if(oh_dst->version > H5O_VERSION_1) {
         /* Reset destination object header's "chunk 0 size" flags */
-        oh_dst->flags &= ~H5O_HDR_CHUNK0_SIZE;
+        oh_dst->flags = (uint8_t)(oh_dst->flags & ~H5O_HDR_CHUNK0_SIZE);
 
         /* Determine correct value for chunk #0 size bits */
         if(dst_oh_size > 4294967295)
@@ -745,7 +745,7 @@ H5O_copy_header_real(const H5O_loc_t *oloc_src, H5O_loc_t *oloc_dst /*out*/,
 
     /* Check if we need to add a NULL message to this header */
     if(dst_oh_null > 0) {
-        unsigned null_idx;              /* Index of new NULL message */
+        size_t null_idx;                /* Index of new NULL message */
 
         /* Make sure we have enough space for new NULL message */
         if(oh_dst->nmesgs + 1 > oh_dst->alloc_nmesgs)
@@ -1056,11 +1056,15 @@ H5O_copy_header(const H5O_loc_t *oloc_src, H5O_loc_t *oloc_dst /*out */,
 
     FUNC_ENTER_NOAPI_NOINIT
 
+    /* Sanity check */
     HDassert(oloc_src);
     HDassert(oloc_src->file);
     HDassert(H5F_addr_defined(oloc_src->addr));
     HDassert(oloc_dst->file);
 
+    /* Intialize copy info before errors can be thrown */
+    HDmemset(&cpy_info, 0, sizeof(H5O_copy_t));
+
     /* Get the copy property list */
     if(NULL == (ocpy_plist = (H5P_genplist_t *)H5I_object(ocpypl_id)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
@@ -1078,7 +1082,6 @@ H5O_copy_header(const H5O_loc_t *oloc_src, H5O_loc_t *oloc_dst /*out */,
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get callback info")
 
     /* Convert copy flags into copy struct */
-    HDmemset(&cpy_info, 0, sizeof(H5O_copy_t));
     if((cpy_option & H5O_COPY_SHALLOW_HIERARCHY_FLAG) > 0) {
         cpy_info.copy_shallow = TRUE;
         cpy_info.max_depth = 1;
@@ -1403,7 +1406,7 @@ H5O_copy_free_comm_dt_cb(void *item, void *_key, void UNUSED *op_data)
     haddr_t     *addr = (haddr_t *)item;
     H5O_copy_search_comm_dt_key_t *key = (H5O_copy_search_comm_dt_key_t *)_key;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     HDassert(addr);
     HDassert(key);
@@ -1439,7 +1442,7 @@ H5O_copy_comm_dt_cmp(const void *_key1, const void *_key2)
     const H5O_copy_search_comm_dt_key_t *key2 = (const H5O_copy_search_comm_dt_key_t *)_key2;
     int ret_value = 0;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Check fileno.  It is unlikely to be different so check if they are equal
      * first so only one comparison needs to be made. */
@@ -1552,6 +1555,10 @@ done:
  * Programmer:  Neil Fortner
  *              Nov 3 2011
  *
+ * Modifications:
+ *	Vailin Choi; August 2012
+ *	Use H5O_obj_class to get object type instead of
+ *	H5O_get_info(...TRUE....) saving time in traversing metadata.
  *-------------------------------------------------------------------------
  */
 static herr_t
@@ -1561,8 +1568,8 @@ H5O_copy_search_comm_dt_check(H5O_loc_t *obj_oloc,
     H5O_copy_search_comm_dt_key_t *key = NULL; /* Skiplist key */
     haddr_t     *addr = NULL;           /* Destination address */
     hbool_t     obj_inserted = FALSE;   /* Object inserted into skip list */
-    H5O_info_t  oinfo;                  /* Object info */
     H5A_attr_iter_op_t attr_op;         /* Attribute iteration operator */
+    const H5O_obj_class_t  *obj_class = NULL;       /* Type of object */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -1573,13 +1580,13 @@ H5O_copy_search_comm_dt_check(H5O_loc_t *obj_oloc,
     HDassert(udata->dst_dt_list);
     HDassert(udata->dst_root_loc);
 
-    /* Get the object's info */
-    if(H5O_get_info(obj_oloc, udata->dxpl_id, TRUE, &oinfo) < 0)
-        HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, FAIL, "unable to get object info")
+    /* Get pointer to object class for this object */
+    if((obj_class = H5O_obj_class(obj_oloc, udata->dxpl_id)) == NULL)
+        HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, "unable to determine object type")
 
     /* Check if the object is a datatype, a dataset using a committed
      * datatype, or contains an attribute using a committed datatype */
-    if(oinfo.type == H5O_TYPE_NAMED_DATATYPE) {
+    if(obj_class->type == H5O_TYPE_NAMED_DATATYPE) {
         /* Allocate key */
         if(NULL == (key = H5FL_MALLOC(H5O_copy_search_comm_dt_key_t)))
             HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
@@ -1604,7 +1611,7 @@ H5O_copy_search_comm_dt_check(H5O_loc_t *obj_oloc,
             obj_inserted = TRUE;
         } /* end if */
     } /* end if */
-    else if(oinfo.type == H5O_TYPE_DATASET) {
+    else if(obj_class->type == H5O_TYPE_DATASET) {
         /* Allocate key */
         if(NULL == (key = H5FL_MALLOC(H5O_copy_search_comm_dt_key_t)))
             HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
diff --git a/src/H5Odbg.c b/src/H5Odbg.c
index 5c07b64..5901c61 100644
--- a/src/H5Odbg.c
+++ b/src/H5Odbg.c
@@ -398,7 +398,7 @@ H5O_debug_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, haddr_t addr, FILE *stream, i
 	if(0 == i) {
             if(H5F_addr_ne(oh->chunk[i].addr, addr))
                 HDfprintf(stream, "*** WRONG ADDRESS FOR CHUNK #0!\n");
-            chunk_size = oh->chunk[i].size - H5O_SIZEOF_HDR(oh);
+            chunk_size = oh->chunk[i].size - (size_t)H5O_SIZEOF_HDR(oh);
         } /* end if */
         else
             chunk_size = oh->chunk[i].size;
@@ -424,7 +424,7 @@ H5O_debug_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, haddr_t addr, FILE *stream, i
         unsigned chunkno;                       /* Chunk for message */
 
         /* Accumulate message's size to total */
-	mesg_total += H5O_SIZEOF_MSGHDR_OH(oh) + oh->mesg[i].raw_size;
+	mesg_total += (size_t)H5O_SIZEOF_MSGHDR_OH(oh) + oh->mesg[i].raw_size;
 
 	/* For version 2 object header, add size of "OCHK" for continuation chunk */
 	if (oh->mesg[i].type->id == H5O_CONT_ID)
diff --git a/src/H5Odtype.c b/src/H5Odtype.c
index 1b602c7..b482115 100644
--- a/src/H5Odtype.c
+++ b/src/H5Odtype.c
@@ -84,7 +84,7 @@ static herr_t H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg,
 #define H5O_DTYPE_CHECK_VERSION(DT, VERS, MIN_VERS, IOF, CLASS, ERR)           \
     if(((VERS) < (MIN_VERS)) && !(*(IOF) & H5O_DECODEIO_NOCHANGE)) {           \
         (VERS) = (MIN_VERS);                                                   \
-        if(H5T_upgrade_version((DT), (VERS)) < 0)                              \
+        if(H5T__upgrade_version((DT), (VERS)) < 0)                              \
             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "can't upgrade " CLASS " encoding version") \
         *(IOF) |= H5O_DECODEIO_DIRTY;                                          \
     } /* end if */
@@ -325,7 +325,7 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
                     } /* end if */
 
                     /* Allocate space for the field's datatype */
-                    if(NULL == (temp_type = H5T_alloc()))
+                    if(NULL == (temp_type = H5T__alloc()))
                         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
 
                     /* Decode the field's datatype information */
@@ -349,7 +349,7 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
                         /* Check if this member is an array field */
                         if(ndims > 0) {
                             /* Create the array datatype for the field */
-                            if((array_dt = H5T_array_create(temp_type, ndims, dim)) == NULL) {
+                            if((array_dt = H5T__array_create(temp_type, ndims, dim)) == NULL) {
                                 for(j = 0; j <= i; j++)
                                     H5MM_xfree(dt->shared->u.compnd.memb[j].name);
                                 H5MM_xfree(dt->shared->u.compnd.memb);
@@ -409,12 +409,12 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
                 } /* end for */
 
                 /* Check if the compound type is packed */
-                H5T_update_packed(dt);
+                H5T__update_packed(dt);
 
                 /* Upgrade the compound if requested */
                 if(version < upgrade_to) {
                     version = upgrade_to;
-                    if(H5T_upgrade_version(dt, upgrade_to) < 0)
+                    if(H5T__upgrade_version(dt, upgrade_to) < 0)
                         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "can't upgrade compound encoding version")
                     /* We won't mark the message dirty since there were no
                      * errors in the file, simply type versions that we will no
@@ -453,7 +453,7 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
              * Enumeration datatypes...
              */
             dt->shared->u.enumer.nmembs = dt->shared->u.enumer.nalloc = flags & 0xffff;
-            if(NULL == (dt->shared->parent = H5T_alloc()))
+            if(NULL == (dt->shared->parent = H5T__alloc()))
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
             if(H5O_dtype_decode_helper(f, ioflags, pp, dt->shared->parent) < 0)
                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode parent datatype")
@@ -495,7 +495,7 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
             } /* end if */
 
             /* Decode base type of VL information */
-            if(NULL == (dt->shared->parent = H5T_alloc()))
+            if(NULL == (dt->shared->parent = H5T__alloc()))
                 HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed")
             if(H5O_dtype_decode_helper(f, ioflags, pp, dt->shared->parent) < 0)
                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type")
@@ -535,7 +535,7 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
                 *pp += dt->shared->u.array.ndims * 4;
 
             /* Decode base type of array */
-            if(NULL == (dt->shared->parent = H5T_alloc()))
+            if(NULL == (dt->shared->parent = H5T__alloc()))
                 HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed")
             if(H5O_dtype_decode_helper(f, ioflags, pp, dt->shared->parent) < 0)
                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode array parent type")
@@ -626,6 +626,7 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
 
                 case H5T_ORDER_ERROR:
                 case H5T_ORDER_VAX:
+                case H5T_ORDER_MIXED:
                 case H5T_ORDER_NONE:
                 default:
                     HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet")
@@ -696,6 +697,7 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
                     HDassert(dt->shared->version >= H5O_DTYPE_VERSION_3);
                     break;
 
+                case H5T_ORDER_MIXED:
                 case H5T_ORDER_ERROR:
                 case H5T_ORDER_NONE:
                 default:
@@ -764,7 +766,7 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
                     HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "normalization scheme is not supported in file format yet")
             } /* end switch */
 
-            flags |= (dt->shared->u.atomic.u.f.sign << 8) & 0xff00;
+            flags = (unsigned)(flags | ((dt->shared->u.atomic.u.f.sign << 8) & 0xff00));
             UINT16ENCODE(*pp, dt->shared->u.atomic.offset);
             UINT16ENCODE(*pp, dt->shared->u.atomic.prec);
             HDassert(dt->shared->u.atomic.u.f.epos <= 255);
@@ -787,8 +789,9 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
                     flags |= 0x01;
                     break;
 
-                case H5T_ORDER_ERROR:
                 case H5T_ORDER_VAX:
+                case H5T_ORDER_MIXED:
+                case H5T_ORDER_ERROR:
                 case H5T_ORDER_NONE:
                 default:
                     HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet")
@@ -806,8 +809,8 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
             HDassert(dt->shared->u.atomic.lsb_pad == H5T_PAD_ZERO);
             HDassert(dt->shared->u.atomic.msb_pad == H5T_PAD_ZERO);
 
-            flags |= (dt->shared->u.atomic.u.s.pad & 0x0f);
-            flags |= (dt->shared->u.atomic.u.s.cset & 0x0f) << 4;
+            flags = (unsigned)(flags | (dt->shared->u.atomic.u.s.pad & 0x0f));
+            flags = (unsigned)(flags | ((((unsigned)dt->shared->u.atomic.u.s.cset) & 0x0f) << 4));
             break;
 
         case H5T_BITFIELD:
@@ -822,8 +825,9 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
                     flags |= 0x01;
                     break;
 
-                case H5T_ORDER_ERROR:
                 case H5T_ORDER_VAX:
+                case H5T_ORDER_MIXED:
+                case H5T_ORDER_ERROR:
                 case H5T_ORDER_NONE:
                 default:
                     HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet")
@@ -874,7 +878,7 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
 
                 z = HDstrlen(dt->shared->u.opaque.tag);
                 aligned = (z + 7) & (H5T_OPAQUE_TAG_MAX - 8);
-                flags |= aligned;
+                flags = (unsigned)(flags | aligned);
                 HDmemcpy(*pp, dt->shared->u.opaque.tag, MIN(z,aligned));
                 for(n = MIN(z, aligned); n < aligned; n++)
                     (*pp)[n] = 0;
@@ -918,7 +922,7 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
                     /* Member offset */
                     /* (starting with version 3 of the datatype message, use the minimum # of bytes required) */
                     if(dt->shared->version >= H5O_DTYPE_VERSION_3)
-                        UINT32ENCODE_VAR(*pp, dt->shared->u.compnd.memb[i].offset, offset_nbytes)
+                        UINT32ENCODE_VAR(*pp, (uint32_t)dt->shared->u.compnd.memb[i].offset, offset_nbytes)
                     else
                         UINT32ENCODE(*pp, dt->shared->u.compnd.memb[i].offset)
 
@@ -1000,8 +1004,8 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
 
             flags |= (dt->shared->u.vlen.type & 0x0f);
             if(dt->shared->u.vlen.type == H5T_VLEN_STRING) {
-                flags |= (dt->shared->u.vlen.pad   & 0x0f) << 4;
-                flags |= ((unsigned)dt->shared->u.vlen.cset  & 0x0f) << 8;
+                flags = (unsigned)(flags | (((unsigned)dt->shared->u.vlen.pad   & 0x0f) << 4));
+                flags = (unsigned)(flags | (((unsigned)dt->shared->u.vlen.cset  & 0x0f) << 8));
             } /* end if */
 
             /* Encode base type of VL information */
@@ -1097,7 +1101,7 @@ H5O_dtype_decode(H5F_t *f, hid_t UNUSED dxpl_id, H5O_t UNUSED *open_oh, unsigned
     HDassert(p);
 
     /* Allocate datatype message */
-    if(NULL == (dt = H5T_alloc()))
+    if(NULL == (dt = H5T__alloc()))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
     /* Perform actual decode of message */
@@ -1358,7 +1362,7 @@ H5O_dtype_reset(void *_mesg)
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     if(dt)
-        H5T_free(dt);
+        H5T__free(dt);
 
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5O_dtype_reset() */
@@ -1599,7 +1603,7 @@ H5O_dtype_shared_post_copy_upd(const H5O_loc_t UNUSED *src_oloc,
 {
     H5T_t       *dt_dst = (H5T_t *)mesg_dst;    /* Destination datatype */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     if(dt_dst->sh_loc.type == H5O_SHARE_TYPE_COMMITTED) {
         HDassert(H5T_committed(dt_dst));
@@ -1977,6 +1981,10 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
                 s = "none";
                 break;
 
+            case H5T_ORDER_MIXED:
+                s = "mixed";
+                break;
+
             case H5T_ORDER_ERROR:
             default:
                 sprintf(buf, "H5T_ORDER_%d", dt->shared->u.atomic.order);
diff --git a/src/H5Oefl.c b/src/H5Oefl.c
index c8b6d01..b639036 100644
--- a/src/H5Oefl.c
+++ b/src/H5Oefl.c
@@ -230,7 +230,7 @@ H5O_efl_encode(H5F_t *f, hbool_t UNUSED disable_shared, uint8_t *p, const void *
 	 */
 	HDassert(mesg->slot[u].name_offset);
 	H5F_ENCODE_LENGTH(f, p, mesg->slot[u].name_offset);
-	H5F_ENCODE_LENGTH(f, p, mesg->slot[u].offset);
+	H5F_ENCODE_LENGTH(f, p, (hsize_t)mesg->slot[u].offset);
 	H5F_ENCODE_LENGTH(f, p, mesg->slot[u].size);
     } /* end for */
 
@@ -351,13 +351,13 @@ H5O_efl_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg)
     HDassert(f);
     HDassert(mesg);
 
-    ret_value = H5F_SIZEOF_ADDR(f) +			/*heap address	*/
+    ret_value = (size_t)H5F_SIZEOF_ADDR(f) +			/*heap address	*/
 		2 +					/*slots allocated*/
 		2 +					/*num slots used*/
 		4 +					/*reserved	*/
-		mesg->nused * (H5F_SIZEOF_SIZE(f) +	/*name offset	*/
-			       H5F_SIZEOF_SIZE(f) +	/*file offset	*/
-			       H5F_SIZEOF_SIZE(f));	/*file size	*/
+		mesg->nused * ((size_t)H5F_SIZEOF_SIZE(f) +	/*name offset	*/
+			       (size_t)H5F_SIZEOF_SIZE(f) +	/*file offset	*/
+			       (size_t)H5F_SIZEOF_SIZE(f));	/*file size	*/
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_efl_size() */
diff --git a/src/H5Ofill.c b/src/H5Ofill.c
index f5569dc..1e8ccb1 100644
--- a/src/H5Ofill.c
+++ b/src/H5Ofill.c
@@ -397,11 +397,11 @@ H5O_fill_new_encode(H5F_t UNUSED *f, uint8_t *p, const void *_fill)
 
         /* Encode space allocation time */
         HDassert(fill->alloc_time == (H5O_FILL_MASK_ALLOC_TIME & fill->alloc_time));
-        flags |= (H5O_FILL_MASK_ALLOC_TIME & fill->alloc_time) << H5O_FILL_SHIFT_ALLOC_TIME;
+        flags = (uint8_t)(flags | ((H5O_FILL_MASK_ALLOC_TIME & fill->alloc_time) << H5O_FILL_SHIFT_ALLOC_TIME));
 
         /* Encode fill value writing time */
         HDassert(fill->fill_time == (H5O_FILL_MASK_FILL_TIME & fill->fill_time));
-        flags |= (H5O_FILL_MASK_FILL_TIME & fill->fill_time) << H5O_FILL_SHIFT_FILL_TIME;
+        flags = (uint8_t)(flags | ((H5O_FILL_MASK_FILL_TIME & fill->fill_time) << H5O_FILL_SHIFT_FILL_TIME));
 
         /* Check if we need to encode a fill value size */
         if(fill->size < 0) {
@@ -833,10 +833,11 @@ H5O_fill_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_fill, FILE *s
             fprintf(stream,"Incremental\n");
             break;
 
+        case H5D_ALLOC_TIME_DEFAULT:
+        case H5D_ALLOC_TIME_ERROR:
         default:
             fprintf(stream,"Unknown!\n");
             break;
-
     } /* end switch */
     HDfprintf(stream, "%*s%-*s ", indent, "", fwidth, "Fill Time:");
     switch(fill->fill_time) {
@@ -852,6 +853,7 @@ H5O_fill_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_fill, FILE *s
             fprintf(stream,"If Set\n");
             break;
 
+        case H5D_FILL_TIME_ERROR:
         default:
             fprintf(stream,"Unknown!\n");
             break;
@@ -872,6 +874,7 @@ H5O_fill_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_fill, FILE *s
             fprintf(stream,"User Defined\n");
             break;
 
+        case H5D_FILL_VALUE_ERROR:
         default:
             fprintf(stream,"Unknown!\n");
             break;
diff --git a/src/H5Oginfo.c b/src/H5Oginfo.c
index 418b053..d579984 100644
--- a/src/H5Oginfo.c
+++ b/src/H5Oginfo.c
@@ -184,7 +184,7 @@ H5O_ginfo_encode(H5F_t UNUSED *f, hbool_t UNUSED disable_shared, uint8_t *p, con
 
     /* The flags for the group info */
     flags = ginfo->store_link_phase_change ?  H5O_GINFO_STORE_PHASE_CHANGE : 0;
-    flags |= ginfo->store_est_entry_info ?  H5O_GINFO_STORE_EST_ENTRY_INFO : 0;
+    flags = (unsigned char)(flags | (ginfo->store_est_entry_info ?  H5O_GINFO_STORE_EST_ENTRY_INFO : 0));
     *p++ = flags;
 
     /* Store the max. # of links to store compactly & the min. # of links to store densely */
@@ -273,12 +273,12 @@ H5O_ginfo_size(const H5F_t UNUSED *f, hbool_t UNUSED disable_shared, const void
     ret_value = 1 +                     /* Version */
                 1 +                     /* Flags */
                 (ginfo->store_link_phase_change ? (
-                    2 +                 /* "Max compact" links */
-                    2                   /* "Min dense" links */
+            (size_t)(2 +                 /* "Max compact" links */
+                    2)                   /* "Min dense" links */
                 ) : 0) +                /* "Min dense" links */
                 (ginfo->store_est_entry_info ? (
-                    2 +                 /* Estimated # of entries in group */
-                    2                   /* Estimated length of name of entry in group */
+            (size_t)(2 +                 /* Estimated # of entries in group */
+                    2)                   /* Estimated length of name of entry in group */
                 ) : 0);
 
     FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5Olayout.c b/src/H5Olayout.c
index e912d8c..6326fd9 100644
--- a/src/H5Olayout.c
+++ b/src/H5Olayout.c
@@ -445,7 +445,7 @@ H5O_layout_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg
 
     /* Compute serialized size */
     /* (including possibly compact data) */
-    ret_value = H5D_layout_meta_size(f, mesg, TRUE);
+    ret_value = H5D__layout_meta_size(f, mesg, TRUE);
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_layout_size() */
@@ -550,13 +550,13 @@ H5O_layout_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg)
 
         case H5D_CONTIGUOUS:    /* Contiguous block on disk */
             /* Free the file space for the raw data */
-            if(H5D_contig_delete(f, dxpl_id, &mesg->storage) < 0)
+            if(H5D__contig_delete(f, dxpl_id, &mesg->storage) < 0)
                 HGOTO_ERROR(H5E_OHDR, H5E_CANTFREE, FAIL, "unable to free raw data")
             break;
 
         case H5D_CHUNKED:       /* Chunked blocks on disk */
             /* Free the file space for the index & chunk raw data */
-            if(H5D_chunk_delete(f, dxpl_id, open_oh, &mesg->storage) < 0)
+            if(H5D__chunk_delete(f, dxpl_id, open_oh, &mesg->storage) < 0)
                 HGOTO_ERROR(H5E_OHDR, H5E_CANTFREE, FAIL, "unable to free raw data")
             break;
 
@@ -615,7 +615,7 @@ H5O_layout_copy_file(H5F_t *file_src, void *mesg_src, H5F_t *file_dst,
         case H5D_COMPACT:
 	    if(layout_src->storage.u.compact.buf) {
                 /* copy compact raw data */
-                if(H5D_compact_copy(file_src, &layout_src->storage.u.compact, file_dst, &layout_dst->storage.u.compact, udata->src_dtype, cpy_info, dxpl_id) < 0)
+                if(H5D__compact_copy(file_src, &layout_src->storage.u.compact, file_dst, &layout_dst->storage.u.compact, udata->src_dtype, cpy_info, dxpl_id) < 0)
                     HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, NULL, "unable to copy chunked storage")
                 copied = TRUE;
 	    } /* end if */
@@ -630,18 +630,18 @@ H5O_layout_copy_file(H5F_t *file_src, void *mesg_src, H5F_t *file_dst,
                 layout_dst->storage.u.contig.size = H5S_extent_nelem(udata->src_space_extent) *
                                         H5T_get_size(udata->src_dtype);
 
-            if(H5D_contig_is_space_alloc(&layout_src->storage)) {
+            if(H5D__contig_is_space_alloc(&layout_src->storage)) {
                 /* copy contiguous raw data */
-                if(H5D_contig_copy(file_src, &layout_src->storage.u.contig, file_dst, &layout_dst->storage.u.contig, udata->src_dtype, cpy_info, dxpl_id) < 0)
+                if(H5D__contig_copy(file_src, &layout_src->storage.u.contig, file_dst, &layout_dst->storage.u.contig, udata->src_dtype, cpy_info, dxpl_id) < 0)
                     HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, NULL, "unable to copy contiguous storage")
                 copied = TRUE;
             } /* end if */
             break;
 
         case H5D_CHUNKED:
-            if(H5D_chunk_is_space_alloc(&layout_src->storage)) {
+            if(H5D__chunk_is_space_alloc(&layout_src->storage)) {
                 /* Create chunked layout */
-                if(H5D_chunk_copy(file_src, &layout_src->storage.u.chunk, &layout_src->u.chunk, file_dst, &layout_dst->storage.u.chunk, udata->src_space_extent, udata->src_dtype, udata->common.src_pline, cpy_info, dxpl_id) < 0)
+                if(H5D__chunk_copy(file_src, &layout_src->storage.u.chunk, &layout_src->u.chunk, file_dst, &layout_dst->storage.u.chunk, udata->src_space_extent, udata->src_dtype, udata->common.src_pline, cpy_info, dxpl_id) < 0)
                     HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, NULL, "unable to copy chunked storage")
                 copied = TRUE;
             } /* end if */
diff --git a/src/H5Olinfo.c b/src/H5Olinfo.c
index 8eabc1b..77df8f6 100644
--- a/src/H5Olinfo.c
+++ b/src/H5Olinfo.c
@@ -206,7 +206,7 @@ H5O_linfo_encode(H5F_t *f, hbool_t UNUSED disable_shared, uint8_t *p, const void
 
     /* The flags for the link indices */
     index_flags = linfo->track_corder ? H5O_LINFO_TRACK_CORDER : 0;
-    index_flags |= linfo->index_corder ? H5O_LINFO_INDEX_CORDER : 0;
+    index_flags = (uint8_t)(index_flags | (linfo->index_corder ? H5O_LINFO_INDEX_CORDER : 0));
     *p++ = index_flags;
 
     /* Max. link creation order value for the group, if tracked */
@@ -296,10 +296,10 @@ H5O_linfo_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg)
     /* Set return value */
     ret_value = 1                       /* Version */
                 + 1                     /* Index flags */
-                + (linfo->track_corder ? 8 : 0) /* Curr. max. creation order value */
-                + H5F_SIZEOF_ADDR(f)    /* Address of fractal heap to store "dense" links */
-                + H5F_SIZEOF_ADDR(f)    /* Address of v2 B-tree for indexing names of links */
-                + (linfo->index_corder ? H5F_SIZEOF_ADDR(f) : 0);   /* Address of v2 B-tree for indexing creation order values of links */
+                + (linfo->track_corder ? (size_t)8 : 0) /* Curr. max. creation order value */
+                + (size_t)H5F_SIZEOF_ADDR(f)    /* Address of fractal heap to store "dense" links */
+                + (size_t)H5F_SIZEOF_ADDR(f)    /* Address of v2 B-tree for indexing names of links */
+                + (linfo->index_corder ? (size_t)H5F_SIZEOF_ADDR(f) : 0);   /* Address of v2 B-tree for indexing creation order values of links */
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_linfo_size() */
diff --git a/src/H5Olink.c b/src/H5Olink.c
index 88c9e28..4dda5fe 100644
--- a/src/H5Olink.c
+++ b/src/H5Olink.c
@@ -226,6 +226,9 @@ H5O_link_decode(H5F_t *f, hid_t UNUSED dxpl_id, H5O_t UNUSED *open_oh,
             break;
 
         /* User-defined links */
+        case H5L_TYPE_EXTERNAL:
+        case H5L_TYPE_ERROR:
+        case H5L_TYPE_MAX:
         default:
             if(lnk->type < H5L_TYPE_UD_MIN || lnk->type > H5L_TYPE_MAX)
                 HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, NULL, "unknown link type")
@@ -306,9 +309,9 @@ H5O_link_encode(H5F_t *f, hbool_t UNUSED disable_shared, uint8_t *p, const void
         link_flags = H5O_LINK_NAME_2;
     else
         link_flags = H5O_LINK_NAME_1;
-    link_flags |= lnk->corder_valid ? H5O_LINK_STORE_CORDER : 0;
-    link_flags |= (lnk->type != H5L_TYPE_HARD) ? H5O_LINK_STORE_LINK_TYPE : 0;
-    link_flags |= (lnk->cset != H5T_CSET_ASCII) ? H5O_LINK_STORE_NAME_CSET : 0;
+    link_flags = (unsigned char)(link_flags | (lnk->corder_valid ? H5O_LINK_STORE_CORDER : 0));
+    link_flags = (unsigned char)(link_flags | ((lnk->type != H5L_TYPE_HARD) ? H5O_LINK_STORE_LINK_TYPE : 0));
+    link_flags = (unsigned char)(link_flags | ((lnk->cset != H5T_CSET_ASCII) ? H5O_LINK_STORE_NAME_CSET : 0));
     *p++ = link_flags;
 
     /* Store the type of a non-default link */
@@ -366,6 +369,9 @@ H5O_link_encode(H5F_t *f, hbool_t UNUSED disable_shared, uint8_t *p, const void
             break;
 
         /* User-defined links */
+        case H5L_TYPE_EXTERNAL:
+        case H5L_TYPE_ERROR:
+        case H5L_TYPE_MAX:
         default:
             HDassert(lnk->type >= H5L_TYPE_UD_MIN && lnk->type <= H5L_TYPE_MAX);
 
@@ -511,6 +517,9 @@ H5O_link_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg)
                         HDstrlen(lnk->u.soft.name);     /* Link value */
             break;
 
+        case H5L_TYPE_ERROR:
+        case H5L_TYPE_EXTERNAL:
+        case H5L_TYPE_MAX:
         default: /* Default is user-defined link type */
             HDassert(lnk->type >= H5L_TYPE_UD_MIN);
             ret_value += 2 +                            /* User-defined data size */
@@ -837,6 +846,9 @@ H5O_link_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_mesg, FILE *
                       "Link Value:", lnk->u.soft.name);
             break;
 
+        case H5L_TYPE_ERROR:
+        case H5L_TYPE_EXTERNAL:
+        case H5L_TYPE_MAX:
         default:
             if(lnk->type >= H5L_TYPE_UD_MIN) {
                 if(lnk->type == H5L_TYPE_EXTERNAL) {
diff --git a/src/H5Omessage.c b/src/H5Omessage.c
index 48461fc..c349a9b 100644
--- a/src/H5Omessage.c
+++ b/src/H5Omessage.c
@@ -76,7 +76,7 @@ typedef struct {
 static herr_t H5O_msg_reset_real(const H5O_msg_class_t *type, void *native);
 static herr_t H5O_msg_remove_cb(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
     unsigned sequence, unsigned *oh_modified, void *_udata/*in,out*/);
-static herr_t H5O_copy_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned idx,
+static herr_t H5O_copy_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t idx,
     const H5O_msg_class_t *type, const void *mesg, unsigned mesg_flags,
     unsigned update_flags);
 
@@ -207,7 +207,7 @@ herr_t
 H5O_msg_append_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
     unsigned mesg_flags, unsigned update_flags, void *mesg)
 {
-    int idx;                            /* Index of message to modify */
+    size_t idx;                         /* Index of message to modify */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -220,11 +220,11 @@ H5O_msg_append_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *t
     HDassert(mesg);
 
     /* Allocate space for a new message */
-    if((idx = H5O_msg_alloc(f, dxpl_id, oh, type, &mesg_flags, mesg)) < 0)
+    if(H5O_msg_alloc(f, dxpl_id, oh, type, &mesg_flags, mesg, &idx) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_NOSPACE, FAIL, "unable to create new message")
 
     /* Copy the information for the message */
-    if(H5O_copy_mesg(f, dxpl_id, oh, (unsigned)idx, type, mesg, mesg_flags, update_flags) < 0)
+    if(H5O_copy_mesg(f, dxpl_id, oh, idx, type, mesg, mesg_flags, update_flags) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, FAIL, "unable to write message")
 #ifdef H5O_DEBUG
 H5O_assert(oh);
@@ -364,7 +364,7 @@ H5O_msg_write_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *ty
     unsigned mesg_flags, unsigned update_flags, void *mesg)
 {
     H5O_mesg_t         *idx_msg;        /* Pointer to message to modify */
-    unsigned		idx;            /* Index of message to modify */
+    size_t		idx;            /* Index of message to modify */
     herr_t	        ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -788,6 +788,7 @@ H5O_msg_count(const H5O_loc_t *loc, unsigned type_id, hid_t dxpl_id)
 {
     H5O_t *oh = NULL;           /* Object header to operate on */
     const H5O_msg_class_t *type;        /* Actual H5O class type for the ID */
+    unsigned msg_count;         /* Message count */
     int	ret_value;              /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -805,7 +806,8 @@ H5O_msg_count(const H5O_loc_t *loc, unsigned type_id, hid_t dxpl_id)
 	HGOTO_ERROR(H5E_OHDR, H5E_CANTPROTECT, FAIL, "unable to protect object header")
 
     /* Count the messages of the correct type */
-    ret_value = H5O_msg_count_real(oh, type);
+    msg_count = H5O_msg_count_real(oh, type);
+    H5_ASSIGN_OVERFLOW(ret_value, msg_count, unsigned, int);
 
 done:
     if(oh && H5O_unprotect(loc, dxpl_id, oh, H5AC__NO_FLAGS_SET) < 0)
@@ -1441,10 +1443,10 @@ H5O_msg_size_f(const H5F_t *f, hid_t ocpl_id, unsigned type_id,
     ret_value += extra_raw;
 
     /* Adjust size for alignment, if necessary */
-    ret_value = H5O_ALIGN_F(f, ret_value);
+    ret_value = (size_t)H5O_ALIGN_F(f, ret_value);
 
     /* Add space for message header */
-    ret_value += H5O_SIZEOF_MSGHDR_F(f,
+    ret_value += (size_t)H5O_SIZEOF_MSGHDR_F(f,
             (H5F_STORE_MSG_CRT_IDX(f) || oh_flags & H5O_HDR_ATTR_CRT_ORDER_TRACKED));
 
 done:
@@ -1494,10 +1496,10 @@ H5O_msg_size_oh(const H5F_t *f, const H5O_t *oh, unsigned type_id,
     ret_value += extra_raw;
 
     /* Adjust size for alignment, if necessary */
-    ret_value = H5O_ALIGN_OH(oh, ret_value);
+    ret_value = (size_t)H5O_ALIGN_OH(oh, ret_value);
 
     /* Add space for message header */
-    ret_value += H5O_SIZEOF_MSGHDR_OH(oh);
+    ret_value += (size_t)H5O_SIZEOF_MSGHDR_OH(oh);
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1904,12 +1906,13 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-int
+herr_t
 H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
-    unsigned *mesg_flags, void *native)
+    unsigned *mesg_flags, void *native, size_t *mesg_idx)
 {
+    size_t new_idx;             /* New index for message */
     htri_t shared_mesg;         /* Should this message be stored in the Shared Message table? */
-    int ret_value = FAIL;       /* Return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
@@ -1920,6 +1923,7 @@ H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
     HDassert(!(*mesg_flags & H5O_MSG_FLAG_SHARED));
     HDassert(type);
     HDassert(native);
+    HDassert(mesg_idx);
 
     /* Check if message is already shared */
     if((shared_mesg = H5O_msg_is_shared(type->id, native)) < 0)
@@ -1937,16 +1941,19 @@ H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_msg_class_t *type,
     } /* end else */
 
     /* Allocate space in the object header for the message */
-    if((ret_value = H5O_alloc(f, dxpl_id, oh, type, native)) < 0)
+    if(H5O_alloc(f, dxpl_id, oh, type, native, &new_idx) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, "unable to allocate space for message")
 
     /* Get the message's "creation index", if it has one */
     if(type->get_crt_index) {
         /* Retrieve the creation index from the native message */
-        if((type->get_crt_index)(native, &oh->mesg[ret_value].crt_idx) < 0)
+        if((type->get_crt_index)(native, &oh->mesg[new_idx].crt_idx) < 0)
             HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, FAIL, "unable to retrieve creation index")
     } /* end if */
 
+    /* Set new message index */
+    *mesg_idx = new_idx;
+
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_msg_alloc() */
@@ -1966,7 +1973,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5O_copy_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned idx,
+H5O_copy_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *oh, size_t idx,
     const H5O_msg_class_t *type, const void *mesg, unsigned mesg_flags,
     unsigned update_flags)
 {
@@ -2303,7 +2310,7 @@ H5O_msg_get_chunkno(const H5O_loc_t *loc, unsigned type_id, hid_t dxpl_id)
         HGOTO_ERROR(H5E_OHDR, H5E_NOTFOUND, FAIL, "message type not found")
 
     /* Set return value */
-    ret_value = idx_msg->chunkno;
+    H5_ASSIGN_OVERFLOW(ret_value, idx_msg->chunkno, unsigned, int);
 
 done:
     if(oh && H5O_unprotect(loc, dxpl_id, oh, H5AC__NO_FLAGS_SET) < 0)
diff --git a/src/H5Opkg.h b/src/H5Opkg.h
index e757605..ff52537 100644
--- a/src/H5Opkg.h
+++ b/src/H5Opkg.h
@@ -532,8 +532,9 @@ H5_DLL herr_t H5O_dec_rc(H5O_t *oh);
 H5_DLL herr_t H5O_free(H5O_t *oh);
 
 /* Object header message routines */
-H5_DLL int H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
-    const H5O_msg_class_t *type, unsigned *mesg_flags, void *mesg);
+H5_DLL herr_t H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
+    const H5O_msg_class_t *type, unsigned *mesg_flags, void *mesg,
+    size_t *mesg_idx);
 H5_DLL herr_t H5O_msg_append_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
     const H5O_msg_class_t *type, unsigned mesg_flags, unsigned update_flags,
     void *mesg);
@@ -567,8 +568,8 @@ H5_DLL herr_t H5O_attr_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
 
 /* Object header allocation routines */
 H5_DLL herr_t H5O_alloc_msgs(H5O_t *oh, size_t min_alloc);
-H5_DLL int H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
-    const H5O_msg_class_t *type, const void *mesg);
+H5_DLL herr_t  H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
+    const H5O_msg_class_t *type, const void *mesg, size_t *mesg_idx);
 H5_DLL herr_t H5O_condense_header(H5F_t *f, H5O_t *oh, hid_t dxpl_id);
 H5_DLL herr_t H5O_release_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
     H5O_mesg_t *mesg, hbool_t adj_link);
diff --git a/src/H5Opline.c b/src/H5Opline.c
index f626106..1a2baa0 100644
--- a/src/H5Opline.c
+++ b/src/H5Opline.c
@@ -250,7 +250,7 @@ H5O_pline_encode(H5F_t UNUSED *f, uint8_t *p/*out*/, const void *mesg)
     HDassert(mesg);
 
     /* Message header */
-    *p++ = pline->version;
+    *p++ = (uint8_t)pline->version;
     *p++ = (uint8_t)(pline->nused);
     if(pline->version == H5O_PLINE_VERSION_1) {
         *p++ = 0;	/*reserved 1*/
@@ -467,7 +467,7 @@ H5O_pline_size(const H5F_t UNUSED *f, const void *mesg)
 		((pline->version == H5O_PLINE_VERSION_1 || pline->filter[i].id >= H5Z_FILTER_RESERVED) ? 2 : 0) +				/*name length			*/
 		2 +				/*flags				*/
 		2 +				/*number of client data values	*/
-		(pline->version == H5O_PLINE_VERSION_1 ? H5O_ALIGN_OLD(name_len) : name_len);	/*length of the filter name	*/
+		(pline->version == H5O_PLINE_VERSION_1 ? (size_t)H5O_ALIGN_OLD(name_len) : name_len);	/*length of the filter name	*/
 
 	ret_value += pline->filter[i].cd_nelmts * 4;
         if(pline->version == H5O_PLINE_VERSION_1)
diff --git a/src/H5Oshmesg.c b/src/H5Oshmesg.c
index 69c7d49..2575856 100644
--- a/src/H5Oshmesg.c
+++ b/src/H5Oshmesg.c
@@ -129,9 +129,9 @@ H5O_shmesg_encode(H5F_t *f, hbool_t UNUSED disable_shared, uint8_t *p, const voi
     HDassert(mesg);
 
     /* Store version, table address, and number of indexes */
-    *p++ = mesg->version;
+    *p++ = (uint8_t)mesg->version;
     H5F_addr_encode(f, &p, mesg->addr);
-    *p++ = mesg->nindexes;
+    *p++ = (uint8_t)mesg->nindexes;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5O_shmesg_encode() */
@@ -201,9 +201,9 @@ H5O_shmesg_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void UNUSED
     /* Sanity check */
     HDassert(f);
 
-    ret_value = 1 +                     /* Version number        */
+    ret_value = (size_t)(1 +                     /* Version number        */
 		H5F_SIZEOF_ADDR(f) +    /* Table address */
-		1;                      /* Number of indexes */
+		1);                      /* Number of indexes */
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5O_shmesg_size() */
diff --git a/src/H5Ostab.c b/src/H5Ostab.c
index bb0c22d..6cebc97 100644
--- a/src/H5Ostab.c
+++ b/src/H5Ostab.c
@@ -227,7 +227,7 @@ H5O_stab_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void UNUSED *
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Set return value */
-    ret_value=2 * H5F_SIZEOF_ADDR(f);
+    ret_value = (size_t)(2 * H5F_SIZEOF_ADDR(f));
 
     FUNC_LEAVE_NOAPI(ret_value)
 }
diff --git a/src/H5Otest.c b/src/H5Otest.c
index 0971c85..0b33e49 100644
--- a/src/H5Otest.c
+++ b/src/H5Otest.c
@@ -486,8 +486,8 @@ H5O_expunge_chunks_test(const H5O_loc_t *loc, hid_t dxpl_id)
 {
     H5O_t *oh = NULL;           /* Object header */
     haddr_t chk_addr[16];       /* Array of chunk addresses */
-    unsigned nchunks;           /* Number of chunks in object header */
-    unsigned u;                 /* Local index variable */
+    size_t nchunks;             /* Number of chunks in object header */
+    size_t u;                   /* Local index variable */
     herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -498,7 +498,7 @@ H5O_expunge_chunks_test(const H5O_loc_t *loc, hid_t dxpl_id)
 
     /* Safety check */
     nchunks = oh->nchunks;
-    HDassert(nchunks < NELMTS(chk_addr));
+    HDassert(0 < nchunks && nchunks < NELMTS(chk_addr));
 
     /* Iterate over all the chunks, saving the chunk addresses */
     for(u = 0; u < oh->nchunks; u++)
diff --git a/src/H5P.c b/src/H5P.c
index 92b3d18..c7ed30b 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -45,6 +45,13 @@
 /* Local Typedefs */
 /******************/
 
+/* Typedef for property iterator callback */
+typedef struct {
+    H5P_iterate_t iter_func;    /* Iterator callback */
+    hid_t id;                   /* Property list or class ID */
+    void *iter_data;            /* Iterator callback pointer */
+} H5P_iter_ud_t;
+
 
 /********************/
 /* Local Prototypes */
@@ -111,7 +118,7 @@ H5P_init_pub_interface(void)
 hid_t
 H5Pcopy(hid_t id)
 {
-    void *obj;                 /* Property object to copy */
+    void *obj;                  /* Property object to copy */
     hid_t ret_value=FALSE;      /* return value */
 
     FUNC_ENTER_API(FAIL)
@@ -217,7 +224,7 @@ H5Pcreate_class(hid_t parent, const char *name,
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't retrieve parent class")
 
     /* Create the new property list class */
-    if(NULL == (pclass = H5P_create_class(par_class, name, FALSE, cls_create, create_data, cls_copy, copy_data, cls_close, close_data)))
+    if(NULL == (pclass = H5P_create_class(par_class, name, H5P_TYPE_USER, cls_create, create_data, cls_copy, copy_data, cls_close, close_data)))
         HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL, "unable to create property list class")
 
     /* Get an atom for the class */
@@ -983,8 +990,13 @@ H5Pequal(hid_t id1, hid_t id2)
 
     /* Compare property lists */
     if(H5I_GENPROP_LST == H5I_get_type(id1)) {
-        if(H5P_cmp_plist((const H5P_genplist_t *)obj1, (const H5P_genplist_t *)obj2) == 0)
-            ret_value = TRUE;
+        int cmp_ret = 0;
+
+        if(H5P_cmp_plist((const H5P_genplist_t *)obj1, (const H5P_genplist_t *)obj2, &cmp_ret) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTCOMPARE, FAIL, "can't compare property lists")
+
+        /* Set return value */
+        ret_value = cmp_ret == 0 ? TRUE : FALSE;
     } /* end if */
     /* Must be property classes */
     else {
@@ -1045,6 +1057,46 @@ done:
 
 /*--------------------------------------------------------------------------
  NAME
+    H5P__iterate_cb
+ PURPOSE
+    Internal callback routine when iterating over properties in property list
+    or class
+ USAGE
+    int H5P__iterate_cb(prop, udata)
+        H5P_genprop_t *prop;        IN: Pointer to the property
+        void *udata;                IN/OUT: Pointer to iteration data from user
+ RETURNS
+    Success: Returns the return value of the last call to ITER_FUNC
+    Failure: negative value
+ DESCRIPTION
+    This routine calls the actual callback routine for the property in the
+property list or class.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+static int
+H5P__iterate_cb(H5P_genprop_t *prop, void *_udata)
+{
+    H5P_iter_ud_t *udata = (H5P_iter_ud_t *)_udata;     /* Pointer to user data */
+    int ret_value = 0;                                  /* Return value */
+
+    FUNC_ENTER_STATIC_NOERR
+
+    /* Sanity check */
+    HDassert(prop);
+    HDassert(udata);
+
+    /* Call the user's callback routine */
+    ret_value = (*udata->iter_func)(udata->id, prop->name, udata->iter_data);
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P__iterate_cb() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
     H5Piterate
  PURPOSE
     Routine to iterate over the properties in a property list or class
@@ -1099,7 +1151,9 @@ iteration, the function's behavior is undefined.
 int
 H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func, void *iter_data)
 {
+    H5P_iter_ud_t udata;    /* User data for internal iterator callback */
     int fake_idx = 0;       /* Index when user doesn't provide one */
+    void *obj;              /* Property object to copy */
     int ret_value;          /* return value */
 
     FUNC_ENTER_API(FAIL)
@@ -1108,18 +1162,25 @@ H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func, void *iter_data)
     /* Check arguments. */
     if(H5I_GENPROP_LST != H5I_get_type(id) && H5I_GENPROP_CLS != H5I_get_type(id))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property object");
+    if(NULL == (obj = H5I_object(id)))
+        HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, FAIL, "property object doesn't exist");
     if(iter_func == NULL)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid iteration callback");
 
+    /* Set up user data */
+    udata.iter_func = iter_func;
+    udata.id = id;
+    udata.iter_data = iter_data;
+
     if(H5I_GENPROP_LST == H5I_get_type(id)) {
         /* Iterate over a property list */
-        if((ret_value = H5P_iterate_plist(id, (idx ? idx : &fake_idx), iter_func, iter_data)) < 0)
+        if((ret_value = H5P_iterate_plist((H5P_genplist_t *)obj, TRUE, (idx ? idx : &fake_idx), H5P__iterate_cb, &udata)) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "unable to iterate over list");
     } /* end if */
     else
         if(H5I_GENPROP_CLS == H5I_get_type(id)) {
             /* Iterate over a property class */
-            if((ret_value = H5P_iterate_pclass(id, (idx ? idx : &fake_idx), iter_func, iter_data)) < 0)
+            if((ret_value = H5P_iterate_pclass((H5P_genclass_t *)obj, (idx ? idx : &fake_idx), H5P__iterate_cb, &udata)) < 0)
                 HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "unable to iterate over class");
         } /* end if */
         else
diff --git a/src/H5Pacpl.c b/src/H5Pacpl.c
index 41a4f96..b30bf1e 100644
--- a/src/H5Pacpl.c
+++ b/src/H5Pacpl.c
@@ -64,6 +64,7 @@
 /* Attribute creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_ACRT[1] = {{
     "attribute create",		/* Class name for debugging     */
+    H5P_TYPE_ATTRIBUTE_CREATE,  /* Class type                   */
     &H5P_CLS_STRING_CREATE_g,	/* Parent class ID              */
     &H5P_CLS_ATTRIBUTE_CREATE_g, /* Pointer to class ID          */
     &H5P_LST_ATTRIBUTE_CREATE_g, /* Pointer to default property list ID */
diff --git a/src/H5Pdapl.c b/src/H5Pdapl.c
index 51e62fe..d21cdbf 100644
--- a/src/H5Pdapl.c
+++ b/src/H5Pdapl.c
@@ -33,12 +33,12 @@
 /***********/
 /* Headers */
 /***********/
-#include "H5private.h"      /* Generic Functions */
-#include "H5Dprivate.h"     /* Datasets	*/
-#include "H5Eprivate.h"     /* Error handling */
+#include "H5private.h"		/* Generic Functions */
+#include "H5Dprivate.h"		/* Datasets */
+#include "H5Eprivate.h"		/* Error handling */
 #include "H5Fprivate.h"		/* Files */
-#include "H5Iprivate.h"     /* IDs */
-#include "H5Ppkg.h"         /* Property lists */
+#include "H5Iprivate.h"		/* IDs */
+#include "H5Ppkg.h"		/* Property lists */
 
 
 /****************/
@@ -72,7 +72,7 @@
 /********************/
 
 /* Property class callbacks */
-static herr_t H5P_dacc_reg_prop(H5P_genclass_t *pclass);
+static herr_t H5P__dacc_reg_prop(H5P_genclass_t *pclass);
 
 
 /*********************/
@@ -82,15 +82,16 @@ static herr_t H5P_dacc_reg_prop(H5P_genclass_t *pclass);
 /* Dataset access property list class library initialization object */
 const H5P_libclass_t H5P_CLS_DACC[1] = {{
     "dataset access",		/* Class name for debugging     */
+    H5P_TYPE_DATASET_ACCESS,    /* Class type                   */
     &H5P_CLS_LINK_ACCESS_g,	/* Parent class ID              */
     &H5P_CLS_DATASET_ACCESS_g,	/* Pointer to class ID          */
     &H5P_LST_DATASET_ACCESS_g,	/* Pointer to default property list ID */
-    H5P_dacc_reg_prop,		/* Default property registration routine */
-    NULL,		         /* Class creation callback      */
+    H5P__dacc_reg_prop,		/* Default property registration routine */
+    NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
-    NULL,		         /* Class copy callback          */
+    NULL,		        /* Class copy callback          */
     NULL,		        /* Class copy callback info     */
-    NULL,		         /* Class close callback         */
+    NULL,		        /* Class close callback         */
     NULL 		        /* Class close callback info    */
 }};
 
@@ -107,7 +108,7 @@ const H5P_libclass_t H5P_CLS_DACC[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_dacc_reg_prop
+ * Function:    H5P__dacc_reg_prop
  *
  * Purpose:     Register the dataset access property list class's
  *              properties
@@ -119,14 +120,14 @@ const H5P_libclass_t H5P_CLS_DACC[1] = {{
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_dacc_reg_prop(H5P_genclass_t *pclass)
+H5P__dacc_reg_prop(H5P_genclass_t *pclass)
 {
     size_t rdcc_nslots = H5D_ACS_DATA_CACHE_NUM_SLOTS_DEF;      /* Default raw data chunk cache # of slots */
     size_t rdcc_nbytes = H5D_ACS_DATA_CACHE_BYTE_SIZE_DEF;      /* Default raw data chunk cache # of bytes */
     double rdcc_w0 = H5D_ACS_PREEMPT_READ_CHUNKS_DEF;           /* Default raw data chunk cache dirty ratio */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Register the size of raw data chunk cache (elements) */
     if(H5P_register_real(pclass, H5D_ACS_DATA_CACHE_NUM_SLOTS_NAME, H5D_ACS_DATA_CACHE_NUM_SLOTS_SIZE, &rdcc_nslots, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
@@ -142,7 +143,7 @@ H5P_dacc_reg_prop(H5P_genclass_t *pclass)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dacc_reg_prop() */
+} /* end H5P__dacc_reg_prop() */
 
 
 /*-------------------------------------------------------------------------
@@ -186,24 +187,24 @@ H5Pset_chunk_cache(hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double
 
     /* Check arguments.  Note that we allow negative values - they are
      * considered to "unset" the property. */
-    if (rdcc_w0 > 1.0)
+    if(rdcc_w0 > 1.0)
         HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "raw data cache w0 value must be between 0.0 and 1.0 inclusive, or H5D_CHUNK_CACHE_W0_DEFAULT");
 
     /* Get the plist structure */
-    if (NULL == (plist = H5P_object_verify(dapl_id,H5P_DATASET_ACCESS)))
+    if(NULL == (plist = H5P_object_verify(dapl_id,H5P_DATASET_ACCESS)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
 
     /* Set sizes */
-    if (H5P_set(plist, H5D_ACS_DATA_CACHE_NUM_SLOTS_NAME, &rdcc_nslots) < 0)
+    if(H5P_set(plist, H5D_ACS_DATA_CACHE_NUM_SLOTS_NAME, &rdcc_nslots) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache number of chunks");
-    if (H5P_set(plist, H5D_ACS_DATA_CACHE_BYTE_SIZE_NAME, &rdcc_nbytes) < 0)
+    if(H5P_set(plist, H5D_ACS_DATA_CACHE_BYTE_SIZE_NAME, &rdcc_nbytes) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache byte size");
-    if (H5P_set(plist, H5D_ACS_PREEMPT_READ_CHUNKS_NAME, &rdcc_w0) < 0)
+    if(H5P_set(plist, H5D_ACS_PREEMPT_READ_CHUNKS_NAME, &rdcc_w0) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set preempt read chunks");
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_chunk_cache() */
 
 
 /*-------------------------------------------------------------------------
@@ -271,3 +272,4 @@ H5Pget_chunk_cache(hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, doub
 done:
     FUNC_LEAVE_API(ret_value)
 }
+
diff --git a/src/H5Pdcpl.c b/src/H5Pdcpl.c
index 32793e6..6e7e820 100644
--- a/src/H5Pdcpl.c
+++ b/src/H5Pdcpl.c
@@ -65,7 +65,7 @@
 /* Note that the compact & chunked layout initialization values are using the
  *      contiguous layout initialization in the union, because the contiguous
  *      layout is first in the union.  These values are overridden in the
- *      H5P_init_def_layout() routine. -QAK
+ *      H5P__init_def_layout() routine. -QAK
  */
 #define H5D_DEF_LAYOUT_COMPACT  {H5D_COMPACT, H5O_LAYOUT_VERSION_3, NULL, {H5D_DEF_LAYOUT_CHUNK_INIT}, {H5D_CONTIGUOUS, H5D_DEF_STORAGE_CONTIG_INIT}}
 #define H5D_DEF_LAYOUT_CONTIG   {H5D_CONTIGUOUS, H5O_LAYOUT_VERSION_3, NULL, {H5D_DEF_LAYOUT_CHUNK_INIT}, {H5D_CONTIGUOUS, H5D_DEF_STORAGE_CONTIG_INIT}}
@@ -76,7 +76,7 @@
 /* Definitions for storage layout property */
 #define H5D_CRT_LAYOUT_SIZE        sizeof(H5O_layout_t)
 #define H5D_CRT_LAYOUT_DEF         H5D_DEF_LAYOUT_CONTIG
-#define H5D_CRT_LAYOUT_CMP     H5P_dcrt_layout_cmp
+#define H5D_CRT_LAYOUT_CMP         H5P__dcrt_layout_cmp
 /* Definitions for fill value.  size=0 means fill value will be 0 as
  * library default; size=-1 means fill value is undefined. */
 #define H5D_CRT_FILL_VALUE_SIZE    sizeof(H5O_fill_t)
@@ -88,7 +88,7 @@
 /* Definitions for external file list */
 #define H5D_CRT_EXT_FILE_LIST_SIZE sizeof(H5O_efl_t)
 #define H5D_CRT_EXT_FILE_LIST_DEF  {HADDR_UNDEF, 0, 0, NULL}
-#define H5D_CRT_EXT_FILE_LIST_CMP  H5P_dcrt_ext_file_list_cmp
+#define H5D_CRT_EXT_FILE_LIST_CMP  H5P__dcrt_ext_file_list_cmp
 
 
 /******************/
@@ -106,19 +106,19 @@
 /********************/
 
 /* General routines */
-static herr_t H5P_set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout);
+static herr_t H5P__set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout);
 #ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-static herr_t H5P_init_def_layout(void);
+static herr_t H5P__init_def_layout(void);
 #endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
 /* Property class callbacks */
-static herr_t H5P_dcrt_reg_prop(H5P_genclass_t *pclass);
-static herr_t H5P_dcrt_copy(hid_t new_plist_t, hid_t old_plist_t, void *copy_data);
-static herr_t H5P_dcrt_close(hid_t dxpl_id, void *close_data);
+static herr_t H5P__dcrt_reg_prop(H5P_genclass_t *pclass);
+static herr_t H5P__dcrt_copy(hid_t new_plist_t, hid_t old_plist_t, void *copy_data);
+static herr_t H5P__dcrt_close(hid_t dxpl_id, void *close_data);
 
 /* Property callbacks */
-static int H5P_dcrt_layout_cmp(const void *value1, const void *value2, size_t size);
-static int H5P_dcrt_ext_file_list_cmp(const void *value1, const void *value2, size_t size);
+static int H5P__dcrt_layout_cmp(const void *value1, const void *value2, size_t size);
+static int H5P__dcrt_ext_file_list_cmp(const void *value1, const void *value2, size_t size);
 
 
 /*********************/
@@ -128,15 +128,16 @@ static int H5P_dcrt_ext_file_list_cmp(const void *value1, const void *value2, si
 /* Dataset creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_DCRT[1] = {{
     "dataset create",		/* Class name for debugging     */
+    H5P_TYPE_DATASET_CREATE,    /* Class type                   */
     &H5P_CLS_OBJECT_CREATE_g,	/* Parent class ID              */
     &H5P_CLS_DATASET_CREATE_g,	/* Pointer to class ID          */
     &H5P_LST_DATASET_CREATE_g,	/* Pointer to default property list ID */
-    H5P_dcrt_reg_prop,		/* Default property registration routine */
+    H5P__dcrt_reg_prop,		/* Default property registration routine */
     NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
-    H5P_dcrt_copy,		/* Class copy callback          */
+    H5P__dcrt_copy,		/* Class copy callback          */
     NULL,		        /* Class copy callback info     */
-    H5P_dcrt_close,		/* Class close callback         */
+    H5P__dcrt_close,		/* Class close callback         */
     NULL 		        /* Class close callback info    */
 }};
 
@@ -163,7 +164,7 @@ static hbool_t H5P_dcrt_def_layout_init_g = FALSE;
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_dcrt_reg_prop
+ * Function:    H5P__dcrt_reg_prop
  *
  * Purpose:     Register the dataset creation property list class's properties
  *
@@ -174,7 +175,7 @@ static hbool_t H5P_dcrt_def_layout_init_g = FALSE;
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_dcrt_reg_prop(H5P_genclass_t *pclass)
+H5P__dcrt_reg_prop(H5P_genclass_t *pclass)
 {
     H5O_layout_t layout = H5D_CRT_LAYOUT_DEF;          /* Default storage layout */
     H5O_fill_t fill = H5D_CRT_FILL_VALUE_DEF;           /* Default fill value */
@@ -182,15 +183,15 @@ H5P_dcrt_reg_prop(H5P_genclass_t *pclass)
     H5O_efl_t efl = H5D_CRT_EXT_FILE_LIST_DEF;          /* Default external file list */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Register the storage layout property */
     if(H5P_register_real(pclass, H5D_CRT_LAYOUT_NAME, H5D_CRT_LAYOUT_SIZE, &layout, NULL, NULL, NULL, NULL, NULL, H5D_CRT_LAYOUT_CMP, NULL) < 0)
-       HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the fill value property */
     if(H5P_register_real(pclass, H5D_CRT_FILL_VALUE_NAME, H5D_CRT_FILL_VALUE_SIZE, &fill, NULL, NULL, NULL, NULL, NULL, H5D_CRT_FILL_VALUE_CMP, NULL) < 0)
-       HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the space allocation time state property */
     if(H5P_register_real(pclass, H5D_CRT_ALLOC_TIME_STATE_NAME, H5D_CRT_ALLOC_TIME_STATE_SIZE, &alloc_time_state, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
@@ -202,11 +203,11 @@ H5P_dcrt_reg_prop(H5P_genclass_t *pclass)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dcrt_reg_prop() */
+} /* end H5P__dcrt_reg_prop() */
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_dcrt_copy
+ * Function:       H5P__dcrt_copy
  *
  * Purpose:        Callback routine which is called whenever any dataset
  *                 creation property list is copied.  This routine copies
@@ -222,7 +223,7 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5P_dcrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
+H5P__dcrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
 {
     H5O_fill_t     src_fill, dst_fill;          /* Source & destination fill values */
     H5O_efl_t      src_efl, dst_efl;            /* Source & destination external file lists */
@@ -231,7 +232,7 @@ H5P_dcrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
     H5P_genplist_t *dst_plist;                  /* Pointer to destination property list */
     herr_t         ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Verify property list IDs */
     if(NULL == (dst_plist = (H5P_genplist_t *)H5I_object(dst_plist_id)))
@@ -280,6 +281,8 @@ H5P_dcrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
             dst_layout.storage.u.chunk.ops = NULL;
             break;
 
+        case H5D_LAYOUT_ERROR:
+        case H5D_NLAYOUTS:
         default:
             HDassert(0 && "Unknown layout type!");
     } /* end switch */
@@ -314,11 +317,11 @@ H5P_dcrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dcrt_copy() */
+} /* end H5P__dcrt_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5P_dcrt_close
+ * Function:	H5P__dcrt_close
  *
  * Purpose:	Callback routine which is called whenever any dataset create
  *              property list is closed.  This routine performs any generic
@@ -334,14 +337,14 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5P_dcrt_close(hid_t dcpl_id, void UNUSED *close_data)
+H5P__dcrt_close(hid_t dcpl_id, void UNUSED *close_data)
 {
     H5O_fill_t      fill;               /* Fill value */
     H5O_efl_t       efl;                /* External file list */
     H5P_genplist_t *plist;              /* Property list */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check arguments */
     if(NULL == (plist = (H5P_genplist_t *)H5I_object(dcpl_id)))
@@ -362,11 +365,11 @@ H5P_dcrt_close(hid_t dcpl_id, void UNUSED *close_data)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dcrt_close() */
+} /* end H5P__dcrt_close() */
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_dcrt_layout_cmp
+ * Function:       H5P__dcrt_layout_cmp
  *
  * Purpose:        Callback routine which is called whenever the layout
  *                 property in the dataset creation property list is
@@ -382,13 +385,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5P_dcrt_layout_cmp(const void *_layout1, const void *_layout2, size_t UNUSED size)
+H5P__dcrt_layout_cmp(const void *_layout1, const void *_layout2, size_t UNUSED size)
 {
     const H5O_layout_t *layout1 = (const H5O_layout_t *)_layout1,     /* Create local aliases for values */
         *layout2 = (const H5O_layout_t *)_layout2;
     herr_t ret_value = 0;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(layout1);
@@ -425,13 +428,15 @@ H5P_dcrt_layout_cmp(const void *_layout1, const void *_layout2, size_t UNUSED si
             } /* end case */
             break;
 
+        case H5D_LAYOUT_ERROR:
+        case H5D_NLAYOUTS:
         default:
             HDassert(0 && "Unknown layout type!");
     } /* end switch */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dcrt_layout_cmp() */
+} /* end H5P__dcrt_layout_cmp() */
 
 
 /*-------------------------------------------------------------------------
@@ -496,7 +501,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_dcrt_ext_file_list_cmp
+ * Function:       H5P__dcrt_ext_file_list_cmp
  *
  * Purpose:        Callback routine which is called whenever the external file
  *                 list property in the dataset creation property list is
@@ -512,14 +517,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5P_dcrt_ext_file_list_cmp(const void *_efl1, const void *_efl2, size_t UNUSED size)
+H5P__dcrt_ext_file_list_cmp(const void *_efl1, const void *_efl2, size_t UNUSED size)
 {
     const H5O_efl_t *efl1 = (const H5O_efl_t *)_efl1,     /* Create local aliases for values */
         *efl2 = (const H5O_efl_t *)_efl2;
     int cmp_value;              /* Value from comparison */
     herr_t ret_value = 0;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(efl1);
@@ -573,11 +578,11 @@ H5P_dcrt_ext_file_list_cmp(const void *_efl1, const void *_efl2, size_t UNUSED s
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dcrt_ext_file_list_cmp() */
+} /* end H5P__dcrt_ext_file_list_cmp() */
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5P_set_layout
+ * Function:  H5P__set_layout
  *
  * Purpose:   Sets the layout of raw data in the file.
  *
@@ -589,12 +594,12 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout)
+H5P__set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout)
 {
     unsigned alloc_time_state;          /* State of allocation time property */
     herr_t ret_value = SUCCEED;         /* return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Get the allocation time state */
     if(H5P_get(plist, H5D_CRT_ALLOC_TIME_STATE_NAME, &alloc_time_state) < 0)
@@ -622,6 +627,8 @@ H5P_set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout)
                 fill.alloc_time = H5D_ALLOC_TIME_INCR;
                 break;
 
+            case H5D_LAYOUT_ERROR:
+            case H5D_NLAYOUTS:
             default:
                 HGOTO_ERROR(H5E_DATASET, H5E_UNSUPPORTED, FAIL, "unknown layout type")
         } /* end switch */
@@ -637,12 +644,12 @@ H5P_set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_set_layout() */
+} /* end H5P__set_layout() */
 
 #ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
 
 /*-------------------------------------------------------------------------
- * Function:  H5P_init_def_layout
+ * Function:  H5P__init_def_layout
  *
  * Purpose:   Set the default layout information for the various types of
  *              dataset layouts
@@ -655,13 +662,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_init_def_layout(void)
+H5P__init_def_layout(void)
 {
     const H5O_layout_chunk_t def_layout_chunk = H5D_DEF_LAYOUT_CHUNK_INIT;
     const H5O_storage_compact_t def_store_compact = H5D_DEF_STORAGE_COMPACT_INIT;
     const H5O_storage_chunk_t def_store_chunk = H5D_DEF_STORAGE_CHUNK_INIT;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Initialize the default layout info for non-contigous layouts */
     H5D_def_layout_compact_g.storage.u.compact = def_store_compact;
@@ -672,7 +679,7 @@ H5P_init_def_layout(void)
     H5P_dcrt_def_layout_init_g = TRUE;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5P_init_def_layout() */
+} /* end H5P__init_def_layout() */
 #endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
 
@@ -718,7 +725,7 @@ H5Pset_layout(hid_t plist_id, H5D_layout_t layout_type)
      *  the default layout structs have been initialized yet or not.  *ick* -QAK
      */
     if(!H5P_dcrt_def_layout_init_g)
-        if(H5P_init_def_layout() < 0)
+        if(H5P__init_def_layout() < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
 #endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
@@ -736,12 +743,14 @@ H5Pset_layout(hid_t plist_id, H5D_layout_t layout_type)
             layout = &H5D_def_layout_chunk_g;
             break;
 
+        case H5D_LAYOUT_ERROR:
+        case H5D_NLAYOUTS:
         default:
             HGOTO_ERROR(H5E_DATASET, H5E_UNSUPPORTED, FAIL, "unknown layout type")
     } /* end switch */
 
     /* Set value */
-    if(H5P_set_layout(plist, layout) < 0)
+    if(H5P__set_layout(plist, layout) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't set layout")
 
 done:
@@ -845,7 +854,7 @@ H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[/*ndims*/])
      *  the default layout structs have been initialized yet or not.  *ick* -QAK
      */
     if(!H5P_dcrt_def_layout_init_g)
-        if(H5P_init_def_layout() < 0)
+        if(H5P__init_def_layout() < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
 #endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
@@ -870,7 +879,7 @@ H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[/*ndims*/])
 
     /* Set chunk information in property list */
     chunk_layout.u.chunk.ndims = (unsigned)ndims;
-    if(H5P_set_layout(plist, &chunk_layout) < 0)
+    if(H5P__set_layout(plist, &chunk_layout) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set layout")
 
 done:
@@ -959,18 +968,6 @@ done:
  * Programmer:	Robb Matzke
  *		Tuesday, March	3, 1998
  *
- * Modifications:
- *
- *              Raymond Lu
- *              Tuesday, October 2, 2001
- *              Changed the way to check parameter and set property for
- *              generic property list.
- *
- *              Raymond Lu
- *              7 April 2011
- *              Starting from the 1.8.7 release, we allow dataspace to have 
- *              zero dimension size. So the external storage size for 
- *              dataset can be zero.
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -979,16 +976,16 @@ H5Pset_external(hid_t plist_id, const char *name, off_t offset, hsize_t size)
     size_t		idx;
     hsize_t		total, tmp;
     H5O_efl_t           efl;
-    H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t      ret_value = SUCCEED;       /* Return value */
+    H5P_genplist_t *plist;              /* Property list pointer */
+    herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE4("e", "i*soh", plist_id, name, offset, size);
 
     /* Check arguments */
-    if (!name || !*name)
+    if(!name || !*name)
         HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "no name given")
-    if (offset<0)
+    if(offset < 0)
         HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "negative external file offset")
 
     /* Get the plist structure */
@@ -997,14 +994,14 @@ H5Pset_external(hid_t plist_id, const char *name, off_t offset, hsize_t size)
 
     if(H5P_get(plist, H5D_CRT_EXT_FILE_LIST_NAME, &efl) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get external file list")
-    if(efl.nused > 0 && H5O_EFL_UNLIMITED==efl.slot[efl.nused-1].size)
+    if(efl.nused > 0 && H5O_EFL_UNLIMITED == efl.slot[efl.nused - 1].size)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "previous file size is unlimited")
 
-    if (H5O_EFL_UNLIMITED!=size) {
-        for (idx=0, total=size; idx<efl.nused; idx++, total=tmp) {
+    if(H5O_EFL_UNLIMITED != size) {
+        for(idx = 0, total = size; idx < efl.nused; idx++, total = tmp) {
             tmp = total + efl.slot[idx].size;
-            if (tmp <= total)
-                HGOTO_ERROR (H5E_EFL, H5E_OVERFLOW, FAIL, "total external data size overflowed")
+            if(tmp <= total)
+                HGOTO_ERROR(H5E_EFL, H5E_OVERFLOW, FAIL, "total external data size overflowed")
         } /* end for */
     } /* end if */
 
@@ -1015,23 +1012,23 @@ H5Pset_external(hid_t plist_id, const char *name, off_t offset, hsize_t size)
         H5O_efl_entry_t *x = (H5O_efl_entry_t *)H5MM_realloc(efl.slot, na * sizeof(H5O_efl_entry_t));
 
         if(!x)
-            HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
+            HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, FAIL, "memory allocation failed")
         efl.nalloc = na;
         efl.slot = x;
     } /* end if */
     idx = efl.nused;
     efl.slot[idx].name_offset = 0; /*not entered into heap yet*/
-    efl.slot[idx].name = H5MM_xstrdup (name);
+    efl.slot[idx].name = H5MM_xstrdup(name);
     efl.slot[idx].offset = offset;
     efl.slot[idx].size = size;
     efl.nused++;
 
     if(H5P_set(plist, H5D_CRT_EXT_FILE_LIST_NAME, &efl) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't set external file list")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set external file list")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_external() */
 
 
 /*-------------------------------------------------------------------------
@@ -1199,7 +1196,7 @@ H5Pset_szip(hid_t plist_id, unsigned options_mask, unsigned pixels_per_block)
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Always set K13 compression (and un-set CHIP compression) */
-    options_mask &= (~H5_SZIP_CHIP_OPTION_MASK);
+    options_mask &= (unsigned)(~H5_SZIP_CHIP_OPTION_MASK);
     options_mask |= H5_SZIP_ALLOW_K13_OPTION_MASK;
 
     /* Always set "raw" (no szip header) flag for data */
@@ -1207,7 +1204,7 @@ H5Pset_szip(hid_t plist_id, unsigned options_mask, unsigned pixels_per_block)
 
     /* Mask off the LSB and MSB options, if they were given */
     /* (The HDF5 library sets them internally, as needed) */
-    options_mask &= ~(H5_SZIP_LSB_OPTION_MASK|H5_SZIP_MSB_OPTION_MASK);
+    options_mask &= (unsigned)(~(H5_SZIP_LSB_OPTION_MASK | H5_SZIP_MSB_OPTION_MASK));
 
     /* Set the parameters for the filter */
     cd_values[0]=options_mask;
@@ -1512,7 +1509,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5P_get_fill_value(H5P_genplist_t *plist, const H5T_t *type, void *value/*out*/,
+H5P_get_fill_value(H5P_genplist_t *plist, H5T_t *type, void *value/*out*/,
     hid_t dxpl_id)
 {
     H5O_fill_t          fill;                   /* Fill value to retrieve */
@@ -1563,8 +1560,8 @@ H5P_get_fill_value(H5P_genplist_t *plist, const H5T_t *type, void *value/*out*/,
     else {
         if(NULL == (buf = H5MM_malloc(H5T_get_size(fill.type))))
             HGOTO_ERROR(H5E_PLIST, H5E_CANTALLOC, FAIL, "memory allocation failed for type conversion")
-        if(H5T_path_bkg(tpath))
-            bkg = value;
+        if(H5T_path_bkg(tpath) && NULL == (bkg = H5MM_malloc(H5T_get_size(fill.type))))
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTALLOC, FAIL, "memory allocation failed for type conversion")
     } /* end else */
     HDmemcpy(buf, fill.buf, H5T_get_size(fill.type));
 
@@ -1805,6 +1802,8 @@ H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time)
                 alloc_time = H5D_ALLOC_TIME_INCR;
                 break;
 
+            case H5D_LAYOUT_ERROR:
+            case H5D_NLAYOUTS:
             default:
                 HGOTO_ERROR(H5E_DATASET, H5E_UNSUPPORTED, FAIL, "unknown layout type")
         } /* end switch */
diff --git a/src/H5Pdxpl.c b/src/H5Pdxpl.c
index e9b443b..4c98dd6 100644
--- a/src/H5Pdxpl.c
+++ b/src/H5Pdxpl.c
@@ -46,50 +46,46 @@
 
 /* ======== Data transfer properties ======== */
 /* Definitions for maximum temp buffer size property */
-#define H5D_XFER_MAX_TEMP_BUF_SIZE       sizeof(size_t)
-#define H5D_XFER_MAX_TEMP_BUF_DEF  H5D_TEMP_BUF_SIZE
+#define H5D_XFER_MAX_TEMP_BUF_SIZE      sizeof(size_t)
+#define H5D_XFER_MAX_TEMP_BUF_DEF       H5D_TEMP_BUF_SIZE
 /* Definitions for type conversion buffer property */
-#define H5D_XFER_TCONV_BUF_SIZE       sizeof(void *)
-#define H5D_XFER_TCONV_BUF_DEF      NULL
+#define H5D_XFER_TCONV_BUF_SIZE         sizeof(void *)
+#define H5D_XFER_TCONV_BUF_DEF          NULL
 /* Definitions for background buffer property */
-#define H5D_XFER_BKGR_BUF_SIZE       sizeof(void *)
-#define H5D_XFER_BKGR_BUF_DEF      NULL
+#define H5D_XFER_BKGR_BUF_SIZE          sizeof(void *)
+#define H5D_XFER_BKGR_BUF_DEF           NULL
 /* Definitions for background buffer type property */
-#define H5D_XFER_BKGR_BUF_TYPE_SIZE       sizeof(H5T_bkg_t)
+#define H5D_XFER_BKGR_BUF_TYPE_SIZE     sizeof(H5T_bkg_t)
 #define H5D_XFER_BKGR_BUF_TYPE_DEF      H5T_BKG_NO
 /* Definitions for B-tree node splitting ratio property */
 /* (These default B-tree node splitting ratios are also used for splitting
  * group's B-trees as well as chunked dataset's B-trees - QAK)
  */
-#define H5D_XFER_BTREE_SPLIT_RATIO_SIZE       sizeof(double[3])
-#define H5D_XFER_BTREE_SPLIT_RATIO_DEF      {0.1, 0.5, 0.9}
+#define H5D_XFER_BTREE_SPLIT_RATIO_SIZE sizeof(double[3])
+#define H5D_XFER_BTREE_SPLIT_RATIO_DEF  {0.1, 0.5, 0.9}
 /* Definitions for vlen allocation function property */
-#define H5D_XFER_VLEN_ALLOC_SIZE       sizeof(H5MM_allocate_t)
-#define H5D_XFER_VLEN_ALLOC_DEF  H5D_VLEN_ALLOC
+#define H5D_XFER_VLEN_ALLOC_SIZE        sizeof(H5MM_allocate_t)
+#define H5D_XFER_VLEN_ALLOC_DEF         H5D_VLEN_ALLOC
 /* Definitions for vlen allocation info property */
-#define H5D_XFER_VLEN_ALLOC_INFO_SIZE       sizeof(void *)
-#define H5D_XFER_VLEN_ALLOC_INFO_DEF  H5D_VLEN_ALLOC_INFO
+#define H5D_XFER_VLEN_ALLOC_INFO_SIZE   sizeof(void *)
+#define H5D_XFER_VLEN_ALLOC_INFO_DEF    H5D_VLEN_ALLOC_INFO
 /* Definitions for vlen free function property */
-#define H5D_XFER_VLEN_FREE_SIZE       sizeof(H5MM_free_t)
-#define H5D_XFER_VLEN_FREE_DEF  H5D_VLEN_FREE
+#define H5D_XFER_VLEN_FREE_SIZE         sizeof(H5MM_free_t)
+#define H5D_XFER_VLEN_FREE_DEF          H5D_VLEN_FREE
 /* Definitions for vlen free info property */
-#define H5D_XFER_VLEN_FREE_INFO_SIZE       sizeof(void *)
-#define H5D_XFER_VLEN_FREE_INFO_DEF  H5D_VLEN_FREE_INFO
-/* Definitions for file driver ID property */
-#define H5D_XFER_VFL_ID_SIZE       sizeof(hid_t)
-#define H5D_XFER_VFL_ID_DEF  H5FD_VFD_DEFAULT
-/* Definitions for file driver info property */
-#define H5D_XFER_VFL_INFO_SIZE       sizeof(void *)
-#define H5D_XFER_VFL_INFO_DEF  NULL
+#define H5D_XFER_VLEN_FREE_INFO_SIZE    sizeof(void *)
+#define H5D_XFER_VLEN_FREE_INFO_DEF     H5D_VLEN_FREE_INFO
 /* Definitions for hyperslab vector size property */
 /* (Be cautious about increasing the default size, there are arrays allocated
  *      on the stack which depend on it - QAK)
  */
-#define H5D_XFER_HYPER_VECTOR_SIZE_SIZE       sizeof(size_t)
-#define H5D_XFER_HYPER_VECTOR_SIZE_DEF        H5D_IO_VECTOR_SIZE
+#define H5D_XFER_HYPER_VECTOR_SIZE_SIZE sizeof(size_t)
+#define H5D_XFER_HYPER_VECTOR_SIZE_DEF  H5D_IO_VECTOR_SIZE
+
+#ifdef H5_HAVE_PARALLEL
 /* Definitions for I/O transfer mode property */
-#define H5D_XFER_IO_XFER_MODE_SIZE       sizeof(H5FD_mpio_xfer_t)
-#define H5D_XFER_IO_XFER_MODE_DEF        H5FD_MPIO_INDEPENDENT
+#define H5D_XFER_IO_XFER_MODE_SIZE      sizeof(H5FD_mpio_xfer_t)
+#define H5D_XFER_IO_XFER_MODE_DEF       H5FD_MPIO_INDEPENDENT
 /* Definitions for optimization of MPI-IO transfer mode property */
 #define H5D_XFER_MPIO_COLLECTIVE_OPT_SIZE       sizeof(H5FD_mpio_collective_opt_t)
 #define H5D_XFER_MPIO_COLLECTIVE_OPT_DEF        H5FD_MPIO_COLLECTIVE_IO
@@ -105,6 +101,17 @@
 /* Definitions for chunk io mode property. */
 #define H5D_MPIO_ACTUAL_IO_MODE_SIZE    sizeof(H5D_mpio_actual_io_mode_t)
 #define H5D_MPIO_ACTUAL_IO_MODE_DEF     H5D_MPIO_NO_COLLECTIVE
+/* Definitions for cause of broken collective io property */
+#define H5D_MPIO_NO_COLLECTIVE_CAUSE_SIZE   sizeof(uint32_t)
+#define H5D_MPIO_NO_COLLECTIVE_CAUSE_DEF   H5D_MPIO_COLLECTIVE 
+/* Definitions for memory MPI type property */
+#define H5FD_MPI_XFER_MEM_MPI_TYPE_SIZE        sizeof(MPI_Datatype)
+#define H5FD_MPI_XFER_MEM_MPI_TYPE_DEF         MPI_DATATYPE_NULL
+/* Definitions for file MPI type property */
+#define H5FD_MPI_XFER_FILE_MPI_TYPE_SIZE       sizeof(MPI_Datatype)
+#define H5FD_MPI_XFER_FILE_MPI_TYPE_DEF        MPI_DATATYPE_NULL
+#endif /* H5_HAVE_PARALLEL */
+
 /* Definitions for EDC property */
 #define H5D_XFER_EDC_SIZE           sizeof(H5Z_EDC_t)
 #define H5D_XFER_EDC_DEF            H5Z_ENABLE_EDC
@@ -117,10 +124,10 @@
 /* Definitions for data transform property */
 #define H5D_XFER_XFORM_SIZE         sizeof(void *)
 #define H5D_XFER_XFORM_DEF          NULL
-#define H5D_XFER_XFORM_DEL          H5P_dxfr_xform_del
-#define H5D_XFER_XFORM_COPY         H5P_dxfr_xform_copy
-#define H5D_XFER_XFORM_CLOSE        H5P_dxfr_xform_close
-
+#define H5D_XFER_XFORM_DEL          H5P__dxfr_xform_del
+#define H5D_XFER_XFORM_COPY         H5P__dxfr_xform_copy
+#define H5D_XFER_XFORM_CMP          H5P__dxfr_xform_cmp
+#define H5D_XFER_XFORM_CLOSE        H5P__dxfr_xform_close
 
 /******************/
 /* Local Typedefs */
@@ -137,15 +144,13 @@
 /********************/
 
 /* Property class callbacks */
-static herr_t H5P_dxfr_reg_prop(H5P_genclass_t *pclass);
-static herr_t H5P_dxfr_create(hid_t dxpl_id, void *create_data);
-static herr_t H5P_dxfr_copy(hid_t dst_dxpl_id, hid_t src_dxpl_id, void *copy_data);
-static herr_t H5P_dxfr_close(hid_t dxpl_id, void *close_data);
+static herr_t H5P__dxfr_reg_prop(H5P_genclass_t *pclass);
 
 /* Property list callbacks */
-static herr_t H5P_dxfr_xform_del(hid_t prop_id, const char* name, size_t size, void* value);
-static herr_t H5P_dxfr_xform_copy(const char* name, size_t size, void* value);
-static herr_t H5P_dxfr_xform_close(const char* name, size_t size, void* value);
+static herr_t H5P__dxfr_xform_del(hid_t prop_id, const char* name, size_t size, void* value);
+static herr_t H5P__dxfr_xform_copy(const char* name, size_t size, void* value);
+static int H5P__dxfr_xform_cmp(const void *value1, const void *value2, size_t size);
+static herr_t H5P__dxfr_xform_close(const char* name, size_t size, void* value);
 
 
 /*********************/
@@ -155,15 +160,16 @@ static herr_t H5P_dxfr_xform_close(const char* name, size_t size, void* value);
 /* Data transfer property list class library initialization object */
 const H5P_libclass_t H5P_CLS_DXFR[1] = {{
     "data transfer",		/* Class name for debugging     */
+    H5P_TYPE_DATASET_XFER,      /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_DATASET_XFER_g,	/* Pointer to class ID          */
     &H5P_LST_DATASET_XFER_g,	/* Pointer to default property list ID */
-    H5P_dxfr_reg_prop,		/* Default property registration routine */
-    H5P_dxfr_create,	        /* Class creation callback      */
+    H5P__dxfr_reg_prop,		/* Default property registration routine */
+    NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
-    H5P_dxfr_copy,		/* Class copy callback          */
+    NULL,			/* Class copy callback          */
     NULL,		        /* Class copy callback info     */
-    H5P_dxfr_close,		/* Class close callback         */
+    NULL,			/* Class close callback         */
     NULL 		        /* Class close callback info    */
 }};
 
@@ -175,7 +181,7 @@ const H5P_libclass_t H5P_CLS_DXFR[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_dxfr_reg_prop
+ * Function:    H5P__dxfr_reg_prop
  *
  * Purpose:     Register the data transfer property list class's properties
  *
@@ -186,7 +192,7 @@ const H5P_libclass_t H5P_CLS_DXFR[1] = {{
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
+H5P__dxfr_reg_prop(H5P_genclass_t *pclass)
 {
     size_t def_max_temp_buf = H5D_XFER_MAX_TEMP_BUF_DEF;        /* Default value for maximum temp buffer size */
     void *def_tconv_buf = H5D_XFER_TCONV_BUF_DEF;               /* Default value for type conversion buffer */
@@ -197,8 +203,6 @@ H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
     void *def_vlen_alloc_info = H5D_XFER_VLEN_ALLOC_INFO_DEF;   /* Default value for vlen allocation information */
     H5MM_free_t def_vlen_free = H5D_XFER_VLEN_FREE_DEF;         /* Default value for vlen free function */
     void *def_vlen_free_info = H5D_XFER_VLEN_FREE_INFO_DEF;     /* Default value for vlen free information */
-    hid_t def_vfl_id = H5D_XFER_VFL_ID_DEF;                     /* Default value for file driver ID */
-    void *def_vfl_info = H5D_XFER_VFL_INFO_DEF;                 /* Default value for file driver info */
     size_t def_hyp_vec_size = H5D_XFER_HYPER_VECTOR_SIZE_DEF;   /* Default value for vector size */
 #ifdef H5_HAVE_PARALLEL
     H5FD_mpio_xfer_t def_io_xfer_mode = H5D_XFER_IO_XFER_MODE_DEF;      /* Default value for I/O transfer mode */
@@ -208,6 +212,9 @@ H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
     unsigned def_mpio_chunk_opt_ratio = H5D_XFER_MPIO_CHUNK_OPT_RATIO_DEF;
     H5D_mpio_actual_chunk_opt_mode_t def_mpio_actual_chunk_opt_mode = H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_DEF;
     H5D_mpio_actual_io_mode_t def_mpio_actual_io_mode = H5D_MPIO_ACTUAL_IO_MODE_DEF;
+    H5D_mpio_no_collective_cause_t def_mpio_no_collective_cause = H5D_MPIO_NO_COLLECTIVE_CAUSE_DEF; 
+    MPI_Datatype btype = H5FD_MPI_XFER_MEM_MPI_TYPE_DEF;  /* Default value for MPI buffer type */
+    MPI_Datatype ftype = H5FD_MPI_XFER_FILE_MPI_TYPE_DEF; /* Default value for MPI file type */
 #endif /* H5_HAVE_PARALLEL */
     H5Z_EDC_t enable_edc = H5D_XFER_EDC_DEF;            /* Default value for EDC property */
     H5Z_cb_t filter_cb = H5D_XFER_FILTER_CB_DEF;        /* Default value for filter callback */
@@ -215,7 +222,7 @@ H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
     void *def_xfer_xform = H5D_XFER_XFORM_DEF;          /* Default value for data transform */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Register the max. temp buffer size property */
     if(H5P_register_real(pclass, H5D_XFER_MAX_TEMP_BUF_NAME, H5D_XFER_MAX_TEMP_BUF_SIZE, &def_max_temp_buf, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
@@ -253,14 +260,6 @@ H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
     if(H5P_register_real(pclass, H5D_XFER_VLEN_FREE_INFO_NAME, H5D_XFER_VLEN_FREE_INFO_SIZE, &def_vlen_free_info, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
-    /* Register the file driver ID property */
-    if(H5P_register_real(pclass, H5D_XFER_VFL_ID_NAME, H5D_XFER_VFL_ID_SIZE, &def_vfl_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
-
-    /* Register the file driver info property */
-    if(H5P_register_real(pclass, H5D_XFER_VFL_INFO_NAME, H5D_XFER_VFL_INFO_SIZE, &def_vfl_info, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
-
     /* Register the vector size property */
     if(H5P_register_real(pclass, H5D_XFER_HYPER_VECTOR_SIZE_NAME, H5D_XFER_HYPER_VECTOR_SIZE_SIZE, &def_hyp_vec_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
@@ -282,9 +281,27 @@ H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
     if(H5P_register_real(pclass, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_SIZE, &def_mpio_actual_chunk_opt_mode, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
-    /* Register the actual io mode property. */
+    /* Register the actual I/O mode property. */
     if(H5P_register_real(pclass, H5D_MPIO_ACTUAL_IO_MODE_NAME, H5D_MPIO_ACTUAL_IO_MODE_SIZE, &def_mpio_actual_io_mode, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
+    /* Register the local cause of broken collective I/O */
+    if(H5P_register_real(pclass, H5D_MPIO_LOCAL_NO_COLLECTIVE_CAUSE_NAME, H5D_MPIO_NO_COLLECTIVE_CAUSE_SIZE, &def_mpio_no_collective_cause, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
+    /* Register the global cause of broken collective I/O */
+    if(H5P_register_real(pclass, H5D_MPIO_GLOBAL_NO_COLLECTIVE_CAUSE_NAME, H5D_MPIO_NO_COLLECTIVE_CAUSE_SIZE, &def_mpio_no_collective_cause, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
+    /* Register the MPI memory type property */
+    if(H5P_register_real(pclass, H5FD_MPI_XFER_MEM_MPI_TYPE_NAME, H5FD_MPI_XFER_MEM_MPI_TYPE_SIZE, 
+                         &btype, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
+    /* Register the MPI file type property */
+    if(H5P_register_real(pclass, H5FD_MPI_XFER_FILE_MPI_TYPE_NAME, H5FD_MPI_XFER_FILE_MPI_TYPE_SIZE, 
+                         &ftype, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 #endif /* H5_HAVE_PARALLEL */
 
     /* Register the EDC property */
@@ -300,168 +317,52 @@ H5P_dxfr_reg_prop(H5P_genclass_t *pclass)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the data transform property */
-    if(H5P_register_real(pclass, H5D_XFER_XFORM_NAME, H5D_XFER_XFORM_SIZE, &def_xfer_xform, NULL, NULL, NULL, H5D_XFER_XFORM_DEL, H5D_XFER_XFORM_COPY, NULL, H5D_XFER_XFORM_CLOSE) < 0)
+    if(H5P_register_real(pclass, H5D_XFER_XFORM_NAME, H5D_XFER_XFORM_SIZE, &def_xfer_xform, NULL, NULL, NULL, H5D_XFER_XFORM_DEL, H5D_XFER_XFORM_COPY, H5D_XFER_XFORM_CMP, H5D_XFER_XFORM_CLOSE) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_reg_prop() */
-
-
-/*-------------------------------------------------------------------------
- * Function:	H5P_dxfr_create
- *
- * Purpose:	Callback routine which is called whenever any dataset transfer
- *              property list is created.  This routine performs any generic
- *              initialization needed on the properties the library put into
- *              the list.
- *              Right now, it's just allocating the driver-specific dataset
- *              transfer information.
- *
- * Return:	Success:	Non-negative
- *
- *		Failure:	Negative
- *
- * Programmer:	Quincey Koziol
- *              Thursday, August 2, 2001
- *
- *-------------------------------------------------------------------------
- */
-/* ARGSUSED */
-static herr_t
-H5P_dxfr_create(hid_t dxpl_id, void UNUSED *create_data)
-{
-    hid_t driver_id;            /* VFL driver ID */
-    void *driver_info;          /* VFL driver info */
-    H5P_genplist_t *plist;      /* Property list */
-    herr_t ret_value = SUCCEED;   /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    /* Check arguments */
-    if(NULL == (plist = (H5P_genplist_t *)H5I_object(dxpl_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list")
-
-    /* Get the driver information */
-    if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver ID")
-    if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &driver_info) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver info")
-
-    /* Check if we have a valid driver ID */
-    if(driver_id > 0) {
-        /* Set the driver for the property list */
-        if(H5FD_dxpl_open(plist, driver_id, driver_info) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
-    } /* end if */
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_create() */
+} /* end H5P__dxfr_reg_prop() */
 
 
-/*-------------------------------------------------------------------------
- * Function:       H5P_dxfr_copy
- *
- * Purpose:        Callback routine which is called whenever any dataset
- *                 transfer property list is copied.  This routine copies
- *                 the properties from the old list to the new list.
- *
- * Return:         Success:        Non-negative
- *
- *                 Failure:        Negative
- *
- * Programmer:     Raymond Lu
- *                 Tuesday, October 2, 2001
- *
- *-------------------------------------------------------------------------
- */
-/* ARGSUSED */
-static herr_t
-H5P_dxfr_copy(hid_t dst_dxpl_id, hid_t src_dxpl_id, void UNUSED *copy_data)
-{
-    hid_t          driver_id;
-    void*          driver_info;
-    H5P_genplist_t *dst_plist;              /* Destination property list */
-    H5P_genplist_t *src_plist;              /* Source property list */
-    herr_t ret_value = SUCCEED;   /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    if(NULL == (dst_plist = (H5P_genplist_t *)H5I_object(dst_dxpl_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get property list")
-    if(NULL == (src_plist = (H5P_genplist_t *)H5I_object(src_dxpl_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get property list")
-
-    /* Get values from old property list */
-    if(H5P_get(src_plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver ID")
-    if(H5P_get(src_plist, H5D_XFER_VFL_INFO_NAME, &driver_info) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get drver info")
-
-    if(driver_id > 0) {
-        /* Set the driver for the property list */
-        if(H5FD_dxpl_open(dst_plist, driver_id, driver_info) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
-    } /* end if */
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5P_dxfr_close
+ * Function: H5P_dxfr_xform_del
  *
- * Purpose:	Callback routine which is called whenever any dataset transfer
- *              property list is closed.  This routine performs any generic
- *              cleanup needed on the properties the library put into the list.
- *              Right now, it's just freeing the driver-specific dataset
- *              transfer information.
+ * Purpose: Frees memory allocated by H5P_dxfr_xform_set
  *
- * Return:	Success:	Non-negative
+ * Return: Success: SUCCEED, Failure: FAIL
  *
- *		Failure:	Negative
+ * Programmer: Leon Arber larber at uiuc.edu
  *
- * Programmer:	Quincey Koziol
- *              Wednesday, July 11, 2001
+ * Date: April 9, 2004
  *
  *-------------------------------------------------------------------------
  */
 /* ARGSUSED */
 static herr_t
-H5P_dxfr_close(hid_t dxpl_id, void UNUSED *close_data)
+H5P__dxfr_xform_del(hid_t UNUSED prop_id, const char UNUSED *name, size_t UNUSED size, void *value)
 {
-    hid_t driver_id;            /* VFL driver ID */
-    void *driver_info;          /* VFL driver info */
-    H5P_genplist_t *plist;      /* Property list */
-    herr_t ret_value = SUCCEED;   /* Return value */
+    herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
-    /* Check arguments */
-    if(NULL == (plist = (H5P_genplist_t *)H5I_object(dxpl_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list")
+    HDassert(value);
 
-    if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID")
-    if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &driver_info) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info")
-    if(driver_id > 0) {
-        /* Close the driver for the property list */
-        if(H5FD_dxpl_close(driver_id, driver_info) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver")
-    } /* end if */
+    if(H5Z_xform_destroy(*(H5Z_data_xform_t **)value) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTCLOSEOBJ, FAIL, "error closing the parse tree")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_close() */
+} /* end H5P__dxfr_xform_del() */
 
 
 /*-------------------------------------------------------------------------
- * Function: H5P_dxfr_xform_del
+ * Function: H5P__dxfr_xform_copy
  *
- * Purpose: Frees memory allocated by H5P_dxfr_xform_set
+ * Purpose: Creates a copy of the user's data transform string and its
+ *              associated parse tree.
  *
  * Return: Success: SUCCEED, Failure: FAIL
  *
@@ -473,56 +374,78 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5P_dxfr_xform_del(hid_t UNUSED prop_id, const char UNUSED *name, size_t UNUSED size, void *value)
+H5P__dxfr_xform_copy(const char UNUSED *name, size_t UNUSED size, void *value)
 {
-    herr_t ret_value = SUCCEED;
+    herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(value);
 
-    if(H5Z_xform_destroy(*(H5Z_data_xform_t **)value) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTCLOSEOBJ, FAIL, "error closing the parse tree")
+    if(H5Z_xform_copy((H5Z_data_xform_t **)value) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTCLOSEOBJ, FAIL, "error copying the data transform info")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_xform_del() */
+} /* end H5P__dxfr_xform_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function: H5P_dxfr_xform_copy
- *
- * Purpose: Creates a copy of the user's data transform string and its
- *              associated parse tree.
+ * Function: H5P__dxfr_xform_cmp
  *
- * Return: Success: SUCCEED, Failure: FAIL
+ * Purpose: Compare two data transforms.
  *
- * Programmer: Leon Arber larber at uiuc.edu
+ * Return: positive if VALUE1 is greater than VALUE2, negative if VALUE2 is
+ *		greater than VALUE1 and zero if VALUE1 and VALUE2 are equal.
  *
- * Date: April 9, 2004
+ * Programmer:     Quincey Koziol
+ *                 Wednesday, August 15, 2012
  *
  *-------------------------------------------------------------------------
  */
-/* ARGSUSED */
-static herr_t
-H5P_dxfr_xform_copy(const char UNUSED *name, size_t UNUSED size, void *value)
+static int
+H5P__dxfr_xform_cmp(const void *_xform1, const void *_xform2, size_t UNUSED size)
 {
-    herr_t ret_value = SUCCEED;
+    const H5Z_data_xform_t * const *xform1 = (const H5Z_data_xform_t * const *)_xform1; /* Create local aliases for values */
+    const H5Z_data_xform_t * const *xform2 = (const H5Z_data_xform_t * const *)_xform2; /* Create local aliases for values */
+    const char *pexp1, *pexp2;          /* Pointers to transform expressions */
+    herr_t ret_value = 0;               /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
-    HDassert(value);
+    /* Sanity check */
+    HDassert(xform1);
+    HDassert(xform2);
+    HDassert(size == sizeof(H5Z_data_xform_t *));
 
-    if(H5Z_xform_copy((H5Z_data_xform_t **)value) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTCLOSEOBJ, FAIL, "error copying the data transform info")
+    /* Check for a property being set */
+    if(*xform1 == NULL && *xform2 != NULL) HGOTO_DONE(-1);
+    if(*xform1 != NULL && *xform2 == NULL) HGOTO_DONE(1);
+
+    if(*xform1) {
+        HDassert(*xform2);
+    
+        /* Get the transform expressions */
+        pexp1 = H5Z_xform_extract_xform_str(*xform1);
+        pexp2 = H5Z_xform_extract_xform_str(*xform2);
+
+        /* Check for property expressions */
+        if(pexp1 == NULL && pexp2 != NULL) HGOTO_DONE(-1);
+        if(pexp1 != NULL && pexp2 == NULL) HGOTO_DONE(1);
+
+        if(pexp1) {
+            HDassert(pexp2);
+            ret_value = HDstrcmp(pexp1, pexp2);
+        } /* end if */
+    } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_xform_copy() */
+} /* end H5P__dxfr_xform_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function: H5P_dxfr_xform_close
+ * Function: H5P__dxfr_xform_close
  *
  * Purpose: Frees memory allocated by H5P_dxfr_xform_set
  *
@@ -536,11 +459,11 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5P_dxfr_xform_close(const char UNUSED *name, size_t UNUSED size, void *value)
+H5P__dxfr_xform_close(const char UNUSED *name, size_t UNUSED size, void *value)
 {
-    herr_t ret_value = SUCCEED;
+    herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     HDassert(value);
 
@@ -549,18 +472,15 @@ H5P_dxfr_xform_close(const char UNUSED *name, size_t UNUSED size, void *value)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_dxfr_xform_close() */
+} /* end H5P__dxfr_xform_close() */
 
 
 /*-------------------------------------------------------------------------
  * Function:	H5Pset_data_transform
  *
- * Purpose:
- *              Sets data transform expression.
- *
- *
- * Return:      Returns a non-negative value if successful; otherwise returns a negative value.
+ * Purpose:	Sets data transform expression.
  *
+ * Return:	Non-negative on success/Negative on failure
  *
  * Programmer:	Leon Arber
  *              Monday, March 07, 2004
@@ -582,12 +502,16 @@ H5Pset_data_transform(hid_t plist_id, const char *expression)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "expression cannot be NULL")
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* See if a data transform is already set, and free it if it is */
-    if(H5P_get(plist, H5D_XFER_XFORM_NAME, &data_xform_prop) >= 0)
-	H5Z_xform_destroy(data_xform_prop);
+    if(H5P_get(plist, H5D_XFER_XFORM_NAME, &data_xform_prop) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "error getting data transform expression")
+
+    /* Destroy previous data transform property */
+    if(H5Z_xform_destroy(data_xform_prop) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CLOSEERROR, FAIL, "unable to release data transform expression")
 
     /* Create data transform info from expression */
     if(NULL == (data_xform_prop = H5Z_xform_create(expression)))
@@ -599,9 +523,8 @@ H5Pset_data_transform(hid_t plist_id, const char *expression)
 
 done:
     if(ret_value <  0) {
-        if(data_xform_prop)
-            if(H5Z_xform_destroy(data_xform_prop) <  0)
-                HDONE_ERROR(H5E_PLINE, H5E_CLOSEERROR, FAIL, "unable to release data transform expression")
+        if(data_xform_prop && H5Z_xform_destroy(data_xform_prop) <  0)
+            HDONE_ERROR(H5E_PLINE, H5E_CLOSEERROR, FAIL, "unable to release data transform expression")
     } /* end if */
 
     FUNC_LEAVE_API(ret_value)
@@ -611,10 +534,9 @@ done:
 /*-------------------------------------------------------------------------
  * Function:	H5Pget_data_transform
  *
- * Purpose:
- *              Gets data transform expression.
+ * Purpose:	Gets data transform expression.
  *
- * Return:      Returns a non-negative value if successful; otherwise returns a negative value.
+ * Return:	Non-negative on success/Negative on failure
  *
  * Comments:
  *  If `expression' is non-NULL then write up to `size' bytes into that
@@ -637,7 +559,7 @@ H5Pget_data_transform(hid_t plist_id, char *expression /*out*/, size_t size)
     H5P_genplist_t *plist;      /* Property list pointer */
     H5Z_data_xform_t *data_xform_prop = NULL;    /* New data xform property */
     size_t	len;
-    char*	pexp;
+    const char*	pexp;
     ssize_t 	ret_value;   /* return value */
 
     FUNC_ENTER_API(FAIL)
@@ -651,13 +573,11 @@ H5Pget_data_transform(hid_t plist_id, char *expression /*out*/, size_t size)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "error getting data transform expression")
 
     if(NULL == data_xform_prop)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "data transform has not been set")
+        HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "data transform has not been set")
 
     /* Get the data transform string */
-    pexp = H5Z_xform_extract_xform_str(data_xform_prop);
-
-    if(!pexp)
-	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "failed to retrieve transform expression")
+    if(NULL == (pexp = H5Z_xform_extract_xform_str(data_xform_prop)))
+	HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "failed to retrieve transform expression")
 
     len = HDstrlen(pexp);
     if(expression) {
@@ -670,9 +590,8 @@ H5Pget_data_transform(hid_t plist_id, char *expression /*out*/, size_t size)
 
 done:
     if(ret_value < 0) {
-	if(data_xform_prop)
-	    if(H5Z_xform_destroy(data_xform_prop) < 0)
-		HDONE_ERROR(H5E_PLINE, H5E_CLOSEERROR, FAIL, "unable to release data transform expression")
+	if(data_xform_prop && H5Z_xform_destroy(data_xform_prop) < 0)
+            HDONE_ERROR(H5E_PLINE, H5E_CLOSEERROR, FAIL, "unable to release data transform expression")
     } /* end if */
 
     FUNC_LEAVE_API(ret_value)
@@ -698,21 +617,19 @@ done:
  * Programmer:	Robb Matzke
  *              Monday, March 16, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_buffer(hid_t plist_id, size_t size, void *tconv, void *bkg)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED; /* return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE4("e", "iz*x*x", plist_id, size, tconv, bkg);
 
     /* Check arguments */
-    if (size<=0)
+    if(size == 0)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "buffer size must not be zero")
 
     /* Get the plist structure */
@@ -720,16 +637,16 @@ H5Pset_buffer(hid_t plist_id, size_t size, void *tconv, void *bkg)
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Update property list */
-    if(H5P_set(plist, H5D_XFER_MAX_TEMP_BUF_NAME, &size)<0)
+    if(H5P_set(plist, H5D_XFER_MAX_TEMP_BUF_NAME, &size) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "Can't set transfer buffer size")
-    if(H5P_set(plist, H5D_XFER_TCONV_BUF_NAME, &tconv)<0)
+    if(H5P_set(plist, H5D_XFER_TCONV_BUF_NAME, &tconv) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "Can't set transfer type conversion buffer")
-    if(H5P_set(plist, H5D_XFER_BKGR_BUF_NAME, &bkg)<0)
+    if(H5P_set(plist, H5D_XFER_BKGR_BUF_NAME, &bkg) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "Can't set background type conversion buffer")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_buffer() */
 
 
 /*-------------------------------------------------------------------------
@@ -744,8 +661,6 @@ done:
  * Programmer:	Robb Matzke
  *              Monday, March 16, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 size_t
@@ -759,27 +674,27 @@ H5Pget_buffer(hid_t plist_id, void **tconv/*out*/, void **bkg/*out*/)
     H5TRACE3("z", "ixx", plist_id, tconv, bkg);
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, 0, "can't find object for ID")
 
     /* Return values */
-    if (tconv)
-        if(H5P_get(plist, H5D_XFER_TCONV_BUF_NAME, tconv)<0)
+    if(tconv)
+        if(H5P_get(plist, H5D_XFER_TCONV_BUF_NAME, tconv) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, 0, "Can't get transfer type conversion buffer")
-    if (bkg)
-        if(H5P_get(plist, H5D_XFER_BKGR_BUF_NAME, bkg)<0)
+    if(bkg)
+        if(H5P_get(plist, H5D_XFER_BKGR_BUF_NAME, bkg) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, 0, "Can't get background type conversion buffer")
 
     /* Get the size */
-    if(H5P_get(plist, H5D_XFER_MAX_TEMP_BUF_NAME, &size)<0)
+    if(H5P_get(plist, H5D_XFER_MAX_TEMP_BUF_NAME, &size) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, 0, "Can't set transfer buffer size")
 
     /* Set the return value */
-    ret_value=size;
+    ret_value = size;
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_buffer() */
 
 
 /*-------------------------------------------------------------------------
@@ -796,32 +711,30 @@ done:
  * Programmer:	Robb Matzke
  *              Tuesday, March 17, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_preserve(hid_t plist_id, hbool_t status)
 {
-    H5T_bkg_t need_bkg;         /* Value for background buffer type */
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    H5T_bkg_t need_bkg;         /* Value for background buffer type */
+    herr_t ret_value = SUCCEED; /* return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "ib", plist_id, status);
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Update property list */
     need_bkg = status ? H5T_BKG_YES : H5T_BKG_NO;
-    if (H5P_set(plist,H5D_XFER_BKGR_BUF_TYPE_NAME,&need_bkg)<0)
+    if(H5P_set(plist, H5D_XFER_BKGR_BUF_TYPE_NAME, &need_bkg) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_preserve() */
 
 
 /*-------------------------------------------------------------------------
@@ -836,8 +749,6 @@ done:
  * Programmer:	Robb Matzke
  *              Tuesday, March 17, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 int
@@ -851,19 +762,19 @@ H5Pget_preserve(hid_t plist_id)
     H5TRACE1("Is", "i", plist_id);
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get value */
-    if (H5P_get(plist,H5D_XFER_BKGR_BUF_TYPE_NAME,&need_bkg)<0)
+    if(H5P_get(plist, H5D_XFER_BKGR_BUF_TYPE_NAME, &need_bkg) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
 
     /* Set return value */
-    ret_value= need_bkg ? TRUE : FALSE;
+    ret_value = need_bkg ? TRUE : FALSE;
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_preserve() */
 
 
 /*-------------------------------------------------------------------------
@@ -879,21 +790,19 @@ done:
  * Programmer:	Raymond Lu
  *              Jan 3, 2003
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED; /* return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iZe", plist_id, check);
 
     /* Check argument */
-    if (check != H5Z_ENABLE_EDC && check != H5Z_DISABLE_EDC)
+    if(check != H5Z_ENABLE_EDC && check != H5Z_DISABLE_EDC)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a valid value")
 
     /* Get the plist structure */
@@ -901,12 +810,12 @@ H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check)
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Update property list */
-    if (H5P_set(plist,H5D_XFER_EDC_NAME,&check)<0)
+    if(H5P_set(plist, H5D_XFER_EDC_NAME, &check) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_edc_check() */
 
 
 /*-------------------------------------------------------------------------
@@ -922,15 +831,13 @@ done:
  * Programmer:	Raymond Lu
  *              Jan 3, 2003
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 H5Z_EDC_t
 H5Pget_edc_check(hid_t plist_id)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    H5Z_EDC_t      ret_value;   /* return value */
+    H5Z_EDC_t      ret_value;   /* Return value */
 
     FUNC_ENTER_API(H5Z_ERROR_EDC)
     H5TRACE1("Ze", "i", plist_id);
@@ -940,16 +847,12 @@ H5Pget_edc_check(hid_t plist_id)
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, H5Z_ERROR_EDC, "can't find object for ID")
 
     /* Update property list */
-    if (H5P_get(plist,H5D_XFER_EDC_NAME,&ret_value)<0)
+    if(H5P_get(plist, H5D_XFER_EDC_NAME, &ret_value) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, H5Z_ERROR_EDC, "unable to set value")
 
-    /* check valid value */
-    if (ret_value != H5Z_ENABLE_EDC && ret_value != H5Z_DISABLE_EDC)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, H5Z_ERROR_EDC, "not a valid value")
-
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_edc_check() */
 
 
 /*-------------------------------------------------------------------------
@@ -1092,40 +995,38 @@ done:
  * Programmer:	Robb Matzke
  *              Monday, September 28, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/, double *middle/*out*/,
-		    double *right/*out*/)
+    double *right/*out*/)
 {
+    H5P_genplist_t *plist;              /* Property list pointer */
     double btree_split_ratio[3];        /* B-tree node split ratios */
-    H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE4("e", "ixxx", plist_id, left, middle, right);
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get the split ratios */
-    if (H5P_get(plist,H5D_XFER_BTREE_SPLIT_RATIO_NAME,&btree_split_ratio)<0)
+    if(H5P_get(plist, H5D_XFER_BTREE_SPLIT_RATIO_NAME, &btree_split_ratio) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
 
     /* Get values */
-    if (left)
+    if(left)
         *left = btree_split_ratio[0];
-    if (middle)
+    if(middle)
         *middle = btree_split_ratio[1];
-    if (right)
+    if(right)
         *right = btree_split_ratio[2];
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_btree_ratios() */
 
 
 /*-------------------------------------------------------------------------
@@ -1146,28 +1047,26 @@ done:
  * Programmer:	Robb Matzke
  *              Monday, September 28, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
-		    double right)
+    double right)
 {
-    double split_ratio[3];        /* B-tree node split ratios */
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    double split_ratio[3];      /* B-tree node split ratios */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE4("e", "iddd", plist_id, left, middle, right);
 
     /* Check arguments */
-    if (left<0.0 || left>1.0 || middle<0.0 || middle>1.0 ||
-            right<0.0 || right>1.0)
+    if(left < 0.0 || left > 1.0 || middle < 0.0 || middle > 1.0 ||
+            right < 0.0 || right > 1.0)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "split ratio must satisfy 0.0<=X<=1.0")
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set values */
@@ -1176,12 +1075,12 @@ H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
     split_ratio[2] = right;
 
     /* Set the split ratios */
-    if (H5P_set(plist,H5D_XFER_BTREE_SPLIT_RATIO_NAME,&split_ratio)<0)
+    if(H5P_set(plist, H5D_XFER_BTREE_SPLIT_RATIO_NAME, &split_ratio) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_btree_ratios() */
 
 
 /*-------------------------------------------------------------------------
@@ -1201,28 +1100,26 @@ done:
  * Programmer:	Quincey Koziol
  *              Thursday, July 1, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5P_set_vlen_mem_manager(H5P_genplist_t *plist, H5MM_allocate_t alloc_func,
-        void *alloc_info, H5MM_free_t free_func, void *free_info)
+    void *alloc_info, H5MM_free_t free_func, void *free_info)
 {
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
-    assert(plist);
+    HDassert(plist);
 
     /* Update property list */
-    if (H5P_set(plist,H5D_XFER_VLEN_ALLOC_NAME,&alloc_func)<0)
+    if(H5P_set(plist, H5D_XFER_VLEN_ALLOC_NAME, &alloc_func) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
-    if (H5P_set(plist,H5D_XFER_VLEN_ALLOC_INFO_NAME,&alloc_info)<0)
+    if(H5P_set(plist, H5D_XFER_VLEN_ALLOC_INFO_NAME, &alloc_info) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
-    if (H5P_set(plist,H5D_XFER_VLEN_FREE_NAME,&free_func)<0)
+    if(H5P_set(plist, H5D_XFER_VLEN_FREE_NAME, &free_func) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
-    if (H5P_set(plist,H5D_XFER_VLEN_FREE_INFO_NAME,&free_info)<0)
+    if(H5P_set(plist, H5D_XFER_VLEN_FREE_INFO_NAME, &free_info) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
 done:
@@ -1247,27 +1144,25 @@ done:
  * Programmer:	Quincey Koziol
  *              Thursday, July 1, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_vlen_mem_manager(hid_t plist_id, H5MM_allocate_t alloc_func,
-        void *alloc_info, H5MM_free_t free_func, void *free_info)
+    void *alloc_info, H5MM_free_t free_func, void *free_info)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE5("e", "ix*xx*x", plist_id, alloc_func, alloc_info, free_func,
              free_info);
 
     /* Check arguments */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list")
 
     /* Update property list */
-    if (H5P_set_vlen_mem_manager(plist,alloc_func,alloc_info,free_func,free_info)<0)
+    if(H5P_set_vlen_mem_manager(plist, alloc_func, alloc_info, free_func, free_info) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set values")
 
 done:
@@ -1285,42 +1180,38 @@ done:
  * Programmer:	Quincey Koziol
  *              Thursday, July 1, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_vlen_mem_manager(hid_t plist_id, H5MM_allocate_t *alloc_func/*out*/,
-			void **alloc_info/*out*/,
-			H5MM_free_t *free_func/*out*/,
-			void **free_info/*out*/)
+    void **alloc_info/*out*/, H5MM_free_t *free_func/*out*/, void **free_info/*out*/)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE5("e", "ixxxx", plist_id, alloc_func, alloc_info, free_func, free_info);
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
-    if(alloc_func!=NULL)
-        if (H5P_get(plist,H5D_XFER_VLEN_ALLOC_NAME,alloc_func)<0)
+    if(alloc_func)
+        if(H5P_get(plist, H5D_XFER_VLEN_ALLOC_NAME, alloc_func) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
-    if(alloc_info!=NULL)
-        if (H5P_get(plist,H5D_XFER_VLEN_ALLOC_INFO_NAME,alloc_info)<0)
+    if(alloc_info)
+        if(H5P_get(plist, H5D_XFER_VLEN_ALLOC_INFO_NAME, alloc_info) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
-    if(free_func!=NULL)
-        if (H5P_get(plist,H5D_XFER_VLEN_FREE_NAME,free_func)<0)
+    if(free_func)
+        if(H5P_get(plist, H5D_XFER_VLEN_FREE_NAME, free_func) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
-    if(free_info!=NULL)
-        if (H5P_get(plist,H5D_XFER_VLEN_FREE_INFO_NAME,free_info)<0)
+    if(free_info)
+        if(H5P_get(plist, H5D_XFER_VLEN_FREE_INFO_NAME, free_info) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_vlen_mem_manager() */
 
 
 /*-------------------------------------------------------------------------
@@ -1342,29 +1233,27 @@ done:
  * Programmer:	Quincey Koziol
  *              Monday, July 9, 2001
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_hyper_vector_size(hid_t plist_id, size_t vector_size)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iz", plist_id, vector_size);
 
     /* Check arguments */
-    if (vector_size<1)
+    if(vector_size < 1)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "vector size too small")
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Update property list */
-    if (H5P_set(plist,H5D_XFER_HYPER_VECTOR_SIZE_NAME,&vector_size)<0)
+    if(H5P_set(plist, H5D_XFER_HYPER_VECTOR_SIZE_NAME, &vector_size) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
 
 done:
@@ -1382,34 +1271,32 @@ done:
  * Programmer:	Quincey Koziol
  *              Monday, July 9, 2001
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_hyper_vector_size(hid_t plist_id, size_t *vector_size/*out*/)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "ix", plist_id, vector_size);
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Return values */
-    if (vector_size)
-        if (H5P_get(plist,H5D_XFER_HYPER_VECTOR_SIZE_NAME,vector_size)<0)
+    if(vector_size)
+        if(H5P_get(plist, H5D_XFER_HYPER_VECTOR_SIZE_NAME, vector_size) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get value")
 
 done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Pget_hyper_vector_size() */
 
-
 #ifdef H5_HAVE_PARALLEL
+
 /*-------------------------------------------------------------------------
  * Function:	H5Pget_mpio_actual_chunk_opt_mode
  *
@@ -1419,6 +1306,7 @@ done:
  *
  * Programmer:	Jacob Gruber
  *              Wednesday, May 4, 2011
+ *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -1454,6 +1342,7 @@ done:
  *
  * Programmer:	Jacob Gruber
  *              Wednesday, May 4, 2011
+ *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -1477,5 +1366,44 @@ H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_
 done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Pget_mpio_actual_io_mode() */
+
+/*-------------------------------------------------------------------------
+ * Function:	H5Pget_mpio_no_collective_cause
+ *
+ * Purpose:	Retrieves cause for the broke collective I/O
+ *
+ * Return:	Non-negative on success/Negative on failure
+ *
+ * Programmer:	Jonathan Kim
+ *              Aug 3, 2012
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause)
+{
+    H5P_genplist_t     *plist;
+    herr_t ret_value = SUCCEED;   /* return value */
+    
+    FUNC_ENTER_API(FAIL)
+    H5TRACE3("e", "i*Dn*Dn", plist_id, local_no_collective_cause,
+             global_no_collective_cause);
+
+    /* Get the plist structure */
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_XFER)))
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
+
+    /* Return values */
+    if(local_no_collective_cause)
+        if(H5P_get(plist, H5D_MPIO_LOCAL_NO_COLLECTIVE_CAUSE_NAME, local_no_collective_cause) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get local value")
+    if(global_no_collective_cause)
+        if(H5P_get(plist, H5D_MPIO_GLOBAL_NO_COLLECTIVE_CAUSE_NAME, global_no_collective_cause) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get global value")
+
+done:
+    FUNC_LEAVE_API(ret_value)
+} /* end H5Pget_mpio_no_collective_cause() */
+
+
 #endif /* H5_HAVE_PARALLEL */
 
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index 7f72c85..889cdc6 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -67,7 +67,7 @@
 #define H5F_ACS_DATA_CACHE_BYTE_SIZE_DEF        (1024*1024)
 /* Definition for preemption read chunks first */
 #define H5F_ACS_PREEMPT_READ_CHUNKS_SIZE        sizeof(double)
-#define H5F_ACS_PREEMPT_READ_CHUNKS_DEF         0.75
+#define H5F_ACS_PREEMPT_READ_CHUNKS_DEF         0.75f
 /* Definition for threshold for alignment */
 #define H5F_ACS_ALIGN_THRHD_SIZE                sizeof(hsize_t)
 #define H5F_ACS_ALIGN_THRHD_DEF                 1
@@ -145,12 +145,6 @@
 /* Local Prototypes */
 /********************/
 
-/* General routines */
-static herr_t H5P_set_family_offset(H5P_genplist_t *plist, hsize_t offset);
-static herr_t H5P_get_family_offset(H5P_genplist_t *plist, hsize_t *offset);
-static herr_t H5P_set_multi_type(H5P_genplist_t *plist, H5FD_mem_t type);
-static herr_t H5P_get_multi_type(H5P_genplist_t *plist, H5FD_mem_t *type);
-
 /* Property class callbacks */
 static herr_t H5P_facc_reg_prop(H5P_genclass_t *pclass);
 static herr_t H5P_facc_create(hid_t fapl_id, void *copy_data);
@@ -161,6 +155,7 @@ static herr_t H5P_file_image_info_del(hid_t prop_id, const char *name, size_t si
 static herr_t H5P_file_image_info_copy(const char *name, size_t size, void *value);
 static herr_t H5P_file_image_info_close(const char *name, size_t size, void *value);
 
+
 /*********************/
 /* Package Variables */
 /*********************/
@@ -168,6 +163,7 @@ static herr_t H5P_file_image_info_close(const char *name, size_t size, void *val
 /* File access property list class library initialization object */
 const H5P_libclass_t H5P_CLS_FACC[1] = {{
     "file access",		/* Class name for debugging     */
+    H5P_TYPE_FILE_ACCESS,       /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_FILE_ACCESS_g,	/* Pointer to class ID          */
     &H5P_LST_FILE_ACCESS_g,	/* Pointer to default property list ID */
@@ -233,88 +229,88 @@ H5P_facc_reg_prop(H5P_genclass_t *pclass)
 
     /* Register the initial metadata cache resize configuration */
     if(H5P_register_real(pclass, H5F_ACS_META_CACHE_INIT_CONFIG_NAME, H5F_ACS_META_CACHE_INIT_CONFIG_SIZE, &mdc_initCacheCfg, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the size of raw data chunk cache (elements) */
     if(H5P_register_real(pclass, H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME, H5F_ACS_DATA_CACHE_NUM_SLOTS_SIZE, &rdcc_nslots, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the size of raw data chunk cache(bytes) */
     if(H5P_register_real(pclass, H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME, H5F_ACS_DATA_CACHE_BYTE_SIZE_SIZE, &rdcc_nbytes, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the preemption for reading chunks */
     if(H5P_register_real(pclass, H5F_ACS_PREEMPT_READ_CHUNKS_NAME, H5F_ACS_PREEMPT_READ_CHUNKS_SIZE, &rdcc_w0, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the threshold for alignment */
     if(H5P_register_real(pclass, H5F_ACS_ALIGN_THRHD_NAME, H5F_ACS_ALIGN_THRHD_SIZE, &threshold, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the alignment */
     if(H5P_register_real(pclass, H5F_ACS_ALIGN_NAME, H5F_ACS_ALIGN_SIZE, &alignment, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the minimum metadata allocation block size */
     if(H5P_register_real(pclass, H5F_ACS_META_BLOCK_SIZE_NAME, H5F_ACS_META_BLOCK_SIZE_SIZE, &meta_block_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the maximum sieve buffer size */
     if(H5P_register_real(pclass, H5F_ACS_SIEVE_BUF_SIZE_NAME, H5F_ACS_SIEVE_BUF_SIZE_SIZE, &sieve_buf_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the minimum "small data" allocation block size */
     if(H5P_register_real(pclass, H5F_ACS_SDATA_BLOCK_SIZE_NAME, H5F_ACS_SDATA_BLOCK_SIZE_SIZE, &sdata_block_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the garbage collection reference */
     if(H5P_register_real(pclass, H5F_ACS_GARBG_COLCT_REF_NAME, H5F_ACS_GARBG_COLCT_REF_SIZE, &gc_ref, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the file driver ID */
     if(H5P_register_real(pclass, H5F_ACS_FILE_DRV_ID_NAME, H5F_ACS_FILE_DRV_ID_SIZE, &driver_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the file driver info */
     if(H5P_register_real(pclass, H5F_ACS_FILE_DRV_INFO_NAME, H5F_ACS_FILE_DRV_INFO_SIZE, &driver_info, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the file close degree */
     if(H5P_register_real(pclass, H5F_ACS_CLOSE_DEGREE_NAME, H5F_CLOSE_DEGREE_SIZE, &close_degree, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the offset of family driver info */
     if(H5P_register_real(pclass, H5F_ACS_FAMILY_OFFSET_NAME, H5F_ACS_FAMILY_OFFSET_SIZE, &family_offset, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the private property of new family file size. It's used by h5repart only. */
     if(H5P_register_real(pclass, H5F_ACS_FAMILY_NEWSIZE_NAME, H5F_ACS_FAMILY_NEWSIZE_SIZE, &family_newsize, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the private property of whether convert family to sec2 driver. It's used by h5repart only. */
     if(H5P_register_real(pclass, H5F_ACS_FAMILY_TO_SEC2_NAME, H5F_ACS_FAMILY_TO_SEC2_SIZE, &family_to_sec2, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the data type of multi driver info */
     if(H5P_register_real(pclass, H5F_ACS_MULTI_TYPE_NAME, H5F_ACS_MULTI_TYPE_SIZE, &mem_type, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the 'use the latest version of the format' flag */
     if(H5P_register_real(pclass, H5F_ACS_LATEST_FORMAT_NAME, H5F_ACS_LATEST_FORMAT_SIZE, &latest_format, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the private property of whether to retrieve the file descriptor from the core VFD */
     /* (used internally to the library only) */
     if(H5P_register_real(pclass, H5F_ACS_WANT_POSIX_FD_NAME, H5F_ACS_WANT_POSIX_FD_SIZE, &want_posix_fd, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the external file cache size */
     if(H5P_register_real(pclass, H5F_ACS_EFC_SIZE_NAME, H5F_ACS_EFC_SIZE_SIZE, &efc_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the initial file image info */
     if(H5P_register_real(pclass, H5F_ACS_FILE_IMAGE_INFO_NAME, H5F_ACS_FILE_IMAGE_INFO_SIZE, &file_image_info, NULL, NULL, NULL, H5F_ACS_FILE_IMAGE_INFO_DEL, H5F_ACS_FILE_IMAGE_INFO_COPY, NULL, H5F_ACS_FILE_IMAGE_INFO_CLOSE) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -513,18 +509,18 @@ H5Pset_alignment(hid_t fapl_id, hsize_t threshold, hsize_t alignment)
     H5TRACE3("e", "ihh", fapl_id, threshold, alignment);
 
     /* Check args */
-    if (alignment<1)
-        HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "alignment must be positive");
+    if(alignment < 1)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "alignment must be positive")
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set values */
     if(H5P_set(plist, H5F_ACS_ALIGN_THRHD_NAME, &threshold) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set threshold");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set threshold")
     if(H5P_set(plist, H5F_ACS_ALIGN_NAME, &alignment) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set alignment");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set alignment")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -543,47 +539,40 @@ done:
  * Programmer:	Robb Matzke
  *              Tuesday, June  9, 1998
  *
- * Modifications:
- *
- *		Raymond Lu
- *		Tuesday, Oct 23, 2001
- *		Changed the file access list design to the new generic
- *		property list.
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/,
-		  hsize_t *alignment/*out*/)
+    hsize_t *alignment/*out*/)
 {
-    H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t      ret_value = SUCCEED;       /* Return value */
+    H5P_genplist_t *plist;              /* Property list pointer */
+    herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE3("e", "ixx", fapl_id, threshold, alignment);
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get values */
-    if (threshold)
+    if(threshold)
         if(H5P_get(plist, H5F_ACS_ALIGN_THRHD_NAME, threshold) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get threshold");
-    if (alignment)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get threshold")
+    if(alignment)
         if(H5P_get(plist, H5F_ACS_ALIGN_NAME, alignment) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get alignment");
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get alignment")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_alignment() */
 
 
 /*-------------------------------------------------------------------------
  * Function:	H5P_set_driver
  *
- * Purpose:	Set the file driver (DRIVER_ID) for a file access or data
- *		transfer property list (PLIST_ID) and supply an optional
+ * Purpose:	Set the file driver (DRIVER_ID) for a file access 
+ *		property list (PLIST_ID) and supply an optional
  *		struct containing the driver-specific properites
  *		(DRIVER_INFO).  The driver properties will be copied into the
  *		property list and the reference count on the driver will be
@@ -591,19 +580,11 @@ done:
  *		still use the property list.
  *
  * Return:	Success:	Non-negative
- *
  *		Failure:	Negative
  *
  * Programmer:	Robb Matzke
  *              Tuesday, August  3, 1999
  *
- * Modifications:
- *
- * 		Raymond Lu
- * 		Tuesday, Oct 23, 2001
- *		Changed the file access list design to the new generic
- *		property list.
- *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -611,7 +592,7 @@ H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id, const void *new_drive
 {
     hid_t driver_id;            /* VFL driver ID */
     void *driver_info;          /* VFL driver info */
-    herr_t ret_value = SUCCEED;   /* Return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
@@ -626,29 +607,15 @@ H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id, const void *new_drive
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL,"can't get driver info")
 
         /* Close the driver for the property list */
-        if(H5FD_fapl_close(driver_id, driver_info)<0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver")
-
-        /* Set the driver for the property list */
-        if(H5FD_fapl_open(plist, new_driver_id, new_driver_info)<0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
-    } else if(TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER)) {
-        /* Get the current driver information */
-        if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver ID")
-        if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &driver_info) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver info")
-
-        /* Close the driver for the property list */
-        if(H5FD_dxpl_close(driver_id, driver_info) < 0)
+        if(H5FD_fapl_close(driver_id, driver_info) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver")
 
         /* Set the driver for the property list */
-        if(H5FD_dxpl_open(plist, new_driver_id, new_driver_info) < 0)
+        if(H5FD_fapl_open(plist, new_driver_id, new_driver_info) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
-    } else {
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list")
-    }
+    } /* end if */
+    else
+        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -658,8 +625,8 @@ done:
 /*-------------------------------------------------------------------------
  * Function:	H5Pset_driver
  *
- * Purpose:	Set the file driver (DRIVER_ID) for a file access or data
- *		transfer property list (PLIST_ID) and supply an optional
+ * Purpose:	Set the file driver (DRIVER_ID) for a file access 
+ *		property list (PLIST_ID) and supply an optional
  *		struct containing the driver-specific properites
  *		(DRIVER_INFO).  The driver properties will be copied into the
  *		property list and the reference count on the driver will be
@@ -667,19 +634,11 @@ done:
  *		still use the property list.
  *
  * Return:	Success:	Non-negative
- *
  *		Failure:	Negative
  *
  * Programmer:	Robb Matzke
  *              Tuesday, August  3, 1999
  *
- * Modifications:
- *
- * 		Raymond Lu
- * 		Tuesday, Oct 23, 2001
- *		Changed the file access list design to the new generic
- *		property list.
- *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -710,7 +669,7 @@ done:
  * Function:	H5P_get_driver
  *
  * Purpose:	Return the ID of the low-level file driver.  PLIST_ID should
- *		be a file access property list or data transfer propert list.
+ *		be a file access property list.
  *
  * Return:	Success:	A low-level driver ID which is the same ID
  *				used when the driver was set for the property
@@ -722,54 +681,36 @@ done:
  * Programmer:	Robb Matzke
  *		Thursday, February 26, 1998
  *
- * Modifications:
- *		Robb Matzke, 1999-08-03
- *		Rewritten to use the virtual file layer.
- *
- * 		Robb Matzke, 1999-08-05
- *		If the driver ID is H5FD_VFD_DEFAULT then substitute the
- *              current value of H5FD_SEC2.
- *
- * 		Quincey Koziol 2000-11-28
- *		Added internal function..
- *
- *		Raymond Lu, 2001-10-23
- *		Changed the file access list design to the new generic
- *		property list.
- *
  *-------------------------------------------------------------------------
  */
 hid_t
 H5P_get_driver(H5P_genplist_t *plist)
 {
-    hid_t	ret_value=FAIL;         /* Return value */
+    hid_t ret_value = FAIL;     /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
     /* Get the current driver ID */
-    if(TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
+    if(TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS)) {
         if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &ret_value) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID");
-    } else if( TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER) ) {
-        if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &ret_value)<0)
-            HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
-    } else {
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
-    }
-
-    if (H5FD_VFD_DEFAULT==ret_value)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID")
+    } /* end if */
+    else
+        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
+
+    if(H5FD_VFD_DEFAULT == ret_value)
         ret_value = H5_DEFAULT_VFD;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}
+} /* end H5P_get_driver() */
 
 
 /*-------------------------------------------------------------------------
  * Function:	H5Pget_driver
  *
  * Purpose:	Return the ID of the low-level file driver.  PLIST_ID should
- *		be a file access property list or data transfer propert list.
+ *		be a file access property list.
  *
  * Return:	Success:	A low-level driver ID which is the same ID
  *				used when the driver was set for the property
@@ -781,16 +722,6 @@ done:
  * Programmer:	Robb Matzke
  *		Thursday, February 26, 1998
  *
- * Modifications:
- *		Robb Matzke, 1999-08-03
- *		Rewritten to use the virtual file layer.
- *
- * 		Robb Matzke, 1999-08-05
- *		If the driver ID is H5FD_VFD_DEFAULT then substitute the current value of
- *		H5FD_SEC2.
- *
- * 		Quincey Koziol 2000-11-28
- *		Added internal function..
  *-------------------------------------------------------------------------
  */
 hid_t
@@ -805,7 +736,9 @@ H5Pget_driver(hid_t plist_id)
     if(NULL == (plist = (H5P_genplist_t *)H5I_object_verify(plist_id, H5I_GENPROP_LST)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
 
-    ret_value = H5P_get_driver(plist);
+    /* Get the driver */
+    if((ret_value = H5P_get_driver(plist)) < 0)
+         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -816,7 +749,7 @@ done:
  * Function:	H5P_get_driver_info
  *
  * Purpose:	Returns a pointer directly to the file driver-specific
- *		information of a file access or data transfer property list.
+ *		information of a file access.
  *
  * Return:	Success:	Ptr to *uncopied* driver specific data
  *				structure if any.
@@ -829,32 +762,22 @@ done:
  * Programmer:	Robb Matzke
  *              Wednesday, August  4, 1999
  *
- * Modifications:
- *
- *		Raymond Lu
- *		Tuesday, Oct 23, 2001
- *		Changed the file access list design to the new generic
- *		property list.
- *
  *-------------------------------------------------------------------------
  */
 void *
 H5P_get_driver_info(H5P_genplist_t *plist)
 {
-    void	*ret_value=NULL;
+    void *ret_value = NULL;     /* Return value */
 
     FUNC_ENTER_NOAPI(NULL)
 
     /* Get the current driver info */
-    if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
+    if(TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS)) {
         if(H5P_get(plist, H5F_ACS_FILE_DRV_INFO_NAME, &ret_value) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,NULL,"can't get driver info");
-    } else if( TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER) ) {
-        if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &ret_value)<0)
-            HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, NULL, "Can't retrieve VFL driver ID");
-    } else {
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access or data transfer property list");
-    }
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver info")
+    } /* end if */
+    else
+        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -865,7 +788,7 @@ done:
  * Function:	H5Pget_driver_info
  *
  * Purpose:	Returns a pointer directly to the file driver-specific
- *		information of a file access or data transfer property list.
+ *		information of a file access.
  *
  * Return:	Success:	Ptr to *uncopied* driver specific data
  *				structure if any.
@@ -878,26 +801,20 @@ done:
  * Programmer:	Robb Matzke
  *              Wednesday, August  4, 1999
  *
- * Modifications:
- *
- *		Raymond Lu
- *		Tuesday, Oct 23, 2001
- *		Changed the file access list design to the new generic
- *		property list.
- *
  *-------------------------------------------------------------------------
  */
 void *
 H5Pget_driver_info(hid_t plist_id)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    void	*ret_value;     /* Return value */
+    void *ret_value;            /* Return value */
 
     FUNC_ENTER_API(NULL)
 
     if(NULL == (plist = (H5P_genplist_t *)H5I_object_verify(plist_id, H5I_GENPROP_LST)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a property list")
 
+    /* Get the driver info */
     if(NULL == (ret_value = H5P_get_driver_info(plist)))
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver info")
 
@@ -914,73 +831,35 @@ done:
  *              to retrieve VFD file handle.
  *
  * Return:      Success:        Non-negative value.
- *
  *              Failure:        Negative value.
  *
  * Programmer:  Raymond Lu
  *              Sep 17, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
 */
 herr_t
 H5Pset_family_offset(hid_t fapl_id, hsize_t offset)
 {
     H5P_genplist_t      *plist;                 /* Property list pointer */
-    herr_t              ret_value = SUCCEED;      /* return value */
+    herr_t              ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "ih", fapl_id, offset);
 
     /* Get the plist structure */
     if(H5P_DEFAULT == fapl_id)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
-    if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
-         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
-    /* Set values */
-    if((ret_value=H5P_set_family_offset(plist, offset)) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set family offset");
-
-done:
-    FUNC_LEAVE_API(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function:    H5P_set_family_offset
- *
- * Purpose:     Set offset for family driver.  Private function for
- *              H5Pset_family_offset
- *
- * Return:      Success:        Non-negative value.
- *
- *              Failure:        Negative value.
- *
- * Programmer:  Raymond Lu
- *              Sep 17, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5P_set_family_offset(H5P_genplist_t *plist, hsize_t offset)
-{
-    herr_t      ret_value = SUCCEED;
-
-    FUNC_ENTER_NOAPI(FAIL)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list")
+    if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
-    if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
-         if(H5P_set(plist, H5F_ACS_FAMILY_OFFSET_NAME, &offset) < 0)
-              HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set offset for family file");
-    } else {
-         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
-    }
+    /* Set value */
+    if(H5P_set(plist, H5F_ACS_FAMILY_OFFSET_NAME, &offset) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set offset for family file")
 
 done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}
+    FUNC_LEAVE_API(ret_value)
+} /* end H5Pset_family_offset() */
 
 
 /*-------------------------------------------------------------------------
@@ -991,73 +870,37 @@ done:
  *              to retrieve VFD file handle.
  *
  * Return:      Success:        Non-negative value.
- *
  *              Failure:        Negative value.
  *
  * Programmer:  Raymond Lu
  *              Sep 17, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_family_offset(hid_t fapl_id, hsize_t *offset)
 {
     H5P_genplist_t      *plist;                 /* Property list pointer */
-    herr_t              ret_value = SUCCEED;      /* return value */
+    herr_t              ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "i*h", fapl_id, offset);
 
     /* Get the plist structure */
     if(H5P_DEFAULT == fapl_id)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
-    if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
-         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
-    /* Set values */
-    if((ret_value=H5P_get_family_offset(plist, offset)) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't get family offset");
-
-done:
-    FUNC_LEAVE_API(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function:    H5P_get_family_offset
- *
- * Purpose:     Get offset for family driver.  Private function for
- *              H5Pget_family_offset
- *
- * Return:      Success:        Non-negative value.
- *
- *              Failure:        Negative value.
- *
- * Programmer:  Raymond Lu
- *              Sep 17, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5P_get_family_offset(H5P_genplist_t *plist, hsize_t *offset)
-{
-    herr_t      ret_value = SUCCEED;
-
-    FUNC_ENTER_NOAPI(FAIL)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list")
+    if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
-    if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
+    /* Get value */
+    if(offset) {
         if(H5P_get(plist, H5F_ACS_FAMILY_OFFSET_NAME, offset) < 0)
-             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set offset for family file");
-    } else {
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
-    }
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set offset for family file")
+    } /* end if */
 
 done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}
+    FUNC_LEAVE_API(ret_value)
+} /* end H5Pget_family_offset() */
 
 
 /*-------------------------------------------------------------------------
@@ -1068,14 +911,11 @@ done:
  *              to retrieve VFD file handle.
  *
  * Return:      Success:        Non-negative value.
- *
  *              Failure:        Negative value.
  *
  * Programmer:  Raymond Lu
  *              Sep 17, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -1089,52 +929,17 @@ H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type)
 
     /* Get the plist structure */
     if(H5P_DEFAULT == fapl_id)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
-    if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
-         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
-    /* Set values */
-    if((ret_value=H5P_set_multi_type(plist, type)) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set data type for multi driver");
-
-done:
-    FUNC_LEAVE_API(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function:    H5P_set_multi_type
- *
- * Purpose:     Set data type for multi file driver.  Private function for
- *              H5Pset_multi_type.
- *
- * Return:      Success:        Non-negative value.
- *
- *              Failure:        Negative value.
- *
- * Programmer:  Raymond Lu
- *              Sep 17, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5P_set_multi_type(H5P_genplist_t *plist, H5FD_mem_t type)
-{
-    herr_t      ret_value = SUCCEED;
-
-    FUNC_ENTER_NOAPI(FAIL)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list")
+    if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
-    if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
-         if(H5P_set(plist, H5F_ACS_MULTI_TYPE_NAME, &type) < 0)
-                HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set type for multi driver");
-    } else {
-         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
-    }
+    /* Set value */
+     if(H5P_set(plist, H5F_ACS_MULTI_TYPE_NAME, &type) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set type for multi driver")
 
 done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}
+    FUNC_LEAVE_API(ret_value)
+} /* end H5Pset_multi_type() */
 
 
 /*-------------------------------------------------------------------------
@@ -1145,73 +950,37 @@ done:
  *              to retrieve VFD file handle.
  *
  * Return:      Success:        Non-negative value.
- *
  *              Failure:        Negative value.
  *
  * Programmer:  Raymond Lu
  *              Sep 17, 2002
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type)
 {
     H5P_genplist_t      *plist;                 /* Property list pointer */
-    herr_t              ret_value = SUCCEED;      /* return value */
+    herr_t              ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "i*Mt", fapl_id, type);
 
     /* Get the plist structure */
     if(H5P_DEFAULT == fapl_id)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
-    if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
-         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
-    /* Set values */
-    if((ret_value=H5P_get_multi_type(plist, type)) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't get data type for multi driver");
-
-done:
-    FUNC_LEAVE_API(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function:    H5P_get_multi_type
- *
- * Purpose:     Get data type for multi file driver.  Private function for
- *              H5Pget_multi_type.
- *
- * Return:      Success:        Non-negative value.
- *
- *              Failure:        Negative value.
- *
- * Programmer:  Raymond Lu
- *              Sep 17, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5P_get_multi_type(H5P_genplist_t *plist, H5FD_mem_t *type)
-{
-    herr_t      ret_value = SUCCEED;
-
-    FUNC_ENTER_NOAPI(FAIL)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list")
+    if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
-    if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
-         if(H5P_get(plist, H5F_ACS_MULTI_TYPE_NAME, type) < 0)
-             HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't get type for multi driver");
-    } else {
-         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
-    }
+    /* Get value */
+    if(type) {
+        if(H5P_get(plist, H5F_ACS_MULTI_TYPE_NAME, type) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't get type for multi driver")
+    } /* end if */
 
 done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}
+    FUNC_LEAVE_API(ret_value)
+} /* end H5Pget_multi_type() */
 
 
 /*-------------------------------------------------------------------------
@@ -1234,17 +1003,6 @@ done:
  * Programmer:	Robb Matzke
  *              Tuesday, May 19, 1998
  *
- * Modifications:
- *
- *		Raymond Lu
- *		Tuesday, Oct 23, 2001
- *		Changed the file access list to the new generic property list.
- *
- *		J. Mainzer
- *		Thurs. 3/17/05
- *		The mdc_nelmts entry is no more in the FAPL, so I modified
- * 		the code to ignore it.
- *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -1259,24 +1017,24 @@ H5Pset_cache(hid_t plist_id, int UNUSED mdc_nelmts,
              rdcc_w0);
 
     /* Check arguments */
-    if (rdcc_w0<0.0 || rdcc_w0>1.0)
-        HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "raw data cache w0 value must be between 0.0 and 1.0 inclusive");
+    if(rdcc_w0 < 0.0 || rdcc_w0 > 1.0)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "raw data cache w0 value must be between 0.0 and 1.0 inclusive")
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set sizes */
     if(H5P_set(plist, H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME, &rdcc_nslots) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache number of slots");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache number of slots")
     if(H5P_set(plist, H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME, &rdcc_nbytes) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache byte size");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache byte size")
     if(H5P_set(plist, H5F_ACS_PREEMPT_READ_CHUNKS_NAME, &rdcc_w0) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set preempt read chunks");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set preempt read chunks")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pset_cache() */
 
 
 /*-------------------------------------------------------------------------
@@ -1293,18 +1051,6 @@ done:
  * Programmer:	Robb Matzke
  *              Tuesday, May 19, 1998
  *
- * Modifications:
- *
- *		Raymond Lu
- *		Tuesday, Oct 23, 2001
- *		Changed the file access list to the new generic property
- *		list.
- *
- *		J Mainzer
- *		Thurs, 3/17/05
- *		The mdc_nelmts fapl entry is no more, so we now just
- *		return a constant when that value is requested.
- *
  *-------------------------------------------------------------------------
  */
 herr_t
@@ -1320,27 +1066,27 @@ H5Pget_cache(hid_t plist_id, int *mdc_nelmts,
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get sizes */
 
     /* the mdc_nelmts FAPL entry no longer exists, so just return a constant */
-    if (mdc_nelmts)
+    if(mdc_nelmts)
         *mdc_nelmts = 0;
 
-    if (rdcc_nslots)
+    if(rdcc_nslots)
         if(H5P_get(plist, H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME, rdcc_nslots) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get data cache number of slots");
-    if (rdcc_nbytes)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get data cache number of slots")
+    if(rdcc_nbytes)
         if(H5P_get(plist, H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME, rdcc_nbytes) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get data cache byte size");
-    if (rdcc_w0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get data cache byte size")
+    if(rdcc_w0)
         if(H5P_get(plist, H5F_ACS_PREEMPT_READ_CHUNKS_NAME, rdcc_w0) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get preempt read chunks");
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get preempt read chunks")
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Pget_cache() */
 
 
 /*-------------------------------------------------------------------------
@@ -1480,11 +1226,11 @@ H5Pset_gc_references(hid_t plist_id, unsigned gc_ref)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set values */
     if(H5P_set(plist, H5F_ACS_GARBG_COLCT_REF_NAME, &gc_ref) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set garbage collect reference");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set garbage collect reference")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1522,12 +1268,12 @@ H5Pget_gc_references(hid_t plist_id, unsigned *gc_ref/*out*/)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get values */
-    if (gc_ref)
+    if(gc_ref)
         if(H5P_get(plist, H5F_ACS_GARBG_COLCT_REF_NAME, gc_ref) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get garbage collect reference");
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get garbage collect reference")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1645,11 +1391,11 @@ H5Pset_meta_block_size(hid_t plist_id, hsize_t size)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set values */
     if(H5P_set(plist, H5F_ACS_META_BLOCK_SIZE_NAME, &size) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set meta data block size");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set meta data block size")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1687,12 +1433,12 @@ H5Pget_meta_block_size(hid_t plist_id, hsize_t *size/*out*/)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get values */
-    if (size) {
+    if(size) {
         if(H5P_get(plist, H5F_ACS_META_BLOCK_SIZE_NAME, size) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get meta data block size");
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get meta data block size")
     } /* end if */
 
 done:
@@ -1740,11 +1486,11 @@ H5Pset_sieve_buf_size(hid_t plist_id, size_t size)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set values */
     if(H5P_set(plist, H5F_ACS_SIEVE_BUF_SIZE_NAME, &size) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set sieve buffer size");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set sieve buffer size")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1782,12 +1528,12 @@ H5Pget_sieve_buf_size(hid_t plist_id, size_t *size/*out*/)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get values */
-    if (size)
+    if(size)
         if(H5P_get(plist, H5F_ACS_SIEVE_BUF_SIZE_NAME, size) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get sieve buffer size");
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get sieve buffer size")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1829,11 +1575,11 @@ H5Pset_small_data_block_size(hid_t plist_id, hsize_t size)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set values */
     if(H5P_set(plist, H5F_ACS_SDATA_BLOCK_SIZE_NAME, &size) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set 'small data' block size");
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set 'small data' block size")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1866,12 +1612,12 @@ H5Pget_small_data_block_size(hid_t plist_id, hsize_t *size/*out*/)
 
     /* Get the plist structure */
     if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
-        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+        HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get values */
-    if (size) {
+    if(size) {
         if(H5P_get(plist, H5F_ACS_SDATA_BLOCK_SIZE_NAME, size) < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get 'small data' block size");
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get 'small data' block size")
     } /* end if */
 
 done:
@@ -2143,7 +1889,7 @@ H5Pset_file_image(hid_t fapl_id, void *buf_ptr, size_t buf_len)
 
     /* validate parameters */
     if(!(((buf_ptr == NULL) && (buf_len == 0)) || ((buf_ptr != NULL) && (buf_len > 0))))
-        HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "inconsistant buf_ptr and buf_len");
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "inconsistant buf_ptr and buf_len")
    
     /* Get the plist structure */
     if(NULL == (fapl = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
@@ -2493,12 +2239,13 @@ done:
 herr_t
 H5P_file_image_info_copy(const char UNUSED *name, size_t UNUSED size, void *value)
 {
-    H5FD_file_image_info_t *info;       /* Image info struct */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
     if(value) {
+        H5FD_file_image_info_t *info;   /* Image info struct */
+
         info = (H5FD_file_image_info_t *)value;
 
         /* verify file image field consistancy */
@@ -2532,16 +2279,17 @@ H5P_file_image_info_copy(const char UNUSED *name, size_t UNUSED size, void *valu
 	    else
                 HDmemcpy(info->buffer, old_buffer, info->size);
         } /* end if */
-    } /* end if */
 
-    /* Copy udata if it exists */
-    if(info->callbacks.udata) {
-        void *old_udata = info->callbacks.udata;
+        /* Copy udata if it exists */
+        if(info->callbacks.udata) {
+            void *old_udata = info->callbacks.udata;
+
+            if(NULL == info->callbacks.udata_copy)
+                HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "udata_copy not defined")
 
-        if(NULL == info->callbacks.udata_copy)
-            HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "udata_copy not defined")
+            info->callbacks.udata = info->callbacks.udata_copy(old_udata);
+        } /* end if */
 
-        info->callbacks.udata = info->callbacks.udata_copy(old_udata);
     } /* end if */
 
 done:
@@ -2566,32 +2314,33 @@ done:
 herr_t
 H5P_file_image_info_close(const char UNUSED *name, size_t UNUSED size, void *value)
 {
-    H5FD_file_image_info_t info;        /* Image info struct */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
     if(value) {
-        info = *(H5FD_file_image_info_t *)value;
+        H5FD_file_image_info_t *info;        /* Image info struct */
+
+        info = (H5FD_file_image_info_t *)value;
              
-        if(info.buffer != NULL && info.size > 0) { 
+        if(info->buffer != NULL && info->size > 0) { 
             /* Free buffer */
-            if(info.callbacks.image_free) {
-                if(info.callbacks.image_free(info.buffer, H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE,
-                        info.callbacks.udata) < 0)
+            if(info->callbacks.image_free) {
+                if(info->callbacks.image_free(info->buffer, H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE,
+                        info->callbacks.udata) < 0)
 		    HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, FAIL, "image_free callback failed")
             } /* end if */
             else
-                H5MM_xfree(info.buffer);
+                H5MM_xfree(info->buffer);
         } /* end if */
-    } /* end if */
 
-    /* Free udata if it exists */
-    if(info.callbacks.udata) {
-        if(NULL == info.callbacks.udata_free)
-            HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "udata_free not defined")
-        if(info.callbacks.udata_free(info.callbacks.udata) < 0)
-            HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, FAIL, "udata_free callback failed")
+        /* Free udata if it exists */
+        if(info->callbacks.udata) {
+            if(NULL == info->callbacks.udata_free)
+                HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "udata_free not defined")
+            if(info->callbacks.udata_free(info->callbacks.udata) < 0)
+                HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, FAIL, "udata_free callback failed")
+        } /* end if */
     } /* end if */
 
 done:
diff --git a/src/H5Pfcpl.c b/src/H5Pfcpl.c
index b30cc49..e1f83b0 100644
--- a/src/H5Pfcpl.c
+++ b/src/H5Pfcpl.c
@@ -94,6 +94,7 @@
 /* Property class callbacks */
 static herr_t H5P_fcrt_reg_prop(H5P_genclass_t *pclass);
 
+
 /*********************/
 /* Package Variables */
 /*********************/
@@ -101,6 +102,7 @@ static herr_t H5P_fcrt_reg_prop(H5P_genclass_t *pclass);
 /* File creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_FCRT[1] = {{
     "file create",		/* Class name for debugging     */
+    H5P_TYPE_FILE_CREATE,       /* Class type                   */
     &H5P_CLS_GROUP_CREATE_g,	/* Parent class ID              */
     &H5P_CLS_FILE_CREATE_g,	/* Pointer to class ID          */
     &H5P_LST_FILE_CREATE_g,	/* Pointer to default property list ID */
@@ -156,41 +158,42 @@ H5P_fcrt_reg_prop(H5P_genclass_t *pclass)
 
     /* Register the user block size */
     if(H5P_register_real(pclass, H5F_CRT_USER_BLOCK_NAME, H5F_CRT_USER_BLOCK_SIZE, &userblock_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the 1/2 rank for symbol table leaf nodes */
     if(H5P_register_real(pclass, H5F_CRT_SYM_LEAF_NAME, H5F_CRT_SYM_LEAF_SIZE, &sym_leaf_k, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the 1/2 rank for btree internal nodes */
     if(H5P_register_real(pclass, H5F_CRT_BTREE_RANK_NAME, H5F_CRT_BTREE_RANK_SIZE, btree_k, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the byte number for an address */
     if(H5P_register_real(pclass, H5F_CRT_ADDR_BYTE_NUM_NAME, H5F_CRT_ADDR_BYTE_NUM_SIZE, &sizeof_addr, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the byte number for object size */
     if(H5P_register_real(pclass, H5F_CRT_OBJ_BYTE_NUM_NAME, H5F_CRT_OBJ_BYTE_NUM_SIZE, &sizeof_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the superblock version number */
     if(H5P_register_real(pclass, H5F_CRT_SUPER_VERS_NAME, H5F_CRT_SUPER_VERS_SIZE, &superblock_ver, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the shared OH message information */
     if(H5P_register_real(pclass,H5F_CRT_SHMSG_NINDEXES_NAME, H5F_CRT_SHMSG_NINDEXES_SIZE, &num_sohm_indexes,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
     if(H5P_register_real(pclass,H5F_CRT_SHMSG_INDEX_TYPES_NAME, H5F_CRT_SHMSG_INDEX_TYPES_SIZE, &sohm_index_flags,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
     if(H5P_register_real(pclass,H5F_CRT_SHMSG_INDEX_MINSIZE_NAME, H5F_CRT_SHMSG_INDEX_MINSIZE_SIZE, &sohm_index_minsizes,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the shared OH cutoff size information */
     if(H5P_register_real(pclass,H5F_CRT_SHMSG_LIST_MAX_NAME, H5F_CRT_SHMSG_LIST_MAX_SIZE, &sohm_list_max,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
     if(H5P_register_real(pclass,H5F_CRT_SHMSG_BTREE_MIN_NAME, H5F_CRT_SHMSG_BTREE_MIN_SIZE, &sohm_btree_min,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5Pfmpl.c b/src/H5Pfmpl.c
index 7828fb2..0158bf1 100644
--- a/src/H5Pfmpl.c
+++ b/src/H5Pfmpl.c
@@ -74,6 +74,7 @@ static herr_t H5P_fmnt_reg_prop(H5P_genclass_t *pclass);
 /* File mount property list class library initialization object */
 const H5P_libclass_t H5P_CLS_FMNT[1] = {{
     "file mount",		/* Class name for debugging     */
+    H5P_TYPE_FILE_MOUNT,        /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_FILE_MOUNT_g,	/* Pointer to class ID          */
     &H5P_LST_FILE_MOUNT_g,	/* Pointer to default property list ID */
diff --git a/src/H5Pgcpl.c b/src/H5Pgcpl.c
index 983929d..394cf8b 100644
--- a/src/H5Pgcpl.c
+++ b/src/H5Pgcpl.c
@@ -58,7 +58,7 @@
 /********************/
 
 /* Property class callbacks */
-static herr_t H5P_gcrt_reg_prop(H5P_genclass_t *pclass);
+static herr_t H5P__gcrt_reg_prop(H5P_genclass_t *pclass);
 
 
 /*********************/
@@ -68,10 +68,11 @@ static herr_t H5P_gcrt_reg_prop(H5P_genclass_t *pclass);
 /* Group creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_GCRT[1] = {{
     "group create",		/* Class name for debugging     */
+    H5P_TYPE_GROUP_CREATE,      /* Class type                   */
     &H5P_CLS_OBJECT_CREATE_g,	/* Parent class ID              */
     &H5P_CLS_GROUP_CREATE_g,	/* Pointer to class ID          */
     &H5P_LST_GROUP_CREATE_g,	/* Pointer to default property list ID */
-    H5P_gcrt_reg_prop,		/* Default property registration routine */
+    H5P__gcrt_reg_prop,		/* Default property registration routine */
     NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
     NULL,			/* Class copy callback          */
@@ -93,7 +94,7 @@ const H5P_libclass_t H5P_CLS_GCRT[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_gcrt_reg_prop
+ * Function:    H5P__gcrt_reg_prop
  *
  * Purpose:     Initialize the group creation property list class
  *
@@ -104,25 +105,25 @@ const H5P_libclass_t H5P_CLS_GCRT[1] = {{
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_gcrt_reg_prop(H5P_genclass_t *pclass)
+H5P__gcrt_reg_prop(H5P_genclass_t *pclass)
 {
     H5O_ginfo_t ginfo = H5G_CRT_GROUP_INFO_DEF;     /* Default group info settings */
     H5O_linfo_t linfo = H5G_CRT_LINK_INFO_DEF;      /* Default link info settings */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Register group info property */
     if(H5P_register_real(pclass, H5G_CRT_GROUP_INFO_NAME, H5G_CRT_GROUP_INFO_SIZE, &ginfo, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register link info property */
     if(H5P_register_real(pclass, H5G_CRT_LINK_INFO_NAME, H5G_CRT_LINK_INFO_SIZE, &linfo, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_gcrt_reg_prop() */
+} /* end H5P__gcrt_reg_prop() */
 
 
 /*-------------------------------------------------------------------------
@@ -155,7 +156,7 @@ H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get group info")
 
     /* Update field */
-    ginfo.lheap_size_hint = size_hint;
+    H5_ASSIGN_OVERFLOW(ginfo.lheap_size_hint, size_hint, size_t, uint32_t);
 
     /* Set value */
     if(H5P_set(plist, H5G_CRT_GROUP_INFO_NAME, &ginfo) < 0)
diff --git a/src/H5Pint.c b/src/H5Pint.c
index 46a06a0..57fe001 100644
--- a/src/H5Pint.c
+++ b/src/H5Pint.c
@@ -38,6 +38,7 @@
 #include "H5MMprivate.h"	/* Memory management			*/
 #include "H5Ppkg.h"		/* Property lists		  	*/
 
+
 /****************/
 /* Local Macros */
 /****************/
@@ -54,6 +55,30 @@ typedef struct {
     H5P_genclass_t *new_class;          /* Pointer to class during path traversal */
 } H5P_check_class_t;
 
+/* Typedef for property list iterator callback */
+typedef struct {
+    H5P_iterate_int_t cb_func;  /* Iterator callback */
+    void *udata;                /* Iterator callback pointer */
+    const H5P_genplist_t *plist;      /* Property list pointer */
+    H5SL_t *seen;               /* Skip list to hold names of properties already seen */
+    int *curr_idx_ptr;          /* Pointer to current iteration index */
+    int prev_idx;               /* Previous iteration index */
+} H5P_iter_plist_ud_t;
+
+/* Typedef for property list class iterator callback */
+typedef struct {
+    H5P_iterate_int_t cb_func;  /* Iterator callback */
+    void *udata;                /* Iterator callback pointer */
+    int *curr_idx_ptr;          /* Pointer to current iteration index */
+    int prev_idx;               /* Previous iteration index */
+} H5P_iter_pclass_ud_t;
+
+/* Typedef for property list comparison callback */
+typedef struct {
+    const H5P_genplist_t *plist2;       /* Pointer to second property list */
+    int cmp_value;              /* Value from property comparison */
+} H5P_plist_cmp_ud_t;
+
 
 /********************/
 /* Local Prototypes */
@@ -113,6 +138,7 @@ hid_t H5P_LST_LINK_ACCESS_g         = FAIL;
 /* Root property list class library initialization object */
 const H5P_libclass_t H5P_CLS_ROOT[1] = {{
     "root",			/* Class name for debugging     */
+    H5P_TYPE_ROOT,              /* Class type                   */
     NULL,			/* Parent class ID              */
     &H5P_CLS_ROOT_g,		/* Pointer to class ID          */
     NULL,			/* Pointer to default property list ID */
@@ -129,6 +155,7 @@ const H5P_libclass_t H5P_CLS_ROOT[1] = {{
 /* (move to proper source code file when used for real) */
 const H5P_libclass_t H5P_CLS_GACC[1] = {{
     "group access",		/* Class name for debugging     */
+    H5P_TYPE_GROUP_ACCESS,      /* Class type                   */
     &H5P_CLS_LINK_ACCESS_g,	/* Parent class ID              */
     &H5P_CLS_GROUP_ACCESS_g,	/* Pointer to class ID          */
     &H5P_LST_GROUP_ACCESS_g,	/* Pointer to default property list ID */
@@ -145,6 +172,7 @@ const H5P_libclass_t H5P_CLS_GACC[1] = {{
 /* (move to proper source code file when used for real) */
 const H5P_libclass_t H5P_CLS_TCRT[1] = {{
     "datatype create",		/* Class name for debugging     */
+    H5P_TYPE_DATATYPE_CREATE,   /* Class type                   */
     &H5P_CLS_OBJECT_CREATE_g,	/* Parent class ID              */
     &H5P_CLS_DATATYPE_CREATE_g,	/* Pointer to class ID          */
     &H5P_LST_DATATYPE_CREATE_g,	/* Pointer to default property list ID */
@@ -161,6 +189,7 @@ const H5P_libclass_t H5P_CLS_TCRT[1] = {{
 /* (move to proper source code file when used for real) */
 const H5P_libclass_t H5P_CLS_TACC[1] = {{
     "datatype access",		/* Class name for debugging     */
+    H5P_TYPE_DATATYPE_ACCESS,   /* Class type                   */
     &H5P_CLS_LINK_ACCESS_g,	/* Parent class ID              */
     &H5P_CLS_DATATYPE_ACCESS_g,	/* Pointer to class ID          */
     &H5P_LST_DATATYPE_ACCESS_g,	/* Pointer to default property list ID */
@@ -236,6 +265,25 @@ H5FL_DEFINE_STATIC(H5P_genprop_t);
 /* Declare a free list to manage the H5P_genplist_t struct */
 H5FL_DEFINE_STATIC(H5P_genplist_t);
 
+/* Generic Property Class ID class */
+static const H5I_class_t H5I_GENPROPCLS_CLS[1] = {{
+    H5I_GENPROP_CLS,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5P_close_class	/* Callback routine for closing objects of this class */
+}};
+
+/* Generic Property List ID class */
+static const H5I_class_t H5I_GENPROPLST_CLS[1] = {{
+    H5I_GENPROP_LST,		/* ID class value */
+    0,				/* Class flags */
+    128,			/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    (H5I_free_t)H5P_close	/* Callback routine for closing objects of this class */
+}};
+
+
 
 /*--------------------------------------------------------------------------
  NAME
@@ -357,9 +405,9 @@ H5P_init_interface(void)
     /*
      * Initialize the Generic Property class & object groups.
      */
-    if(H5I_register_type(H5I_GENPROP_CLS, (size_t)H5I_GENPROPCLS_HASHSIZE, 0, (H5I_free_t)H5P_close_class) < 0)
+    if(H5I_register_type(H5I_GENPROPCLS_CLS) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, "unable to initialize ID group")
-    if(H5I_register_type(H5I_GENPROP_LST, (size_t)H5I_GENPROPOBJ_HASHSIZE, 0, (H5I_free_t)H5P_close) < 0)
+    if(H5I_register_type(H5I_GENPROPLST_CLS) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, "unable to initialize ID group")
 
     /* Repeatedly pass over the list of property list classes for the library,
@@ -395,7 +443,7 @@ H5P_init_interface(void)
                 } /* end if */
 
                 /* Allocate the new class */
-                if(NULL == (new_pclass = H5P_create_class(par_pclass, lib_class->name, 1, lib_class->create_func, lib_class->create_data, lib_class->copy_func, lib_class->copy_data, lib_class->close_func, lib_class->close_data)))
+                if(NULL == (new_pclass = H5P_create_class(par_pclass, lib_class->name, lib_class->type, lib_class->create_func, lib_class->create_data, lib_class->copy_func, lib_class->copy_data, lib_class->close_func, lib_class->close_data)))
                     HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "class initialization failed")
 
                 /* Call routine to register properties for class */
@@ -561,11 +609,11 @@ H5P_copy_pclass(H5P_genclass_t *pclass)
      */
 
     /* Create the new property list class */
-    if(NULL==(new_pclass=H5P_create_class(pclass->parent, pclass->name, 0, pclass->create_func, pclass->create_data, pclass->copy_func, pclass->copy_data, pclass->close_func, pclass->close_data)))
+    if(NULL == (new_pclass = H5P_create_class(pclass->parent, pclass->name, pclass->type, pclass->create_func, pclass->create_data, pclass->copy_func, pclass->copy_data, pclass->close_func, pclass->close_data)))
         HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, NULL, "unable to create property list class")
 
     /* Copy the properties registered for this class */
-    if(pclass->nprops>0) {
+    if(pclass->nprops > 0) {
         H5SL_node_t *curr_node;   /* Current node in skip list */
 
         /* Walk through the properties in the old class */
@@ -954,17 +1002,17 @@ H5P_create_prop(const char *name, size_t size, H5P_prop_within_t type,
     H5P_prp_copy_func_t prp_copy, H5P_prp_compare_func_t prp_cmp,
     H5P_prp_close_func_t prp_close)
 {
-    H5P_genprop_t *prop=NULL;        /* Pointer to new property copied */
+    H5P_genprop_t *prop = NULL;        /* Pointer to new property copied */
     H5P_genprop_t *ret_value;        /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
     HDassert(name);
-    HDassert((size>0 && value!=NULL) || (size==0));
-    HDassert(type!=H5P_PROP_WITHIN_UNKNOWN);
+    HDassert((size > 0 && value != NULL) || (size == 0));
+    HDassert(type != H5P_PROP_WITHIN_UNKNOWN);
 
     /* Allocate the new property */
-    if(NULL==(prop = H5FL_MALLOC (H5P_genprop_t)))
+    if(NULL == (prop = H5FL_MALLOC(H5P_genprop_t)))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
     /* Set the property initial values */
@@ -974,37 +1022,37 @@ H5P_create_prop(const char *name, size_t size, H5P_prop_within_t type,
     prop->type = type;
 
     /* Duplicate value, if it exists */
-    if(value!=NULL) {
-        if(NULL==(prop->value = H5MM_malloc (prop->size)))
+    if(value != NULL) {
+        if(NULL == (prop->value = H5MM_malloc (prop->size)))
             HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
-        HDmemcpy(prop->value,value,prop->size);
+        HDmemcpy(prop->value, value, prop->size);
     } /* end if */
     else
-        prop->value=NULL;
+        prop->value = NULL;
 
     /* Set the function pointers */
-    prop->create=prp_create;
-    prop->set=prp_set;
-    prop->get=prp_get;
-    prop->del=prp_delete;
-    prop->copy=prp_copy;
+    prop->create = prp_create;
+    prop->set = prp_set;
+    prop->get = prp_get;
+    prop->del = prp_delete;
+    prop->copy = prp_copy;
     /* Use custom comparison routine if available, otherwise default to memcmp() */
-    if(prp_cmp!=NULL)
-        prop->cmp=prp_cmp;
+    if(prp_cmp != NULL)
+        prop->cmp = prp_cmp;
     else
-        prop->cmp=&memcmp;
-    prop->close=prp_close;
+        prop->cmp = &memcmp;
+    prop->close = prp_close;
 
     /* Set return value */
-    ret_value=prop;
+    ret_value = prop;
 
 done:
     /* Free any resources allocated */
-    if(ret_value==NULL) {
-        if(prop!=NULL) {
-            if(prop->name!=NULL)
+    if(ret_value == NULL) {
+        if(prop != NULL) {
+            if(prop->name != NULL)
                 H5MM_xfree(prop->name);
-            if(prop->value!=NULL)
+            if(prop->value != NULL)
                 H5MM_xfree(prop->value);
             prop = H5FL_FREE(H5P_genprop_t, prop);
         } /* end if */
@@ -1054,12 +1102,12 @@ done:
 
 /*--------------------------------------------------------------------------
  NAME
-    H5P_find_prop_plist
+    H5P__find_prop_plist
  PURPOSE
     Internal routine to check for a property in a property list's skip list
  USAGE
     H5P_genprop_t *H5P_find_prop(plist, name)
-        H5P_genplist_t *plist;  IN: Pointer to property list to check
+        const H5P_genplist_t *plist;  IN: Pointer to property list to check
         const char *name;       IN: Name of property to check for
  RETURNS
     Returns pointer to property on success, NULL on failure.
@@ -1070,12 +1118,12 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-static H5P_genprop_t *
-H5P_find_prop_plist(H5P_genplist_t *plist, const char *name)
+H5P_genprop_t *
+H5P__find_prop_plist(const H5P_genplist_t *plist, const char *name)
 {
     H5P_genprop_t *ret_value;   /* Property pointer return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     HDassert(plist);
     HDassert(name);
@@ -1109,7 +1157,7 @@ H5P_find_prop_plist(H5P_genplist_t *plist, const char *name)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5P_find_prop_plist() */
+}   /* H5P__find_prop_plist() */
 
 
 /*--------------------------------------------------------------------------
@@ -1410,11 +1458,11 @@ H5P_open_class_path_cb(void *_obj, hid_t UNUSED id, void *_key)
  PURPOSE
     Internal routine to create a new property list class.
  USAGE
-    H5P_genclass_t H5P_create_class(par_class, name, internal,
+    H5P_genclass_t H5P_create_class(par_class, name, type,
                 cls_create, create_data, cls_close, close_data)
         H5P_genclass_t *par_class;  IN: Pointer to parent class
         const char *name;       IN: Name of class we are creating
-        hbool_t internal;       IN: Whether this is an internal class or not
+        H5P_plist_type_t type;  IN: Type of class we are creating
         H5P_cls_create_func_t;  IN: The callback function to call when each
                                     property list in this class is created.
         void *create_data;      IN: Pointer to user data to pass along to class
@@ -1438,7 +1486,7 @@ H5P_open_class_path_cb(void *_obj, hid_t UNUSED id, void *_key)
  REVISION LOG
 --------------------------------------------------------------------------*/
 H5P_genclass_t *
-H5P_create_class(H5P_genclass_t *par_class, const char *name, hbool_t internal,
+H5P_create_class(H5P_genclass_t *par_class, const char *name, H5P_plist_type_t type,
     H5P_cls_create_func_t cls_create, void *create_data,
     H5P_cls_copy_func_t cls_copy, void *copy_data,
     H5P_cls_close_func_t cls_close, void *close_data)
@@ -1451,7 +1499,7 @@ H5P_create_class(H5P_genclass_t *par_class, const char *name, hbool_t internal,
     HDassert(name);
     /* Allow internal classes to break some rules */
     /* (This allows the root of the tree to be created with this routine -QAK) */
-    if(!internal)
+    if(type == H5P_TYPE_USER)
         HDassert(par_class);
 
     /* Allocate room for the class */
@@ -1462,11 +1510,11 @@ H5P_create_class(H5P_genclass_t *par_class, const char *name, hbool_t internal,
     pclass->parent = par_class;
     if(NULL == (pclass->name = H5MM_xstrdup(name)))
         HGOTO_ERROR(H5E_PLIST, H5E_CANTALLOC, NULL, "propery list class name allocation failed")
+    pclass->type = type;
     pclass->nprops = 0;     /* Classes are created without properties initially */
     pclass->plists = 0;     /* No properties lists of this class yet */
     pclass->classes = 0;    /* No classes derived from this class yet */
     pclass->ref_count = 1;  /* This is the first reference to the new class */
-    pclass->internal = internal;
     pclass->deleted = FALSE;    /* Not deleted yet... :-) */
     pclass->revision = H5P_GET_NEXT_REV;        /* Get a revision number for the class */
 
@@ -2103,7 +2151,7 @@ H5P_register(H5P_genclass_t **ppclass, const char *name, size_t size,
      */
     if(pclass->plists > 0 || pclass->classes > 0) {
         if(NULL == (new_class = H5P_create_class(pclass->parent, pclass->name,
-                pclass->internal, pclass->create_func, pclass->create_data,
+                pclass->type, pclass->create_func, pclass->create_data,
                 pclass->copy_func, pclass->copy_data,
                 pclass->close_func, pclass->close_data)))
             HGOTO_ERROR(H5E_PLIST, H5E_CANTCOPY, FAIL, "can't copy class")
@@ -2314,9 +2362,14 @@ H5P_insert(H5P_genplist_t *plist, const char *name, size_t size,
 
     /* Check if the property has been deleted */
     if(NULL != H5SL_search(plist->del, name)) {
+        char *temp_name = NULL;
+
         /* Remove the property name from the deleted property skip list */
-        if(NULL == H5SL_remove(plist->del, name))
+        if(NULL == (temp_name = (char *)H5SL_remove(plist->del, name)))
             HGOTO_ERROR(H5E_PLIST,H5E_CANTDELETE,FAIL,"can't remove property from deleted skip list")
+
+        /* free the name of the removed property */
+        H5MM_xfree(temp_name);
     } /* end if */
     else {
         H5P_genclass_t *tclass;     /* Temporary class pointer */
@@ -2525,7 +2578,7 @@ done:
     Internal routine to query the existance of a property in a property list.
  USAGE
     herr_t H5P_exist_plist(plist, name)
-        H5P_genplist_t *plist;  IN: Property list to check
+        const H5P_genplist_t *plist;  IN: Property list to check
         const char *name;       IN: Name of property to check for
  RETURNS
     Success: Positive if the property exists in the property list, zero
@@ -2540,7 +2593,7 @@ done:
  REVISION LOG
 --------------------------------------------------------------------------*/
 htri_t
-H5P_exist_plist(H5P_genplist_t *plist, const char *name)
+H5P_exist_plist(const H5P_genplist_t *plist, const char *name)
 {
     htri_t ret_value = FAIL;     /* return value */
 
@@ -2640,7 +2693,7 @@ done:
     Internal routine to query the size of a property in a property list.
  USAGE
     herr_t H5P_get_size_plist(plist, name)
-        H5P_genplist_t *plist;  IN: Property list to check
+        const H5P_genplist_t *plist;  IN: Property list to check
         const char *name;       IN: Name of property to query
         size_t *size;           OUT: Size of property
  RETURNS
@@ -2656,7 +2709,7 @@ done:
  REVISION LOG
 --------------------------------------------------------------------------*/
 herr_t
-H5P_get_size_plist(H5P_genplist_t *plist, const char *name, size_t *size)
+H5P_get_size_plist(const H5P_genplist_t *plist, const char *name, size_t *size)
 {
     H5P_genprop_t *prop;        /* Temporary property pointer */
     herr_t ret_value=SUCCEED;      /* return value */
@@ -2668,11 +2721,11 @@ H5P_get_size_plist(H5P_genplist_t *plist, const char *name, size_t *size)
     HDassert(size);
 
     /* Find property */
-    if((prop=H5P_find_prop_plist(plist,name)) == NULL)
+    if(NULL == (prop = H5P__find_prop_plist(plist, name)))
         HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, FAIL, "property doesn't exist")
 
     /* Get property size */
-    *size=prop->size;
+    *size = prop->size;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -2989,9 +3042,9 @@ H5P_cmp_class(const H5P_genclass_t *pclass1, const H5P_genclass_t *pclass2)
     if(pclass1->ref_count < pclass2->ref_count) HGOTO_DONE(-1);
     if(pclass1->ref_count > pclass2->ref_count) HGOTO_DONE(1);
 
-    /* Check whether they are internal or not */
-    if(pclass1->internal < pclass2->internal) HGOTO_DONE(-1);
-    if(pclass1->internal > pclass2->internal) HGOTO_DONE(1);
+    /* Check the property list types */
+    if(pclass1->type < pclass2->type) HGOTO_DONE(-1);
+    if(pclass1->type > pclass2->type) HGOTO_DONE(1);
 
     /* Check whether they are deleted or not */
     if(pclass1->deleted < pclass2->deleted) HGOTO_DONE(-1);
@@ -3039,105 +3092,141 @@ done:
 
 /*--------------------------------------------------------------------------
  NAME
+    H5P__cmp_plist_cb
+ PURPOSE
+    Internal callback routine when iterating over properties in property list
+    to compare them for equality
+ USAGE
+    int H5P__cmp_plist_cb(prop, udata)
+        H5P_genprop_t *prop;        IN: Pointer to the property
+        void *udata;                IN/OUT: Pointer to iteration data from user
+ RETURNS
+    Success: Returns whether to continue (H5_ITER_CONT) or stop (H5_ITER_STOP)
+            iterating over the property lists.
+    Failure: Negative value (H5_ITER_ERROR)
+ DESCRIPTION
+    This routine compares a property from one property list (the one being
+    iterated over, to a property from the second property list (which is
+    looked up).  Iteration is stopped if the comparison is non-equal.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+static int
+H5P__cmp_plist_cb(H5P_genprop_t *prop, void *_udata)
+{
+    H5P_plist_cmp_ud_t *udata = (H5P_plist_cmp_ud_t *)_udata;   /* Pointer to user data */
+    htri_t prop2_exist;                 /* Whether the property exists in the second property list */
+    int ret_value = H5_ITER_CONT;       /* Return value */
+
+    FUNC_ENTER_STATIC
+
+    /* Sanity check */
+    HDassert(prop);
+    HDassert(udata);
+
+    /* Check if the property exists in the second property list */
+    if((prop2_exist = H5P_exist_plist(udata->plist2, prop->name)) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, H5_ITER_ERROR, "can't lookup existance of property?")
+    if(prop2_exist) {
+        const H5P_genprop_t *prop2;         /* Pointer to property in second plist */
+
+        /* Look up same property in second property list */
+        if(NULL == (prop2 = H5P__find_prop_plist(udata->plist2, prop->name)))
+            HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, H5_ITER_ERROR, "property doesn't exist")
+
+        /* Compare the two properties */
+        if((udata->cmp_value = H5P_cmp_prop(prop, prop2)) != 0)
+            HGOTO_DONE(H5_ITER_STOP);
+    } /* end if */
+    else {
+        /* Property exists in first list, but not second */
+        udata->cmp_value = 1;
+        HGOTO_DONE(H5_ITER_STOP);
+    } /* end else */
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P__cmp_plist_cb() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
     H5P_cmp_plist
  PURPOSE
     Internal routine to compare two generic property lists
  USAGE
-    int H5P_cmp_plist(plist1, plist2)
+    herr_t H5P_cmp_plist(plist1, plist2, cmp_ret)
         H5P_genplist_t *plist1;    IN: 1st property list to compare
         H5P_genplist_t *plist2;    IN: 2nd property list to compare
+        int *cmp_ret;              OUT: Comparison value for two property lists
+                                        Negative if list1 "less" than list2,
+                                        positive if list1 "greater" than list2,
+                                        zero if list1 is "equal" to list2
  RETURNS
-    Success: negative if list1 "less" than list2, positive if list1 "greater"
-        than list2, zero if list1 is "equal" to list2
-    Failure: can't fail
+    Success: non-negative value
+    Failure: negative value
  DESCRIPTION
         This function compares two generic property lists together to see if
-    they are the same list.
-
+    they are equal.
  GLOBAL VARIABLES
  COMMENTS, BUGS, ASSUMPTIONS
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-int
-H5P_cmp_plist(const H5P_genplist_t *plist1, const H5P_genplist_t *plist2)
+herr_t
+H5P_cmp_plist(const H5P_genplist_t *plist1, const H5P_genplist_t *plist2,
+    int *cmp_ret)
 {
-    H5SL_node_t *tnode1, *tnode2;       /* Temporary pointer to property nodes */
-    int cmp_value;                      /* Value from comparison */
-    int ret_value = 0;                  /* return value */
+    H5P_plist_cmp_ud_t udata;   /* User data for callback */
+    int idx = 0;                /* Index of property to begin with */
+    herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_NOAPI_NOINIT
 
     HDassert(plist1);
     HDassert(plist2);
+    HDassert(cmp_ret);
 
     /* Check the number of properties */
-    if(plist1->nprops < plist2->nprops) HGOTO_DONE(-1);
-    if(plist1->nprops > plist2->nprops) HGOTO_DONE(1);
+    if(plist1->nprops < plist2->nprops) {
+        *cmp_ret = -1;
+        HGOTO_DONE(SUCCEED);
+    } /* end if */
+    if(plist1->nprops > plist2->nprops) {
+        *cmp_ret = 1;
+        HGOTO_DONE(SUCCEED);
+    } /* end if */
 
     /* Check whether they've been initialized */
-    if(plist1->class_init < plist2->class_init) HGOTO_DONE(-1);
-    if(plist1->class_init > plist2->class_init) HGOTO_DONE(1);
-
-    /* Check for identical deleted properties */
-    if(H5SL_count(plist1->del) > 0) {
-        /* Check for no deleted properties in plist2 */
-        if(H5SL_count(plist2->del) == 0) HGOTO_DONE(1);
-
-        tnode1 = H5SL_first(plist1->del);
-        tnode2 = H5SL_first(plist2->del);
-        while(tnode1 || tnode2) {
-            const char *name1, *name2;   /* Name for node */
-
-            /* Check if they both have properties in this node */
-            if(tnode1 == NULL && tnode2 != NULL) HGOTO_DONE(-1);
-            if(tnode1 != NULL && tnode2 == NULL) HGOTO_DONE(1);
-
-            /* Compare the two deleted properties */
-            name1 = (const char *)H5SL_item(tnode1);
-            name2 = (const char *)H5SL_item(tnode2);
-            if((cmp_value = HDstrcmp(name1, name2)) != 0)
-                HGOTO_DONE(cmp_value);
-
-            /* Advance the pointers */
-            tnode1 = H5SL_next(tnode1);
-            tnode2 = H5SL_next(tnode2);
-        } /* end while */
+    if(plist1->class_init < plist2->class_init) {
+        *cmp_ret = -1;
+        HGOTO_DONE(SUCCEED);
     } /* end if */
-    else
-        if(H5SL_count(plist2->del) > 0) HGOTO_DONE (-1);
-
-    /* Cycle through the changed properties and compare them also */
-    if(H5SL_count(plist1->props) > 0) {
-        /* Check for no changed properties in plist2 */
-        if(H5SL_count(plist2->props) == 0) HGOTO_DONE(1);
-
-        tnode1 = H5SL_first(plist1->props);
-        tnode2 = H5SL_first(plist2->props);
-        while(tnode1 || tnode2) {
-            H5P_genprop_t *prop1, *prop2;   /* Property for node */
-
-            /* Check if they both have properties in this node */
-            if(tnode1 == NULL && tnode2 != NULL) HGOTO_DONE(-1);
-            if(tnode1 != NULL && tnode2 == NULL) HGOTO_DONE(1);
-
-            /* Compare the two properties */
-            prop1 = (H5P_genprop_t *)H5SL_item(tnode1);
-            prop2 = (H5P_genprop_t *)H5SL_item(tnode2);
-            if((cmp_value = H5P_cmp_prop(prop1, prop2)) != 0)
-                HGOTO_DONE(cmp_value);
-
-            /* Advance the pointers */
-            tnode1 = H5SL_next(tnode1);
-            tnode2 = H5SL_next(tnode2);
-        } /* end while */
+    if(plist1->class_init > plist2->class_init) {
+        *cmp_ret = 1;
+        HGOTO_DONE(SUCCEED);
+    } /* end if */
+
+    /* Set up iterator callback info */
+    udata.cmp_value = 0;
+    udata.plist2 = plist2;
+
+    /* Iterate over properties in first property list */
+    if((ret_value = H5P_iterate_plist(plist1, TRUE, &idx, H5P__cmp_plist_cb, &udata)) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "unable to iterate over list")
+    if(ret_value != 0) {
+        *cmp_ret = udata.cmp_value;
+        HGOTO_DONE(SUCCEED);
     } /* end if */
-    else
-        if(H5SL_count(plist2->props)>0) HGOTO_DONE (-1);
 
     /* Check the parent classes */
-    if((cmp_value = H5P_cmp_class(plist1->pclass, plist2->pclass)) != 0)
-        HGOTO_DONE(cmp_value);
+    if((*cmp_ret = H5P_cmp_class(plist1->pclass, plist2->pclass)) != 0)
+        HGOTO_DONE(SUCCEED);
+
+    /* Property lists must be equal, set comparison value to 0 */
+    *cmp_ret = 0;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -3292,14 +3381,116 @@ done:
 
 /*--------------------------------------------------------------------------
  NAME
+    H5P__iterate_plist_cb
+ PURPOSE
+    Internal callback routine when iterating over properties in property list
+ USAGE
+    int H5P__iterate_plist_cb(item, key, udata)
+        void *item;                 IN: Pointer to the property
+        void *key;                  IN: Pointer to the property's name
+        void *udata;            IN/OUT: Pointer to iteration data from user
+ RETURNS
+    Success: Returns the return value of the last call to ITER_FUNC
+ DESCRIPTION
+    This routine calls the actual callback routine for the property in the
+property list.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+static int
+H5P__iterate_plist_cb(void *_item, void *_key, void *_udata)
+{
+    H5P_genprop_t *item = (H5P_genprop_t *)_item;       /* Pointer to the property */
+    char *key = (char *)_key;                           /* Pointer to the property's name */
+    H5P_iter_plist_ud_t *udata = (H5P_iter_plist_ud_t *)_udata;     /* Pointer to user data */
+    int ret_value = H5_ITER_CONT;                       /* Return value */
+
+    FUNC_ENTER_STATIC
+
+    /* Sanity check */
+    HDassert(item);
+    HDassert(key);
+
+    /* Check if we've found the correctly indexed property */
+    if(*udata->curr_idx_ptr >= udata->prev_idx) {
+        /* Call the callback function */
+        ret_value = (*udata->cb_func)(item, udata->udata);
+        if(ret_value != 0)
+            HGOTO_DONE(ret_value);
+    } /* end if */
+
+    /* Increment the current index */
+    (*udata->curr_idx_ptr)++;
+
+    /* Add property name to 'seen' list */
+    if(H5SL_insert(udata->seen, key, key) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, H5_ITER_ERROR, "can't insert property into 'seen' skip list")
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P__iterate_plist_cb() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
+    H5P__iterate_plist_pclass_cb
+ PURPOSE
+    Internal callback routine when iterating over properties in property class
+ USAGE
+    int H5P__iterate_plist_pclass_cb(item, key, udata)
+        void *item;                 IN: Pointer to the property
+        void *key;                  IN: Pointer to the property's name
+        void *udata;            IN/OUT: Pointer to iteration data from user
+ RETURNS
+    Success: Returns the return value of the last call to ITER_FUNC
+ DESCRIPTION
+    This routine verifies that the property hasn't already been seen or was
+deleted, and then chains to the property list callback.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+static int
+H5P__iterate_plist_pclass_cb(void *_item, void *_key, void *_udata)
+{
+    H5P_genprop_t *item = (H5P_genprop_t *)_item;       /* Pointer to the property */
+    char *key = (char *)_key;                           /* Pointer to the property's name */
+    H5P_iter_plist_ud_t *udata = (H5P_iter_plist_ud_t *)_udata;     /* Pointer to user data */
+    int ret_value = H5_ITER_CONT;                       /* Return value */
+
+    FUNC_ENTER_STATIC_NOERR
+
+    /* Sanity check */
+    HDassert(item);
+    HDassert(key);
+
+    /* Only call iterator callback for properties we haven't seen
+     * before and that haven't been deleted.
+     */
+    if(NULL == H5SL_search(udata->seen, key) &&
+            NULL == H5SL_search(udata->plist->del, key))
+        ret_value = H5P__iterate_plist_cb(item, key, udata);
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P__iterate_plist_pclass_cb() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
     H5P_iterate_plist
  PURPOSE
     Internal routine to iterate over the properties in a property list
  USAGE
-    herr_t H5P_iterate_plist(plist_id, idx, iter_func, iter_data)
-        hid_t plist_id;             IN: ID of property list to iterate over
+    int H5P_iterate_plist(plist, iter_all_prop, idx, cb_func, iter_data)
+        const H5P_genplist_t *plist; IN: Property list to iterate over
+        hbool_t iter_all_prop;      IN: Whether to iterate over all properties
+                                        (TRUE), or just non-default (i.e. changed)
+                                        properties (FALSE).
         int *idx;                   IN/OUT: Index of the property to begin with
-        H5P_iterate_t iter_func;    IN: Function pointer to function to be
+        H5P_iterate_t cb_func;    IN: Function pointer to function to be
                                         called with each property iterated over.
         void *iter_data;            IN/OUT: Pointer to iteration data from user
  RETURNS
@@ -3342,110 +3533,116 @@ iteration, the function's behavior is undefined.
  REVISION LOG
 --------------------------------------------------------------------------*/
 int
-H5P_iterate_plist(hid_t plist_id, int *idx, H5P_iterate_t iter_func, void *iter_data)
+H5P_iterate_plist(const H5P_genplist_t *plist, hbool_t iter_all_prop, int *idx,
+    H5P_iterate_int_t cb_func, void *udata)
 {
     H5P_genclass_t *tclass;     /* Temporary class pointer */
-    H5P_genplist_t *plist;      /* Property list pointer */
-    H5P_genprop_t *tmp;         /* Temporary pointer to properties */
+    H5P_iter_plist_ud_t udata_int;        /* User data for skip list iterator */
     H5SL_t *seen = NULL;        /* Skip list to hold names of properties already seen */
-    H5SL_node_t *curr_node;     /* Current node in skip list */
     int curr_idx = 0;           /* Current iteration index */
-    int ret_value = FAIL;       /* Return value */
+    int ret_value = 0;          /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
 
+    /* Sanity check */
+    HDassert(plist);
     HDassert(idx);
-    HDassert(iter_func);
-
-    /* Get the property list object */
-    if(NULL == (plist = (H5P_genplist_t *)H5I_object_verify(plist_id, H5I_GENPROP_LST)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
+    HDassert(cb_func);
 
     /* Create the skip list to hold names of properties already seen */
-    if((seen = H5SL_create(H5SL_TYPE_STR, NULL)) == NULL)
-        HGOTO_ERROR(H5E_PLIST,H5E_CANTCREATE,FAIL,"can't create skip list for seen properties")
-
-    /* Walk through the changed properties in the list */
-    if(H5SL_count(plist->props) > 0) {
-        curr_node = H5SL_first(plist->props);
-        while(curr_node != NULL) {
-            /* Get pointer to property from node */
-            tmp = (H5P_genprop_t *)H5SL_item(curr_node);
-
-            /* Check if we've found the correctly indexed property */
-            if(curr_idx>=*idx) {
-                /* Call the callback function */
-                ret_value=(*iter_func)(plist_id,tmp->name,iter_data);
-
-                if(ret_value!=0)
-                    HGOTO_DONE(ret_value);
-            } /* end if */
-
-            /* Increment the current index */
-            curr_idx++;
-
-            /* Add property name to "seen" list */
-            if(H5SL_insert(seen,tmp->name,tmp->name) < 0)
-                HGOTO_ERROR(H5E_PLIST,H5E_CANTINSERT,FAIL,"can't insert property into seen skip list")
+    if(NULL == (seen = H5SL_create(H5SL_TYPE_STR, NULL)))
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL, "can't create skip list for seen properties")
+
+    /* Set up iterator callback info */
+    udata_int.plist = plist;
+    udata_int.cb_func = cb_func;
+    udata_int.udata = udata;
+    udata_int.seen = seen;
+    udata_int.curr_idx_ptr = &curr_idx;
+    udata_int.prev_idx = *idx;
+
+    /* Iterate over properties in property list proper */
+    /* (Will be only the non-default (i.e. changed) properties) */
+    ret_value = H5SL_iterate(plist->props, H5P__iterate_plist_cb, &udata_int);
+    if(ret_value != 0)
+        HGOTO_DONE(ret_value);
+
+    /* Check for iterating over all properties, or just non-default ones */
+    if(iter_all_prop) {
+        /* Walk up the class hiearchy */
+        tclass = plist->pclass;
+        while(tclass != NULL) {
+            /* Iterate over properties in property list class */
+            ret_value = H5SL_iterate(tclass->props, H5P__iterate_plist_pclass_cb, &udata_int);
+            if(ret_value != 0)
+                HGOTO_DONE(ret_value);
 
-            /* Get the next property node in the skip list */
-            curr_node=H5SL_next(curr_node);
+            /* Go up to parent class */
+            tclass = tclass->parent;
         } /* end while */
     } /* end if */
 
-    /* Walk up the class hiearchy */
-    tclass=plist->pclass;
-    while(tclass!=NULL) {
-        if(tclass->nprops>0) {
-            /* Walk through the properties in the class */
-            curr_node=H5SL_first(tclass->props);
-            while(curr_node!=NULL) {
-                /* Get pointer to property from node */
-                tmp = (H5P_genprop_t *)H5SL_item(curr_node);
-
-                /* Only call iterator callback for properties we haven't seen
-                 * before and that haven't been deleted
-                 */
-                if(H5SL_search(seen,tmp->name) == NULL &&
-                        H5SL_search(plist->del,tmp->name) == NULL) {
+done:
+    /* Set the index we stopped at */
+    *idx = curr_idx;
 
+    /* Release the skip list of 'seen' properties */
+    if(seen != NULL)
+        H5SL_close(seen);
 
-                    /* Check if we've found the correctly indexed property */
-                    if(curr_idx>=*idx) {
-                        /* Call the callback function */
-                        ret_value=(*iter_func)(plist_id,tmp->name,iter_data);
+    FUNC_LEAVE_NOAPI(ret_value)
+}   /* H5P_iterate_plist() */
 
-                        if(ret_value!=0)
-                            HGOTO_DONE(ret_value);
-                    } /* end if */
+
+/*--------------------------------------------------------------------------
+ NAME
+    H5P__iterate_pclass_cb
+ PURPOSE
+    Internal callback routine when iterating over properties in property list
+    class
+ USAGE
+    int H5P__iterate_pclass_cb(item, key, udata)
+        void *item;                 IN: Pointer to the property
+        void *key;                  IN: Pointer to the property's name
+        void *udata;            IN/OUT: Pointer to iteration data from user
+ RETURNS
+    Success: Returns the return value of the last call to ITER_FUNC
+ DESCRIPTION
+    This routine calls the actual callback routine for the property in the
+property list class.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+static int
+H5P__iterate_pclass_cb(void *_item, void *_key, void *_udata)
+{
+    H5P_genprop_t *item = (H5P_genprop_t *)_item;       /* Pointer to the property */
+    char *key = (char *)_key;                           /* Pointer to the property's name */
+    H5P_iter_pclass_ud_t *udata = (H5P_iter_pclass_ud_t *)_udata;     /* Pointer to user data */
+    int ret_value = 0;                                  /* Return value */
 
-                    /* Increment the current index */
-                    curr_idx++;
+    FUNC_ENTER_STATIC_NOERR
 
-                    /* Add property name to "seen" list */
-                    if(H5SL_insert(seen,tmp->name,tmp->name) < 0)
-                        HGOTO_ERROR(H5E_PLIST,H5E_CANTINSERT,FAIL,"can't insert property into seen skip list")
-                } /* end if */
+    /* Sanity check */
+    HDassert(item);
+    HDassert(key);
 
-                /* Get the next property node in the skip list */
-                curr_node=H5SL_next(curr_node);
-            } /* end while */
-        } /* end if */
+    /* Check if we've found the correctly indexed property */
+    if(*udata->curr_idx_ptr >= udata->prev_idx) {
+        /* Call the callback function */
+        ret_value = (*udata->cb_func)(item, udata->udata);
+        if(ret_value != 0)
+            HGOTO_DONE(ret_value);
+    } /* end if */
 
-        /* Go up to parent class */
-        tclass=tclass->parent;
-    } /* end while */
+    /* Increment the current index */
+    (*udata->curr_idx_ptr)++;
 
 done:
-    /* Set the index we stopped at */
-    *idx=curr_idx;
-
-    /* Release the skip list of 'seen' properties */
-    if(seen!=NULL)
-        H5SL_close(seen);
-
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* H5P_iterate_plist() */
+} /* end H5P__iterate_pclass_cb() */
 
 
 /*--------------------------------------------------------------------------
@@ -3454,10 +3651,10 @@ done:
  PURPOSE
     Internal routine to iterate over the properties in a property class
  USAGE
-    herr_t H5P_iterate_pclass(pclass_id, idx, iter_func, iter_data)
-        hid_t pclass_id;            IN: ID of property class to iterate over
+    herr_t H5P_iterate_pclass(pclass, idx, cb_func, iter_data)
+        const H5P_genpclass_t *pclass; IN: Property list class to iterate over
         int *idx;                   IN/OUT: Index of the property to begin with
-        H5P_iterate_t iter_func;    IN: Function pointer to function to be
+        H5P_iterate_t cb_func;    IN: Function pointer to function to be
                                         called with each property iterated over.
         void *iter_data;            IN/OUT: Pointer to iteration data from user
  RETURNS
@@ -3500,49 +3697,34 @@ iteration, the function's behavior is undefined.
  REVISION LOG
 --------------------------------------------------------------------------*/
 int
-H5P_iterate_pclass(hid_t pclass_id, int *idx, H5P_iterate_t iter_func, void *iter_data)
+H5P_iterate_pclass(const H5P_genclass_t *pclass, int *idx,
+    H5P_iterate_int_t cb_func, void *udata)
 {
-    H5P_genclass_t *pclass;     /* Property list pointer */
-    H5SL_node_t *curr_node;     /* Current node in skip list */
-    H5P_genprop_t *prop;        /* Temporary property pointer */
-    int curr_idx=0;             /* Current iteration index */
-    int ret_value=FAIL;         /* Return value */
+    H5P_iter_pclass_ud_t udata_int; /* User data for skip list iterator */
+    int curr_idx = 0;           /* Current iteration index */
+    int ret_value = 0;          /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
 
+    /* Sanity check */
+    HDassert(pclass);
     HDassert(idx);
-    HDassert(iter_func);
+    HDassert(cb_func);
 
-    /* Get the property list object */
-    if(NULL == (pclass = (H5P_genclass_t *)H5I_object_verify(pclass_id, H5I_GENPROP_CLS)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property class")
+    /* Set up iterator callback info */
+    udata_int.cb_func = cb_func;
+    udata_int.udata = udata;
+    udata_int.curr_idx_ptr = &curr_idx;
+    udata_int.prev_idx = *idx;
 
-    /* Cycle through the properties and call the callback */
-    curr_idx=0;
-    curr_node=H5SL_first(pclass->props);
-    while(curr_node!=NULL) {
-        if(curr_idx>=*idx) {
-            /* Get the property for the node */
-            prop = (H5P_genprop_t *)H5SL_item(curr_node);
-
-            /* Call the callback function */
-            ret_value=(*iter_func)(pclass_id,prop->name,iter_data);
-
-            /* Check if iteration function succeeded */
-            if(ret_value!=0)
-                HGOTO_DONE(ret_value);
-        } /* end if */
-
-        /* Increment the iteration index */
-        curr_idx++;
-
-        /* Get the next property node in the skip list */
-        curr_node=H5SL_next(curr_node);
-    } /* end while */
+    /* Iterate over properties in property list class proper */
+    ret_value = H5SL_iterate(pclass->props, H5P__iterate_pclass_cb, &udata_int);
+    if(ret_value != 0)
+        HGOTO_DONE(ret_value);
 
 done:
     /* Set the index we stopped at */
-    *idx=curr_idx;
+    *idx = curr_idx;
 
     FUNC_LEAVE_NOAPI(ret_value)
 }   /* H5P_iterate_pclass() */
@@ -4056,13 +4238,13 @@ H5P_copy_prop_plist(hid_t dst_id, hid_t src_id, const char *name)
         HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, FAIL, "property object doesn't exist")
 
     /* If the property exists in the destination alread */
-    if(H5P_find_prop_plist(dst_plist,name)!=NULL) {
+    if(NULL != H5P__find_prop_plist(dst_plist, name)) {
         /* Delete the property from the destination list, calling the 'close' callback if necessary */
         if(H5P_remove(dst_id,dst_plist,name) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "unable to remove property")
 
         /* Get the pointer to the source property */
-        prop=H5P_find_prop_plist(src_plist,name);
+        prop = H5P__find_prop_plist(src_plist, name);
 
         /* Make a copy of the source property */
         if((new_prop=H5P_dup_prop(prop,H5P_PROP_WITHIN_LIST)) == NULL)
@@ -4084,25 +4266,26 @@ H5P_copy_prop_plist(hid_t dst_id, hid_t src_id, const char *name)
     /* If not, get the information required to do an H5Pinsert2 with the property into the destination list */
     else {
         /* Get the pointer to the source property */
-        prop=H5P_find_prop_plist(src_plist,name);
+        prop = H5P__find_prop_plist(src_plist, name);
 
         /* Create property object from parameters */
-        if((new_prop=H5P_create_prop(prop->name,prop->size,H5P_PROP_WITHIN_LIST,prop->value,prop->create,prop->set,prop->get,prop->del,prop->copy,prop->cmp,prop->close)) == NULL)
+        if(NULL == (new_prop = H5P_create_prop(prop->name, prop->size, H5P_PROP_WITHIN_LIST, prop->value,
+                prop->create, prop->set, prop->get,
+                prop->del, prop->copy, prop->cmp, prop->close)))
             HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL,"Can't create property")
 
         /* Call property creation callback, if it exists */
         if(new_prop->create) {
-            if((new_prop->create)(new_prop->name,new_prop->size,new_prop->value) < 0)
+            if((new_prop->create)(new_prop->name, new_prop->size, new_prop->value) < 0)
                 HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL,"Can't initialize property")
         } /* end if */
 
         /* Insert property into property list class */
-        if(H5P_add_prop(dst_plist->props,new_prop) < 0)
+        if(H5P_add_prop(dst_plist->props, new_prop) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL,"Can't insert property into class")
 
         /* Increment property count for class */
         dst_plist->nprops++;
-
     } /* end else */
 
 done:
@@ -4178,7 +4361,8 @@ H5P_copy_prop_pclass(hid_t dst_id, hid_t src_id, const char *name)
 
     /* Register the property into the destination */
     orig_dst_pclass = dst_pclass;
-    if(H5P_register(&dst_pclass, name, prop->size, prop->value, prop->create, prop->set, prop->get, prop->del, prop->copy, prop->cmp, prop->close) < 0)
+    if(H5P_register(&dst_pclass, name, prop->size, prop->value, prop->create, prop->set, prop->get,
+            prop->del, prop->copy, prop->cmp, prop->close) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "unable to remove property")
 
     /* Check if the property class changed and needs to be substituted in the ID */
diff --git a/src/H5Plapl.c b/src/H5Plapl.c
index 6c80493..0697130 100644
--- a/src/H5Plapl.c
+++ b/src/H5Plapl.c
@@ -48,11 +48,13 @@
 /* Definitions for number of soft links to traverse */
 #define H5L_ACS_NLINKS_SIZE        sizeof(size_t)
 #define H5L_ACS_NLINKS_DEF         H5L_NUM_LINKS /*max symlinks to follow per lookup  */
+
 /* Definitions for external link prefix */
 #define H5L_ACS_ELINK_PREFIX_SIZE        sizeof(char *)
 #define H5L_ACS_ELINK_PREFIX_DEF         NULL /*default is no prefix */
 #define H5L_ACS_ELINK_PREFIX_DEL         H5P_lacc_elink_pref_del
 #define H5L_ACS_ELINK_PREFIX_COPY        H5P_lacc_elink_pref_copy
+#define H5L_ACS_ELINK_PREFIX_CMP         H5P_lacc_elink_pref_cmp
 #define H5L_ACS_ELINK_PREFIX_CLOSE       H5P_lacc_elink_pref_close
 
 /* Definitions for setting fapl of external link access */
@@ -60,6 +62,7 @@
 #define H5L_ACS_ELINK_FAPL_DEF         	H5P_DEFAULT
 #define H5L_ACS_ELINK_FAPL_DEL		H5P_lacc_elink_fapl_del
 #define H5L_ACS_ELINK_FAPL_COPY        	H5P_lacc_elink_fapl_copy
+#define H5L_ACS_ELINK_FAPL_CMP        	H5P_lacc_elink_fapl_cmp
 #define H5L_ACS_ELINK_FAPL_CLOSE       	H5P_lacc_elink_fapl_close
 
 /* Definitions for file access flags for external link traversal */
@@ -70,6 +73,7 @@
 #define H5L_ACS_ELINK_CB_SIZE           sizeof(H5L_elink_cb_t)
 #define H5L_ACS_ELINK_CB_DEF            {NULL,NULL}
 
+
 /******************/
 /* Local Typedefs */
 /******************/
@@ -90,10 +94,11 @@ static herr_t H5P_lacc_reg_prop(H5P_genclass_t *pclass);
 /* Property list callbacks */
 static herr_t H5P_lacc_elink_pref_del(hid_t prop_id, const char* name, size_t size, void* value);
 static herr_t H5P_lacc_elink_pref_copy(const char* name, size_t size, void* value);
+static int H5P_lacc_elink_pref_cmp(const void *value1, const void *value2, size_t size);
 static herr_t H5P_lacc_elink_pref_close(const char* name, size_t size, void* value);
-
 static herr_t H5P_lacc_elink_fapl_del(hid_t prop_id, const char* name, size_t size, void* value);
 static herr_t H5P_lacc_elink_fapl_copy(const char* name, size_t size, void* value);
+static int H5P_lacc_elink_fapl_cmp(const void *value1, const void *value2, size_t size);
 static herr_t H5P_lacc_elink_fapl_close(const char* name, size_t size, void* value);
 
 
@@ -104,6 +109,7 @@ static herr_t H5P_lacc_elink_fapl_close(const char* name, size_t size, void* val
 /* Dataset creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_LACC[1] = {{
     "link access",		/* Class name for debugging     */
+    H5P_TYPE_LINK_ACCESS,       /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_LINK_ACCESS_g,	/* Pointer to class ID          */
     &H5P_LST_LINK_ACCESS_g,	/* Pointer to default property list ID */
@@ -162,11 +168,11 @@ H5P_lacc_reg_prop(H5P_genclass_t *pclass)
          HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register property for external link prefix */
-    if(H5P_register_real(pclass, H5L_ACS_ELINK_PREFIX_NAME, H5L_ACS_ELINK_PREFIX_SIZE, &elink_prefix, NULL, NULL, NULL, H5L_ACS_ELINK_PREFIX_DEL, H5L_ACS_ELINK_PREFIX_COPY, NULL, H5L_ACS_ELINK_PREFIX_CLOSE) < 0)
+    if(H5P_register_real(pclass, H5L_ACS_ELINK_PREFIX_NAME, H5L_ACS_ELINK_PREFIX_SIZE, &elink_prefix, NULL, NULL, NULL, H5L_ACS_ELINK_PREFIX_DEL, H5L_ACS_ELINK_PREFIX_COPY, H5L_ACS_ELINK_PREFIX_CMP, H5L_ACS_ELINK_PREFIX_CLOSE) < 0)
          HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register fapl for link access */
-    if(H5P_register_real(pclass, H5L_ACS_ELINK_FAPL_NAME, H5L_ACS_ELINK_FAPL_SIZE, &def_fapl_id, NULL, NULL, NULL, H5L_ACS_ELINK_FAPL_DEL, H5L_ACS_ELINK_FAPL_COPY, NULL, H5L_ACS_ELINK_FAPL_CLOSE) < 0)
+    if(H5P_register_real(pclass, H5L_ACS_ELINK_FAPL_NAME, H5L_ACS_ELINK_FAPL_SIZE, &def_fapl_id, NULL, NULL, NULL, H5L_ACS_ELINK_FAPL_DEL, H5L_ACS_ELINK_FAPL_COPY, H5L_ACS_ELINK_FAPL_CMP, H5L_ACS_ELINK_FAPL_CLOSE) < 0)
          HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register property for external link file access flags */
@@ -257,6 +263,53 @@ done:
 } /* end H5P_lacc_elink_fapl_copy() */
 
 
+/*-------------------------------------------------------------------------
+ * Function:       H5P_lacc_elink_fapl_cmp
+ *
+ * Purpose:        Callback routine which is called whenever the elink FAPL
+ *                 property in the link access property list is
+ *                 compared.
+ *
+ * Return:         zero if VALUE1 and VALUE2 are equal, non zero otherwise.
+ *
+ * Programmer:     Quincey Koziol
+ *                 Wednesday, August 15, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5P_lacc_elink_fapl_cmp(const void *value1, const void *value2, size_t UNUSED size)
+{
+    const hid_t *fapl1 = (const hid_t *)value1;
+    const hid_t *fapl2 = (const hid_t *)value2;
+    H5P_genplist_t *obj1, *obj2;          /* Property lists to compare */
+    int ret_value = 0;
+
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+    /* Check for comparison with default value */
+    if(*fapl1 == 0 && *fapl2 > 0) HGOTO_DONE(1);
+    if(*fapl1 > 0 && *fapl2 == 0) HGOTO_DONE(-1);
+
+    /* Get the property list objects */
+    obj1 = (H5P_genplist_t *)H5I_object(*fapl1);
+    obj2 = (H5P_genplist_t *)H5I_object(*fapl2);
+
+    /* Check for NULL property lists */
+    if(obj1 == NULL && obj2 != NULL) HGOTO_DONE(1);
+    if(obj1 != NULL && obj2 == NULL) HGOTO_DONE(-1);
+    if(obj1 && obj2) {
+        herr_t status;
+
+        status = H5P_cmp_plist(obj1, obj2, &ret_value);
+        HDassert(status >= 0);
+    } /* end if */
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P_lacc_elink_fapl_cmp() */
+
+
 /*--------------------------------------------------------------------------
  * Function:	H5P_lacc_elink_fapl_close
  *
@@ -343,6 +396,41 @@ H5P_lacc_elink_pref_copy(const char UNUSED *name, size_t UNUSED size, void *valu
 
 
 /*-------------------------------------------------------------------------
+ * Function:       H5P_lacc_elink_pref_cmp
+ *
+ * Purpose:        Callback routine which is called whenever the elink prefix
+ *                 property in the dataset creation property list is
+ *                 compared.
+ *
+ * Return:         zero if VALUE1 and VALUE2 are equal, non zero otherwise.
+ *
+ * Programmer:     Mohamad Chaarawi
+ *                 Thursday, November 3, 2011
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5P_lacc_elink_pref_cmp(const void *value1, const void *value2, size_t UNUSED size)
+{
+    const char *pref1 = *(const char * const *)value1;
+    const char *pref2 = *(const char * const *)value2;
+    int ret_value = 0;
+
+    FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+    if(NULL == pref1 && NULL != pref2)
+        HGOTO_DONE(1);
+    if(NULL != pref1 && NULL == pref2)
+        HGOTO_DONE(-1);
+    if(NULL != pref1 && NULL != pref2)
+        ret_value = HDstrcmp(pref1, pref2);
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5P_lacc_elink_pref_cmp() */
+
+
+/*-------------------------------------------------------------------------
  * Function:    H5P_lacc_elink_pref_close
  *
  * Purpose:     Frees memory used to store the external link prefix string
@@ -815,3 +903,4 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Pget_elink_cb() */
 
+
diff --git a/src/H5Plcpl.c b/src/H5Plcpl.c
index 60b4e37..b327df9 100644
--- a/src/H5Plcpl.c
+++ b/src/H5Plcpl.c
@@ -75,6 +75,7 @@ static herr_t H5P_lcrt_reg_prop(H5P_genclass_t *pclass);
 /* Link creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_LCRT[1] = {{
     "link create",		/* Class name for debugging     */
+    H5P_TYPE_LINK_CREATE,       /* Class type                   */
     &H5P_CLS_STRING_CREATE_g,	/* Parent class ID              */
     &H5P_CLS_LINK_CREATE_g,	/* Pointer to class ID          */
     &H5P_LST_LINK_CREATE_g,	/* Pointer to default property list ID */
@@ -120,7 +121,7 @@ H5P_lcrt_reg_prop(H5P_genclass_t *pclass)
 
     /* Register create intermediate groups property */
     if(H5P_register_real(pclass, H5L_CRT_INTERMEDIATE_GROUP_NAME, H5L_CRT_INTERMEDIATE_GROUP_SIZE, &intmd_group, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5Pocpl.c b/src/H5Pocpl.c
index 9e33c5e..a3f9212 100644
--- a/src/H5Pocpl.c
+++ b/src/H5Pocpl.c
@@ -54,7 +54,7 @@
 #define H5O_CRT_OHDR_FLAGS_SIZE         sizeof(uint8_t)
 /* Definitions for filter pipeline */
 #define H5O_CRT_PIPELINE_SIZE sizeof(H5O_pline_t)
-#define H5O_CRT_PIPELINE_CMP  H5P_ocrt_pipeline_cmp
+#define H5O_CRT_PIPELINE_CMP            H5P__ocrt_pipeline_cmp
 
 
 /******************/
@@ -72,12 +72,12 @@
 /********************/
 
 /* Property class callbacks */
-static herr_t H5P_ocrt_reg_prop(H5P_genclass_t *pclass);
-static herr_t H5P_ocrt_copy(hid_t new_plist_t, hid_t old_plist_t, void *copy_data);
-static herr_t H5P_ocrt_close(hid_t dxpl_id, void *close_data);
+static herr_t H5P__ocrt_reg_prop(H5P_genclass_t *pclass);
+static herr_t H5P__ocrt_copy(hid_t new_plist_t, hid_t old_plist_t, void *copy_data);
+static herr_t H5P__ocrt_close(hid_t dxpl_id, void *close_data);
 
 /* Property callbacks */
-static int H5P_ocrt_pipeline_cmp(const void *value1, const void *value2, size_t size);
+static int H5P__ocrt_pipeline_cmp(const void *value1, const void *value2, size_t size);
 
 
 /*********************/
@@ -87,15 +87,16 @@ static int H5P_ocrt_pipeline_cmp(const void *value1, const void *value2, size_t
 /* Object creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_OCRT[1] = {{
     "object create",		/* Class name for debugging     */
+    H5P_TYPE_OBJECT_CREATE,     /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_OBJECT_CREATE_g,	/* Pointer to class ID          */
     NULL,			/* Pointer to default property list ID */
-    H5P_ocrt_reg_prop,		/* Default property registration routine */
+    H5P__ocrt_reg_prop,		/* Default property registration routine */
     NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
-    H5P_ocrt_copy,		/* Class copy callback          */
+    H5P__ocrt_copy,		/* Class copy callback          */
     NULL,		        /* Class copy callback info     */
-    H5P_ocrt_close,		/* Class close callback         */
+    H5P__ocrt_close,		/* Class close callback         */
     NULL 		        /* Class close callback info    */
 }};
 
@@ -113,7 +114,7 @@ const H5P_libclass_t H5P_CLS_OCRT[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_ocrt_reg_prop
+ * Function:    H5P__ocrt_reg_prop
  *
  * Purpose:     Initialize the object creation property list class
  *
@@ -125,7 +126,7 @@ const H5P_libclass_t H5P_CLS_OCRT[1] = {{
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_ocrt_reg_prop(H5P_genclass_t *pclass)
+H5P__ocrt_reg_prop(H5P_genclass_t *pclass)
 {
     unsigned attr_max_compact = H5O_CRT_ATTR_MAX_COMPACT_DEF;   /* Default max. compact attribute storage settings */
     unsigned attr_min_dense = H5O_CRT_ATTR_MIN_DENSE_DEF;       /* Default min. dense attribute storage settings */
@@ -133,31 +134,31 @@ H5P_ocrt_reg_prop(H5P_genclass_t *pclass)
     H5O_pline_t pline = H5O_CRT_PIPELINE_DEF;           /* Default I/O pipeline setting */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Register max. compact attribute storage property */
     if(H5P_register_real(pclass, H5O_CRT_ATTR_MAX_COMPACT_NAME, H5O_CRT_ATTR_MAX_COMPACT_SIZE, &attr_max_compact, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register min. dense attribute storage property */
     if(H5P_register_real(pclass, H5O_CRT_ATTR_MIN_DENSE_NAME, H5O_CRT_ATTR_MIN_DENSE_SIZE, &attr_min_dense, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register object header flags property */
     if(H5P_register_real(pclass, H5O_CRT_OHDR_FLAGS_NAME, H5O_CRT_OHDR_FLAGS_SIZE, &ohdr_flags, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register the pipeline property */
     if(H5P_register_real(pclass, H5O_CRT_PIPELINE_NAME, H5O_CRT_PIPELINE_SIZE, &pline, NULL, NULL, NULL, NULL, NULL, H5O_CRT_PIPELINE_CMP, NULL) < 0)
-       HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocrt_reg_prop() */
+} /* end H5P__ocrt_reg_prop() */
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_ocrt_copy
+ * Function:       H5P__ocrt_copy
  *
  * Purpose:        Callback routine which is called whenever any object
  *                 creation property list is copied.  This routine copies
@@ -173,14 +174,14 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5P_ocrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
+H5P__ocrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
 {
     H5O_pline_t    src_pline, dst_pline;        /* Source & destination pipelines */
     H5P_genplist_t *src_plist;                  /* Pointer to source property list */
     H5P_genplist_t *dst_plist;                  /* Pointer to destination property list */
     herr_t         ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Verify property list IDs */
     if(NULL == (dst_plist = (H5P_genplist_t *)H5I_object(dst_plist_id)))
@@ -202,11 +203,11 @@ H5P_ocrt_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocrt_copy() */
+} /* end H5P__ocrt_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5P_ocrt_close
+ * Function:	H5P__ocrt_close
  *
  * Purpose:	Callback routine which is called whenever any object create
  *              property list is closed.  This routine performs any generic
@@ -222,13 +223,13 @@ done:
  */
 /* ARGSUSED */
 static herr_t
-H5P_ocrt_close(hid_t dcpl_id, void UNUSED *close_data)
+H5P__ocrt_close(hid_t dcpl_id, void UNUSED *close_data)
 {
     H5O_pline_t     pline;              /* I/O pipeline */
     H5P_genplist_t *plist;              /* Property list */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
     /* Check arguments */
     if(NULL == (plist = (H5P_genplist_t *)H5I_object(dcpl_id)))
@@ -244,7 +245,7 @@ H5P_ocrt_close(hid_t dcpl_id, void UNUSED *close_data)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocrt_close() */
+} /* end H5P__ocrt_close() */
 
 
 /*-------------------------------------------------------------------------
@@ -379,8 +380,8 @@ H5Pset_attr_creation_order(hid_t plist_id, unsigned crt_order_flags)
     ohdr_flags &= (uint8_t)~(H5O_HDR_ATTR_CRT_ORDER_TRACKED | H5O_HDR_ATTR_CRT_ORDER_INDEXED);
 
     /* Update with new attribute creation order flags */
-    ohdr_flags |= (uint8_t)((crt_order_flags & H5P_CRT_ORDER_TRACKED) ? H5O_HDR_ATTR_CRT_ORDER_TRACKED : 0);
-    ohdr_flags |= (uint8_t)((crt_order_flags & H5P_CRT_ORDER_INDEXED) ? H5O_HDR_ATTR_CRT_ORDER_INDEXED : 0);
+    ohdr_flags = (uint8_t)(ohdr_flags | ((crt_order_flags & H5P_CRT_ORDER_TRACKED) ? H5O_HDR_ATTR_CRT_ORDER_TRACKED : 0));
+    ohdr_flags = (uint8_t)(ohdr_flags | ((crt_order_flags & H5P_CRT_ORDER_INDEXED) ? H5O_HDR_ATTR_CRT_ORDER_INDEXED : 0));
 
     /* Set object header flags */
     if(H5P_set(plist, H5O_CRT_OHDR_FLAGS_NAME, &ohdr_flags) < 0)
@@ -486,7 +487,7 @@ H5Pset_obj_track_times(hid_t plist_id, hbool_t track_times)
     ohdr_flags &= (uint8_t)~H5O_HDR_STORE_TIMES;
 
     /* Update with new time tracking flag */
-    ohdr_flags |= (uint8_t)(track_times ? H5O_HDR_STORE_TIMES : 0);
+    ohdr_flags = (uint8_t)(ohdr_flags | (track_times ? H5O_HDR_STORE_TIMES : 0));
 
     /* Set object header flags */
     if(H5P_set(plist, H5O_CRT_OHDR_FLAGS_NAME, &ohdr_flags) < 0)
@@ -1331,7 +1332,7 @@ H5P_get_filter(const H5Z_filter_info_t *filter, unsigned int *flags/*out*/,
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_ocrt_pipeline_cmp
+ * Function:       H5P__ocrt_pipeline_cmp
  *
  * Purpose:        Callback routine which is called whenever a filter pipeline
  *                 property in a property list is compared.
@@ -1345,25 +1346,21 @@ H5P_get_filter(const H5Z_filter_info_t *filter, unsigned int *flags/*out*/,
  *
  *-------------------------------------------------------------------------
  */
-int
-H5P_ocrt_pipeline_cmp(const void *_pline1, const void *_pline2, size_t UNUSED size)
+static int
+H5P__ocrt_pipeline_cmp(const void *_pline1, const void *_pline2, size_t UNUSED size)
 {
     const H5O_pline_t *pline1 = (const H5O_pline_t *)_pline1,     /* Create local aliases for values */
         *pline2 = (const H5O_pline_t *)_pline2;
     int cmp_value;              /* Value from comparison */
     herr_t ret_value = 0; /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(pline1);
     HDassert(pline2);
     HDassert(size == sizeof(H5O_pline_t));
 
-    /* Check the number of allocated pipeline entries */
-    if(pline1->nalloc < pline2->nalloc) HGOTO_DONE(-1);
-    if(pline1->nalloc > pline2->nalloc) HGOTO_DONE(1);
-
     /* Check the number of used pipeline entries */
     if(pline1->nused < pline2->nused) HGOTO_DONE(-1);
     if(pline1->nused > pline2->nused) HGOTO_DONE(1);
@@ -1413,7 +1410,7 @@ H5P_ocrt_pipeline_cmp(const void *_pline1, const void *_pline2, size_t UNUSED si
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocrt_pipeline_cmp() */
+} /* end H5P__ocrt_pipeline_cmp() */
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 
@@ -1567,6 +1564,5 @@ H5Pget_filter_by_id1(hid_t plist_id, H5Z_filter_t id, unsigned int *flags/*out*/
 done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Pget_filter_by_id1() */
-
 #endif /* H5_NO_DEPRECATED_SYMBOLS */
 
diff --git a/src/H5Pocpypl.c b/src/H5Pocpypl.c
index 23f8e4b..0ba5625 100644
--- a/src/H5Pocpypl.c
+++ b/src/H5Pocpypl.c
@@ -52,11 +52,14 @@
 /* Definitions for merge committed dtype list */
 #define H5O_CPY_MERGE_COMM_DT_LIST_SIZE        sizeof(char *)
 #define H5O_CPY_MERGE_COMM_DT_LIST_DEF         NULL
-#define H5O_CPY_MERGE_COMM_DT_LIST_CMP         H5P_ocpy_merge_comm_dt_list_cmp
+#define H5O_CPY_MERGE_COMM_DT_LIST_COPY        H5P__ocpy_merge_comm_dt_list_copy
+#define H5O_CPY_MERGE_COMM_DT_LIST_CMP         H5P__ocpy_merge_comm_dt_list_cmp
+#define H5O_CPY_MERGE_COMM_DT_LIST_CLOSE       H5P__ocpy_merge_comm_dt_list_close
 /* Definitions for callback function when completing the search for a matching committed datatype from the committed dtype list */
 #define H5O_CPY_MCDT_SEARCH_CB_SIZE           sizeof(H5O_mcdt_cb_info_t)
 #define H5O_CPY_MCDT_SEARCH_CB_DEF            {NULL,NULL} 
 
+
 /******************/
 /* Local Typedefs */
 /******************/
@@ -72,16 +75,15 @@
 /********************/
 
 /* General routines */
-static H5O_copy_dtype_merge_list_t *H5P_free_merge_comm_dtype_list(H5O_copy_dtype_merge_list_t *dt_list);
+static H5O_copy_dtype_merge_list_t *H5P__free_merge_comm_dtype_list(H5O_copy_dtype_merge_list_t *dt_list);
 
 /* Property class callbacks */
-static herr_t H5P_ocpy_reg_prop(H5P_genclass_t *pclass);
-static herr_t H5P_ocpy_copy(hid_t dst_plist_id, hid_t src_plist_id,
-    void *copy_data);
-static herr_t H5P_ocpy_close(hid_t ocpypl_id, void *close_data);
+static herr_t H5P__ocpy_reg_prop(H5P_genclass_t *pclass);
 
 /* Property callbacks */
-static int H5P_ocpy_merge_comm_dt_list_cmp(const void *value1, const void *value2, size_t size);
+static herr_t H5P__ocpy_merge_comm_dt_list_copy(const char* name, size_t size, void* value);
+static int H5P__ocpy_merge_comm_dt_list_cmp(const void *value1, const void *value2, size_t size);
+static herr_t H5P__ocpy_merge_comm_dt_list_close(const char* name, size_t size, void* value);
 
 
 /*********************/
@@ -91,15 +93,16 @@ static int H5P_ocpy_merge_comm_dt_list_cmp(const void *value1, const void *value
 /* Object copy property list class library initialization object */
 const H5P_libclass_t H5P_CLS_OCPY[1] = {{
     "object copy",		/* Class name for debugging     */
+    H5P_TYPE_OBJECT_COPY,       /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_OBJECT_COPY_g,	/* Pointer to class ID          */
     &H5P_LST_OBJECT_COPY_g,	/* Pointer to default property list ID */
-    H5P_ocpy_reg_prop,		/* Default property registration routine */
+    H5P__ocpy_reg_prop,		/* Default property registration routine */
     NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
-    H5P_ocpy_copy,		/* Class copy callback          */
+    NULL,			/* Class copy callback          */
     NULL,		        /* Class copy callback info     */
-    H5P_ocpy_close,		/* Class close callback         */
+    NULL,			/* Class close callback         */
     NULL 		        /* Class close callback info    */
 }};
 
@@ -119,7 +122,7 @@ H5FL_DEFINE(H5O_copy_dtype_merge_list_t);
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_ocpy_reg_prop
+ * Function:    H5P__ocpy_reg_prop
  *
  * Purpose:     Initialize the object copy property list class
  *
@@ -130,70 +133,91 @@ H5FL_DEFINE(H5O_copy_dtype_merge_list_t);
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5P_ocpy_reg_prop(H5P_genclass_t *pclass)
+H5P__ocpy_reg_prop(H5P_genclass_t *pclass)
 {
     unsigned ocpy_option = H5O_CPY_OPTION_DEF;  /* Default object copy flags */
     H5O_copy_dtype_merge_list_t *merge_comm_dtype_list = H5O_CPY_MERGE_COMM_DT_LIST_DEF; /* Default merge committed dtype list */
     H5O_mcdt_cb_info_t mcdt_cb = H5O_CPY_MCDT_SEARCH_CB_DEF; /* Default callback before searching the global list of committed datatypes at destination */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC
 
     /* Register copy options property */
     if(H5P_register_real(pclass, H5O_CPY_OPTION_NAME, H5O_CPY_OPTION_SIZE, &ocpy_option, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register merge named dtype list property */
-    if(H5P_register_real(pclass, H5O_CPY_MERGE_COMM_DT_LIST_NAME, H5O_CPY_MERGE_COMM_DT_LIST_SIZE, &merge_comm_dtype_list, NULL, NULL, NULL, NULL, NULL, H5O_CPY_MERGE_COMM_DT_LIST_CMP, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+    if(H5P_register_real(pclass, H5O_CPY_MERGE_COMM_DT_LIST_NAME, H5O_CPY_MERGE_COMM_DT_LIST_SIZE, &merge_comm_dtype_list, NULL, NULL, NULL, NULL, H5O_CPY_MERGE_COMM_DT_LIST_COPY, H5O_CPY_MERGE_COMM_DT_LIST_CMP, H5O_CPY_MERGE_COMM_DT_LIST_CLOSE) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
     /* Register property for callback when completing the search for a matching named datatype from the named dtype list */
     if(H5P_register_real(pclass, H5O_CPY_MCDT_SEARCH_CB_NAME, H5O_CPY_MCDT_SEARCH_CB_SIZE, &mcdt_cb, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocpy_reg_prop() */
+} /* end H5P__ocpy_reg_prop() */
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_ocpy_copy
- *
- * Purpose:        Callback routine which is called whenever any object
- *                 copy property list is copied.  This routine copies
- *                 the properties from the old list to the new list.
+ * Function:    H5P__free_merge_comm_dtype_list
  *
- * Return:         Success:        Non-negative
- *                 Failure:        Negative
+ * Purpose:     Frees the provided merge named dtype list
  *
- * Programmer:     Neil Fortner
- *                 Friday, October 28, 2011
+ * Return:      NULL
  *
+ * Programmer:  Neil Fortner
+ *              October 27, 2011
  *-------------------------------------------------------------------------
  */
+static H5O_copy_dtype_merge_list_t *
+H5P__free_merge_comm_dtype_list(H5O_copy_dtype_merge_list_t *dt_list)
+{
+    H5O_copy_dtype_merge_list_t *tmp_node;
+
+    FUNC_ENTER_STATIC_NOERR
+
+    /* Free the list */
+    while(dt_list) {
+        tmp_node = dt_list->next;
+        (void)H5MM_xfree(dt_list->path);
+        (void)H5FL_FREE(H5O_copy_dtype_merge_list_t, dt_list);
+        dt_list = tmp_node;
+    } /* end while */
+
+    FUNC_LEAVE_NOAPI(NULL);
+} /* H5P__free_merge_comm_dtype_list */
+
+
+/*--------------------------------------------------------------------------
+ * Function:	H5P__ocpy_merge_comm_dt_list_copy
+ *
+ * Purpose:	Copy the merge committed datatype list
+ *
+ * Return:	Success:	Non-negative
+ * 		Failure:	Negative
+ *
+ * Programmer:	Quincey Koziol
+ *		Friday, August 31, 2012
+ *
+ *--------------------------------------------------------------------------
+ */
 /* ARGSUSED */
 static herr_t
-H5P_ocpy_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
+H5P__ocpy_merge_comm_dt_list_copy(const char UNUSED *name, size_t UNUSED size,
+    void *value)
 {
-    H5O_copy_dtype_merge_list_t *src_dt_list, *dst_dt_list = NULL; /* Source & destination merge named datatype lists */
+    const H5O_copy_dtype_merge_list_t *src_dt_list;     /* Source merge named datatype lists */
+    H5O_copy_dtype_merge_list_t *dst_dt_list = NULL;    /* Destination merge named datatype lists */
     H5O_copy_dtype_merge_list_t *dst_dt_list_tail = NULL, *tmp_dt_list = NULL; /* temporary merge named datatype lists */
-    H5P_genplist_t *src_plist;                  /* Pointer to source property list */
-    H5P_genplist_t *dst_plist;                  /* Pointer to destination property list */
-    herr_t         ret_value = SUCCEED;         /* Return value */
+    herr_t         ret_value = SUCCEED;
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC
 
-    /* Verify property list IDs */
-    if(NULL == (dst_plist = (H5P_genplist_t *)H5I_object(dst_plist_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an object copy property list")
-    if(NULL == (src_plist = (H5P_genplist_t *)H5I_object(src_plist_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an object copy property list")
-
-    /* Get the merge committed dtype list property from the old property list */
-    if(H5P_get(src_plist, H5O_CPY_MERGE_COMM_DT_LIST_NAME, &src_dt_list) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get merge named dtype list")
+    HDassert(value);
 
     /* Make copy of merge committed dtype list */
+    src_dt_list = *(const H5O_copy_dtype_merge_list_t **)value;
     while(src_dt_list) {
         /* Copy src_dt_list */
         if(NULL == (tmp_dt_list = H5FL_CALLOC(H5O_copy_dtype_merge_list_t)))
@@ -216,14 +240,12 @@ H5P_ocpy_copy(hid_t dst_plist_id, hid_t src_plist_id, void UNUSED *copy_data)
         src_dt_list = src_dt_list->next;
     } /* end while */
 
-    /* Set the merge named dtype list property for the destination property list
-     */
-    if(H5P_set(dst_plist, H5O_CPY_MERGE_COMM_DT_LIST_NAME, &dst_dt_list) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set merge committed dtype list")
+    /* Set the merge named dtype list property for the destination property list */
+    *(H5O_copy_dtype_merge_list_t **)value = dst_dt_list;
 
 done:
     if(ret_value < 0) {
-        dst_dt_list = H5P_free_merge_comm_dtype_list(dst_dt_list);
+        dst_dt_list = H5P__free_merge_comm_dtype_list(dst_dt_list);
         if(tmp_dt_list) {
             tmp_dt_list->path = (char *)H5MM_xfree(tmp_dt_list->path);
             tmp_dt_list = H5FL_FREE(H5O_copy_dtype_merge_list_t, tmp_dt_list);
@@ -231,53 +253,11 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocpy_copy() */
-
-
-/*-------------------------------------------------------------------------
- * Function:       H5P_ocpy_close
- *
- * Purpose:        Callback routine which is called whenever any object copy
- *                 property list is closed.  This routine performs any generic
- *                 cleanup needed on the properties the library put into the
- *                 list.
- *
- * Return:         Success:        Non-negative
- *                 Failure:        Negative
- *
- * Programmer:     Neil Fortner
- *                 Friday, October 28, 2011
- *
- *-------------------------------------------------------------------------
- */
-/* ARGSUSED */
-static herr_t
-H5P_ocpy_close(hid_t ocpypl_id, void UNUSED *close_data)
-{
-    H5O_copy_dtype_merge_list_t *dt_list;       /* Merge named datatype list */
-    H5P_genplist_t *plist;                      /* Property list */
-    herr_t         ret_value = SUCCEED;         /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    /* Check arguments */
-    if(NULL == (plist = (H5P_genplist_t *)H5I_object(ocpypl_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an object copy property list")
-
-    /* Get the merge named dtype list property from the old property list */
-    if(H5P_get(plist, H5O_CPY_MERGE_COMM_DT_LIST_NAME, &dt_list) < 0)
-        HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get merge named dtype list")
-
-    /* Free the merge named dtype list */
-    dt_list = H5P_free_merge_comm_dtype_list(dt_list);
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocpy_close() */
+} /* end H5P__ocpy_merge_comm_dt_list_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function:       H5P_ocpy_merge_comm_dt_list_cmp
+ * Function:       H5P__ocpy_merge_comm_dt_list_cmp
  *
  * Purpose:        Callback routine which is called whenever the merge
  *                 named dtype property in the object copy property list
@@ -293,14 +273,14 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5P_ocpy_merge_comm_dt_list_cmp(const void *_dt_list1, const void *_dt_list2,
+H5P__ocpy_merge_comm_dt_list_cmp(const void *_dt_list1, const void *_dt_list2,
     size_t UNUSED size)
 {
     const H5O_copy_dtype_merge_list_t *dt_list1 = *(H5O_copy_dtype_merge_list_t * const *)_dt_list1,     /* Create local aliases for values */
         *dt_list2 = *(H5O_copy_dtype_merge_list_t * const *)_dt_list2;
     herr_t ret_value = 0;       /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_STATIC_NOERR
 
     /* Sanity check */
     HDassert(_dt_list1);
@@ -325,37 +305,35 @@ H5P_ocpy_merge_comm_dt_list_cmp(const void *_dt_list1, const void *_dt_list2,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_ocpy_merge_comm_dt_list_cmp() */
+} /* end H5P__ocpy_merge_comm_dt_list_cmp() */
 
 
-/*-------------------------------------------------------------------------
- * Function:    H5P_free_merge_comm_dtype_list
+/*--------------------------------------------------------------------------
+ * Function:	H5P__ocpy_merge_comm_dt_list_close
  *
- * Purpose:     Frees the provided merge named dtype list
+ * Purpose:	Close the merge common datatype list property
  *
- * Return:      NULL
+ * Return:	Success:	Non-negative
+ * 		Failure:	Negative
  *
- * Programmer:  Neil Fortner
- *              October 27, 2011
- *-------------------------------------------------------------------------
+ * Programmer:	Quincey Koziol
+ *		Friday, August 31, 2012
+ *
+ *---------------------------------------------------------------------------
  */
-static H5O_copy_dtype_merge_list_t *
-H5P_free_merge_comm_dtype_list(H5O_copy_dtype_merge_list_t *dt_list)
+/* ARGSUSED */
+static herr_t
+H5P__ocpy_merge_comm_dt_list_close(const char UNUSED *name, size_t UNUSED size, void *value)
 {
-    H5O_copy_dtype_merge_list_t *tmp_node;
+    FUNC_ENTER_STATIC_NOERR
 
-    FUNC_ENTER_NOAPI_NOINIT
+    HDassert(value);
 
-    /* Free the list */
-    while(dt_list) {
-        tmp_node = dt_list->next;
-        (void)H5MM_xfree(dt_list->path);
-        (void)H5FL_FREE(H5O_copy_dtype_merge_list_t, dt_list);
-        dt_list = tmp_node;
-    } /* end while */
+    /* Free the merge named dtype list */
+    H5P__free_merge_comm_dtype_list(*(H5O_copy_dtype_merge_list_t **)value);
 
-    FUNC_LEAVE_NOAPI(NULL);
-} /* H5P_free_merge_comm_dtype_list */
+    FUNC_LEAVE_NOAPI(SUCCEED)
+} /* end H5P__ocpy_merge_comm_dt_list_close() */
 
 
 /*-------------------------------------------------------------------------
@@ -540,7 +518,7 @@ H5Pfree_merge_committed_dtype_paths(hid_t plist_id)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get merge committed dtype list")
 
     /* Free dtype list */
-    dt_list = H5P_free_merge_comm_dtype_list(dt_list);
+    dt_list = H5P__free_merge_comm_dtype_list(dt_list);
 
     /* Update the list stored in the property list (to NULL) */
     if(H5P_set(plist, H5O_CPY_MERGE_COMM_DT_LIST_NAME, &dt_list) < 0)
diff --git a/src/H5Ppkg.h b/src/H5Ppkg.h
index 1e71049..7768eec 100644
--- a/src/H5Ppkg.h
+++ b/src/H5Ppkg.h
@@ -84,23 +84,23 @@ typedef struct H5P_genprop_t {
 /* Define structure to hold class information */
 struct H5P_genclass_t {
     struct H5P_genclass_t *parent;     /* Pointer to parent class */
-    char *name;         /* Name of property list class */
-    size_t  nprops;     /* Number of properties in class */
+    char      *name;       /* Name of property list class */
+    H5P_plist_type_t type; /* Type of property */
+    size_t     nprops;     /* Number of properties in class */
     unsigned   plists;     /* Number of property lists that have been created since the last modification to the class */
     unsigned   classes;    /* Number of classes that have been derived since the last modification to the class */
     unsigned   ref_count;  /* Number of oustanding ID's open on this class object */
-    hbool_t    internal;   /* Whether this class is internal to the library or not */
     hbool_t    deleted;    /* Whether this class has been deleted and is waiting for dependent classes & proplists to close */
     unsigned   revision;   /* Revision number of a particular class (global) */
-    H5SL_t *props;      /* Skip list containing properties */
+    H5SL_t    *props;      /* Skip list containing properties */
 
     /* Callback function pointers & info */
     H5P_cls_create_func_t create_func;  /* Function to call when a property list is created */
-    void *create_data;  /* Pointer to user data to pass along to create callback */
-    H5P_cls_copy_func_t copy_func;   /* Function to call when a property list is copied */
-    void *copy_data;    /* Pointer to user data to pass along to copy callback */
-    H5P_cls_close_func_t close_func;   /* Function to call when a property list is closed */
-    void *close_data;   /* Pointer to user data to pass along to close callback */
+    void *create_data;     /* Pointer to user data to pass along to create callback */
+    H5P_cls_copy_func_t copy_func;      /* Function to call when a property list is copied */
+    void *copy_data;       /* Pointer to user data to pass along to copy callback */
+    H5P_cls_close_func_t close_func;    /* Function to call when a property list is closed */
+    void *close_data;      /* Pointer to user data to pass along to close callback */
 };
 
 /* Define structure to hold property list information */
@@ -123,6 +123,7 @@ typedef herr_t (*H5P_reg_prop_func_t)(H5P_genclass_t *pclass);
  */
 typedef struct H5P_libclass_t {
     const char	*name;		        /* Class name */
+    H5P_plist_type_t type;              /* Class type */
 
     hid_t const * const par_class_id;   /* Pointer to global parent class property list class ID */
     hid_t * const class_id;             /* Pointer to global property list class ID */
@@ -138,6 +139,8 @@ typedef struct H5P_libclass_t {
     void *close_data;                   /* Pointer to user data to pass along to close callback */
 } H5P_libclass_t;
 
+/* Property list/class iterator callback function pointer */
+typedef int (*H5P_iterate_int_t)(H5P_genprop_t *prop, void *udata);
 
 /*****************************/
 /* Package Private Variables */
@@ -150,7 +153,7 @@ typedef struct H5P_libclass_t {
 
 /* Private functions, not part of the publicly documented API */
 H5_DLL H5P_genclass_t *H5P_create_class(H5P_genclass_t *par_class,
-    const char *name, unsigned internal,
+    const char *name, H5P_plist_type_t type,
     H5P_cls_create_func_t cls_create, void *create_data,
     H5P_cls_copy_func_t cls_copy, void *copy_data,
     H5P_cls_close_func_t cls_close, void *close_data);
@@ -168,18 +171,19 @@ H5_DLL herr_t H5P_register(H5P_genclass_t **pclass, const char *name, size_t siz
 H5_DLL herr_t H5P_add_prop(H5SL_t *props, H5P_genprop_t *prop);
 H5_DLL herr_t H5P_access_class(H5P_genclass_t *pclass, H5P_class_mod_t mod);
 H5_DLL htri_t H5P_exist_pclass(H5P_genclass_t *pclass, const char *name);
-H5_DLL herr_t H5P_get_size_plist(H5P_genplist_t *plist, const char *name,
+H5_DLL herr_t H5P_get_size_plist(const H5P_genplist_t *plist, const char *name,
     size_t *size);
 H5_DLL herr_t H5P_get_size_pclass(H5P_genclass_t *pclass, const char *name,
     size_t *size);
 H5_DLL H5P_genclass_t *H5P_get_class(const H5P_genplist_t *plist);
 H5_DLL herr_t H5P_get_nprops_plist(const H5P_genplist_t *plist, size_t *nprops);
 H5_DLL int H5P_cmp_class(const H5P_genclass_t *pclass1, const H5P_genclass_t *pclass2);
-H5_DLL int H5P_cmp_plist(const H5P_genplist_t *plist1, const H5P_genplist_t *plist2);
-H5_DLL int H5P_iterate_plist(hid_t plist_id, int *idx, H5P_iterate_t iter_func,
-    void *iter_data);
-H5_DLL int H5P_iterate_pclass(hid_t pclass_id, int *idx, H5P_iterate_t iter_func,
-    void *iter_data);
+H5_DLL herr_t H5P_cmp_plist(const H5P_genplist_t *plist1, const H5P_genplist_t *plist2,
+    int *cmp_ret);
+H5_DLL int H5P_iterate_plist(const H5P_genplist_t *plist, hbool_t iter_all_prop,
+    int *idx, H5P_iterate_int_t iter_func, void *iter_data);
+H5_DLL int H5P_iterate_pclass(const H5P_genclass_t *pclass, int *idx,
+    H5P_iterate_int_t iter_func, void *iter_data);
 H5_DLL herr_t H5P_copy_prop_plist(hid_t dst_id, hid_t src_id, const char *name);
 H5_DLL herr_t H5P_copy_prop_pclass(hid_t dst_id, hid_t src_id, const char *name);
 H5_DLL herr_t H5P_unregister(H5P_genclass_t *pclass, const char *name);
@@ -190,6 +194,7 @@ H5_DLL herr_t H5P_close_class(void *_pclass);
 H5_DLL herr_t H5P_get_filter(const H5Z_filter_info_t *filter,
     unsigned int *flags, size_t *cd_nelmts, unsigned cd_values[],
     size_t namelen, char name[], unsigned *filter_config);
+H5_DLL H5P_genprop_t *H5P__find_prop_plist(const H5P_genplist_t *plist, const char *name);
 
 /* Testing functions */
 #ifdef H5P_TESTING
diff --git a/src/H5Pprivate.h b/src/H5Pprivate.h
index ab3f1d0..c750070 100644
--- a/src/H5Pprivate.h
+++ b/src/H5Pprivate.h
@@ -42,6 +42,27 @@
 typedef struct H5P_genplist_t H5P_genplist_t;
 typedef struct H5P_genclass_t H5P_genclass_t;
 
+typedef enum H5P_plist_type_t {
+    H5P_TYPE_USER              = 0,
+    H5P_TYPE_ROOT              = 1,
+    H5P_TYPE_OBJECT_CREATE     = 2,
+    H5P_TYPE_FILE_CREATE       = 3,
+    H5P_TYPE_FILE_ACCESS       = 4,
+    H5P_TYPE_DATASET_CREATE    = 5,
+    H5P_TYPE_DATASET_ACCESS    = 6,
+    H5P_TYPE_DATASET_XFER      = 7,
+    H5P_TYPE_FILE_MOUNT        = 8,
+    H5P_TYPE_GROUP_CREATE      = 9,
+    H5P_TYPE_GROUP_ACCESS      = 10,
+    H5P_TYPE_DATATYPE_CREATE   = 11,
+    H5P_TYPE_DATATYPE_ACCESS   = 12,
+    H5P_TYPE_STRING_CREATE     = 13,
+    H5P_TYPE_ATTRIBUTE_CREATE  = 14,
+    H5P_TYPE_OBJECT_COPY       = 15,
+    H5P_TYPE_LINK_CREATE       = 16,
+    H5P_TYPE_LINK_ACCESS       = 17,
+    H5P_TYPE_MAX_TYPE
+} H5P_plist_type_t;
 
 /*****************************/
 /* Library Private Variables */
@@ -66,7 +87,7 @@ H5_DLL herr_t H5P_insert(H5P_genplist_t *plist, const char *name, size_t size,
     H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
     H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
 H5_DLL herr_t H5P_remove(hid_t plist_id, H5P_genplist_t *plist, const char *name);
-H5_DLL htri_t H5P_exist_plist(H5P_genplist_t *plist, const char *name);
+H5_DLL htri_t H5P_exist_plist(const H5P_genplist_t *plist, const char *name);
 H5_DLL char *H5P_get_class_name(H5P_genclass_t *pclass);
 H5_DLL herr_t H5P_get_nprops_pclass(const H5P_genclass_t *pclass, size_t *nprops,
     hbool_t recurse);
@@ -100,7 +121,7 @@ H5_DLL size_t H5P_peek_size_t(H5P_genplist_t *plist, const char *name);
 /* Private DCPL routines */
 H5_DLL herr_t H5P_fill_value_defined(H5P_genplist_t *plist,
     H5D_fill_value_t *status);
-H5_DLL herr_t H5P_get_fill_value(H5P_genplist_t *plist, const H5T_t *type,
+H5_DLL herr_t H5P_get_fill_value(H5P_genplist_t *plist, H5T_t *type,
     void *value, hid_t dxpl_id);
 
 #endif /* _H5Pprivate_H */
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index c06ab39..8681f65 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -153,6 +153,19 @@ typedef enum H5D_mpio_actual_io_mode_t {
     H5D_MPIO_CONTIGUOUS_COLLECTIVE = 0x4
 } H5D_mpio_actual_io_mode_t; 
 
+/* Broken collective IO property */
+typedef enum H5D_mpio_no_collective_cause_t {
+    H5D_MPIO_COLLECTIVE = 0x00,
+    H5D_MPIO_SET_INDEPENDENT = 0x01,
+    H5D_MPIO_DATATYPE_CONVERSION = 0x02,
+    H5D_MPIO_DATA_TRANSFORMS = 0x04,
+    H5D_MPIO_SET_MPIPOSIX = 0x08,
+    H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES = 0x10,
+    H5D_MPIO_POINT_SELECTIONS = 0x20,
+    H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 0x40,
+    H5D_MPIO_FILTERS = 0x80
+} H5D_mpio_no_collective_cause_t;
+
 /********************/
 /* Public Variables */
 /********************/
@@ -400,6 +413,7 @@ H5_DLL herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, voi
 #ifdef H5_HAVE_PARALLEL
 H5_DLL herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode);
 H5_DLL herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode);
+H5_DLL herr_t H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause);
 #endif /* H5_HAVE_PARALLEL */
 
 /* Link creation property list (LCPL) routines */
diff --git a/src/H5Pstrcpl.c b/src/H5Pstrcpl.c
index 91cf70b..505e35f 100644
--- a/src/H5Pstrcpl.c
+++ b/src/H5Pstrcpl.c
@@ -63,7 +63,7 @@
 /********************/
 
 /* Property class callbacks */
-static herr_t H5P_strcrt_reg_prop(H5P_genclass_t *pclass);
+static herr_t H5P__strcrt_reg_prop(H5P_genclass_t *pclass);
 
 
 /*********************/
@@ -73,10 +73,11 @@ static herr_t H5P_strcrt_reg_prop(H5P_genclass_t *pclass);
 /* String creation property list class library initialization object */
 const H5P_libclass_t H5P_CLS_STRCRT[1] = {{
     "string create",		/* Class name for debugging     */
+    H5P_TYPE_STRING_CREATE,     /* Class type                   */
     &H5P_CLS_ROOT_g,		/* Parent class ID              */
     &H5P_CLS_STRING_CREATE_g,	/* Pointer to class ID          */
     NULL,			/* Pointer to default property list ID */
-    H5P_strcrt_reg_prop,	/* Default property registration routine */
+    H5P__strcrt_reg_prop,	/* Default property registration routine */
     NULL,		        /* Class creation callback      */
     NULL,		        /* Class creation callback info */
     NULL,			/* Class copy callback          */
@@ -98,9 +99,9 @@ const H5P_libclass_t H5P_CLS_STRCRT[1] = {{
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5P_strcrt_reg_prop
+ * Function:    H5P__strcrt_reg_prop
  *
- * Purpose:     Register the dataset creation property list class's properties
+ * Purpose:     Register the string creation property list class's properties
  *
  * Return:      Non-negative on success/Negative on failure
  *
@@ -108,42 +109,39 @@ const H5P_libclass_t H5P_CLS_STRCRT[1] = {{
  *              October 31, 2006
  *-------------------------------------------------------------------------
  */
-herr_t
-H5P_strcrt_reg_prop(H5P_genclass_t *pclass)
+static herr_t
+H5P__strcrt_reg_prop(H5P_genclass_t *pclass)
 {
     H5T_cset_t char_encoding = H5P_STRCRT_CHAR_ENCODING_DEF;  /* Default character set encoding */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC
 
     /* Register character encoding */
     if(H5P_register_real(pclass, H5P_STRCRT_CHAR_ENCODING_NAME, H5P_STRCRT_CHAR_ENCODING_SIZE, &char_encoding, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
-         HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5P_strcrt_reg_prop() */
+} /* end H5P__strcrt_reg_prop() */
 
 
 /*-------------------------------------------------------------------------
- * Function:  H5Pset_char_encoding
- *
- * Purpose:   Sets the character encoding of the string.
- *
- * Return:    Non-negative on success/Negative on failure
+ * Function:    H5Pset_char_encoding
  *
- * Programmer:        James Laird
- *            Wednesday, October 26, 2005
+ * Purpose:     Sets the character encoding of the string.
  *
- * Modifications:
+ * Return:      Non-negative on success/Negative on failure
  *
+ * Programmer:  James Laird
+ *              Wednesday, October 26, 2005
  *-------------------------------------------------------------------------
  */
 herr_t
 H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding)
 {
     H5P_genplist_t *plist;      /* Property list pointer */
-    herr_t ret_value=SUCCEED;   /* return value */
+    herr_t ret_value = SUCCEED;   /* return value */
 
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "iTc", plist_id, encoding);
@@ -153,7 +151,7 @@ H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding)
         HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "character encoding is not valid")
 
     /* Get the plist structure */
-    if(NULL == (plist = H5P_object_verify(plist_id,H5P_STRING_CREATE)))
+    if(NULL == (plist = H5P_object_verify(plist_id, H5P_STRING_CREATE)))
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Set the character encoding */
diff --git a/src/H5R.c b/src/H5R.c
index 3908426..2f4cca5 100644
--- a/src/H5R.c
+++ b/src/H5R.c
@@ -13,12 +13,19 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
+/****************/
+/* Module Setup */
+/****************/
+
 #define H5R_PACKAGE		/*suppress error about including H5Rpkg   */
 
 /* Interface initialization */
 #define H5_INTERFACE_INIT_FUNC	H5R_init_interface
 
 
+/***********/
+/* Headers */
+/***********/
 #include "H5private.h"		/* Generic Functions			*/
 #include "H5ACprivate.h"        /* Metadata cache                       */
 #include "H5Dprivate.h"		/* Datasets				*/
@@ -30,12 +37,21 @@
 #include "H5Rpkg.h"		/* References				*/
 #include "H5Sprivate.h"		/* Dataspaces 				*/
 
-/* Local macro definitions */
 
-/* Number of reserved IDs in ID group */
-#define H5R_RESERVED_ATOMS  0
+/****************/
+/* Local Macros */
+/****************/
+
+
+/******************/
+/* Local Typedefs */
+/******************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
 
-/* Static functions */
 static herr_t H5R_create(void *ref, H5G_loc_t *loc, const char *name,
         H5R_type_t ref_type, H5S_t *space, hid_t dxpl_id);
 static hid_t H5R_dereference(H5F_t *file, hid_t dxpl_id, H5R_type_t ref_type,
@@ -44,6 +60,31 @@ static H5S_t * H5R_get_region(H5F_t *file, hid_t dxpl_id, const void *_ref);
 static ssize_t H5R_get_name(H5F_t *file, hid_t lapl_id, hid_t dxpl_id, hid_t id,
     H5R_type_t ref_type, const void *_ref, char *name, size_t size);
 
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
+
+
+/*******************/
+/* Local Variables */
+/*******************/
+
+/* Reference ID class */
+static const H5I_class_t H5I_REFERENCE_CLS[1] = {{
+    H5I_REFERENCE,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    0,				/* # of reserved IDs for class */
+    NULL			/* Callback routine for closing objects of this class */
+}};
+
+
 
 /*-------------------------------------------------------------------------
  * Function:	H5R_init
@@ -91,7 +132,7 @@ H5R_init_interface(void)
     FUNC_ENTER_NOAPI_NOINIT
 
     /* Initialize the atom group for the file IDs */
-    if(H5I_register_type(H5I_REFERENCE, (size_t)H5I_REFID_HASHSIZE, H5R_RESERVED_ATOMS, (H5I_free_t)NULL) < 0)
+    if(H5I_register_type(H5I_REFERENCE_CLS) < 0)
 	HGOTO_ERROR(H5E_REFERENCE, H5E_CANTINIT, FAIL, "unable to initialize interface");
 
 done:
@@ -178,7 +219,7 @@ H5R_create(void *_ref, H5G_loc_t *loc, const char *name, H5R_type_t ref_type, H5
     HDassert(_ref);
     HDassert(loc);
     HDassert(name);
-    HDassert(ref_type > H5R_BADTYPE || ref_type < H5R_MAXTYPE);
+    HDassert(ref_type > H5R_BADTYPE && ref_type < H5R_MAXTYPE);
 
     /* Set up object location to fill in */
     obj_loc.oloc = &oloc;
@@ -233,7 +274,7 @@ H5R_create(void *_ref, H5G_loc_t *loc, const char *name, H5R_type_t ref_type, H5
                 HGOTO_ERROR(H5E_REFERENCE, H5E_CANTINIT, FAIL, "Invalid amount of space for serializing selection")
 
             /* Increase buffer size to allow for the dataset OID */
-            buf_size += sizeof(haddr_t);
+            buf_size += (hssize_t)sizeof(haddr_t);
 
             /* Allocate the space to store the serialized information */
             H5_CHECK_OVERFLOW(buf_size, hssize_t, size_t);
@@ -375,7 +416,7 @@ H5R_dereference(H5F_t *file, hid_t dxpl_id, H5R_type_t ref_type, const void *_re
     FUNC_ENTER_NOAPI_NOINIT
 
     HDassert(_ref);
-    HDassert(ref_type > H5R_BADTYPE || ref_type < H5R_MAXTYPE);
+    HDassert(ref_type > H5R_BADTYPE && ref_type < H5R_MAXTYPE);
     HDassert(file);
 
     /* Initialize the object location */
@@ -477,6 +518,8 @@ H5R_dereference(H5F_t *file, hid_t dxpl_id, H5R_type_t ref_type, const void *_re
             } /* end case */
             break;
 
+        case H5O_TYPE_UNKNOWN:
+        case H5O_TYPE_NTYPES:
         default:
             HGOTO_ERROR(H5E_REFERENCE, H5E_BADTYPE, FAIL, "can't identify type of object referenced")
      } /* end switch */
@@ -531,7 +574,7 @@ H5Rdereference(hid_t id, H5R_type_t ref_type, const void *_ref)
 
     /* Create reference */
     if((ret_value = H5R_dereference(file, H5AC_dxpl_id, ref_type, _ref, TRUE)) < 0)
-        HGOTO_ERROR(H5E_REFERENCE, H5E_CANTINIT, FAIL, "unable dereference object")
+        HGOTO_ERROR(H5E_REFERENCE, H5E_CANTINIT, FAIL, "unable to dereference object")
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -825,7 +868,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-ssize_t
+static ssize_t
 H5R_get_name(H5F_t *f, hid_t lapl_id, hid_t dxpl_id, hid_t id, H5R_type_t ref_type,
     const void *_ref, char *name, size_t size)
 {
diff --git a/src/H5S.c b/src/H5S.c
index 5d99066..7ef1da4 100644
--- a/src/H5S.c
+++ b/src/H5S.c
@@ -13,12 +13,19 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
+/****************/
+/* Module Setup */
+/****************/
+
 #define H5S_PACKAGE		/*suppress error about including H5Spkg	  */
 
 /* Interface initialization */
 #define H5_INTERFACE_INIT_FUNC	H5S_init_interface
 
 
+/***********/
+/* Headers */
+/***********/
 #include "H5private.h"		/* Generic Functions			*/
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5Fprivate.h"		/* Files				*/
@@ -28,26 +35,48 @@
 #include "H5Oprivate.h"		/* Object headers		  	*/
 #include "H5Spkg.h"		/* Dataspaces 				*/
 
-/* Local macro definitions */
 
-/* Number of reserved IDs in ID group */
-#define H5S_RESERVED_ATOMS  2
+/****************/
+/* Local Macros */
+/****************/
 
 /* Version of datatype encoding */
 #define H5S_ENCODE_VERSION      0
 
-/* Local static function prototypes */
+
+/******************/
+/* Local Typedefs */
+/******************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
 static herr_t H5S_set_extent_simple (H5S_t *space, unsigned rank,
     const hsize_t *dims, const hsize_t *max);
 static htri_t H5S_is_simple(const H5S_t *sdim);
 static herr_t H5S_encode(H5S_t *obj, unsigned char *buf, size_t *nalloc);
 static H5S_t *H5S_decode(const unsigned char *buf);
 
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
 #ifdef H5_HAVE_PARALLEL
 /* Global vars whose value can be set from environment variable also */
 hbool_t H5S_mpi_opt_types_g = TRUE;
 #endif /* H5_HAVE_PARALLEL */
 
+
+/*******************/
+/* Local Variables */
+/*******************/
+
 /* Declare a free list to manage the H5S_extent_t struct */
 H5FL_DEFINE(H5S_extent_t);
 
@@ -57,6 +86,16 @@ H5FL_DEFINE(H5S_t);
 /* Declare a free list to manage the array's of hsize_t's */
 H5FL_ARR_DEFINE(hsize_t,H5S_MAX_RANK);
 
+/* Dataspace ID class */
+static const H5I_class_t H5I_DATASPACE_CLS[1] = {{
+    H5I_DATASPACE,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    2,				/* # of reserved IDs for class */
+    (H5I_free_t)H5S_close	/* Callback routine for closing objects of this class */
+}};
+
+
 
 /*--------------------------------------------------------------------------
 NAME
@@ -78,7 +117,7 @@ H5S_init_interface(void)
     FUNC_ENTER_NOAPI_NOINIT
 
     /* Initialize the atom group for the file IDs */
-    if(H5I_register_type(H5I_DATASPACE, (size_t)H5I_DATASPACEID_HASHSIZE, H5S_RESERVED_ATOMS, (H5I_free_t)H5S_close) < 0)
+    if(H5I_register_type(H5I_DATASPACE_CLS) < 0)
 	HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
 #ifdef H5_HAVE_PARALLEL
diff --git a/src/H5SL.c b/src/H5SL.c
index b6c9f8e..7581858 100644
--- a/src/H5SL.c
+++ b/src/H5SL.c
@@ -745,7 +745,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5SL_release_common(H5SL_t *slist, H5SL_operator_t op, void *op_data)
 {
     H5SL_node_t *node, *next_node;      /* Pointers to skip list nodes */
@@ -817,7 +817,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5SL_close_common(H5SL_t *slist, H5SL_operator_t op, void *op_data)
 {
     herr_t ret_value = SUCCEED;
@@ -873,7 +873,7 @@ H5SL_create(H5SL_type_t type, H5SL_cmp_t cmp)
     FUNC_ENTER_NOAPI(NULL)
 
     /* Check args */
-    HDassert(type>=H5SL_TYPE_INT && type<=H5SL_TYPE_GENERIC);
+    HDassert(type >= H5SL_TYPE_INT && type <= H5SL_TYPE_GENERIC);
 
     /* Allocate skip list structure */
     if(NULL == (new_slist = H5FL_MALLOC(H5SL_t)))
@@ -889,7 +889,7 @@ H5SL_create(H5SL_type_t type, H5SL_cmp_t cmp)
     new_slist->nobjs = 0;
 
     /* Allocate the header node */
-    if(NULL == (header = H5SL_new_node(NULL, NULL, ULONG_MAX)))
+    if(NULL == (header = H5SL_new_node(NULL, NULL, (uint32_t)ULONG_MAX)))
         HGOTO_ERROR(H5E_SLIST ,H5E_NOSPACE, NULL, "can't create new skip list node")
 
     /* Initialize header node's forward pointer */
diff --git a/src/H5Sall.c b/src/H5Sall.c
index c99d699..8d56c80 100644
--- a/src/H5Sall.c
+++ b/src/H5Sall.c
@@ -112,7 +112,7 @@ static const H5S_sel_iter_class_t H5S_sel_iter_all[1] = {{
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5S_all_iter_init (H5S_sel_iter_t *iter, const H5S_t *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -445,7 +445,7 @@ H5S_all_copy(H5S_t *dst, const H5S_t UNUSED *src, hbool_t UNUSED share_selection
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_all_is_valid (const H5S_t UNUSED *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -475,7 +475,7 @@ H5S_all_is_valid (const H5S_t UNUSED *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-hssize_t
+static hssize_t
 H5S_all_serial_size (const H5S_t UNUSED *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -509,7 +509,7 @@ H5S_all_serial_size (const H5S_t UNUSED *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_all_serialize (const H5S_t *space, uint8_t *buf)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -545,7 +545,7 @@ H5S_all_serialize (const H5S_t *space, uint8_t *buf)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_all_deserialize(H5S_t *space, const uint8_t UNUSED *buf)
 {
     herr_t ret_value;   /* return value */
@@ -588,7 +588,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_all_bounds(const H5S_t *space, hsize_t *start, hsize_t *end)
 {
     unsigned rank;                  /* Dataspace rank */
@@ -633,7 +633,7 @@ H5S_all_bounds(const H5S_t *space, hsize_t *start, hsize_t *end)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_all_offset(const H5S_t UNUSED *space, hsize_t *offset)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -666,7 +666,7 @@ H5S_all_offset(const H5S_t UNUSED *space, hsize_t *offset)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_all_is_contiguous(const H5S_t UNUSED *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -695,7 +695,7 @@ H5S_all_is_contiguous(const H5S_t UNUSED *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_all_is_single(const H5S_t UNUSED *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -725,7 +725,7 @@ H5S_all_is_single(const H5S_t UNUSED *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_all_is_regular(const H5S_t UNUSED *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -755,7 +755,7 @@ H5S_all_is_regular(const H5S_t UNUSED *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_all_adjust_u(H5S_t UNUSED *space, const hsize_t UNUSED *offset)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -945,7 +945,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_all_get_seq_list(const H5S_t UNUSED *space, unsigned UNUSED flags, H5S_sel_iter_t *iter,
     size_t UNUSED maxseq, size_t maxelem, size_t *nseq, size_t *nelem,
     hsize_t *off, size_t *len)
diff --git a/src/H5Shyper.c b/src/H5Shyper.c
index 1eeb098..d88ac35 100644
--- a/src/H5Shyper.c
+++ b/src/H5Shyper.c
@@ -234,7 +234,7 @@ H5S_hyper_print_diminfo(FILE *f, const H5S_t *space)
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5S_hyper_iter_init(H5S_sel_iter_t *iter, const H5S_t *space)
 {
     const H5S_hyper_dim_t *tdiminfo;    /* Temporary pointer to diminfo information */
@@ -1614,7 +1614,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_copy (H5S_t *dst, const H5S_t *src, hbool_t share_selection)
 {
     H5S_hyper_sel_t *dst_hslab;         /* Pointer to destination hyperslab info */
@@ -1749,7 +1749,7 @@ H5S_hyper_is_valid_helper (const H5S_hyper_span_info_t *spans, const hssize_t *o
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_hyper_is_valid (const H5S_t *space)
 {
     unsigned u;                    /* Counter */
@@ -2068,7 +2068,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_serialize (const H5S_t *space, uint8_t *buf)
 {
     const H5S_hyper_dim_t *diminfo;         /* Alias for dataspace's diminfo information */
@@ -2229,7 +2229,7 @@ H5S_hyper_serialize (const H5S_t *space, uint8_t *buf)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_deserialize (H5S_t *space, const uint8_t *buf)
 {
     uint32_t rank;           	/* rank of points */
@@ -2705,7 +2705,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_bounds(const H5S_t *space, hsize_t *start, hsize_t *end)
 {
     unsigned rank;              /* Dataspace rank */
@@ -2772,7 +2772,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_offset(const H5S_t *space, hsize_t *offset)
 {
     const hssize_t *sel_offset; /* Pointer to the selection's offset */
@@ -2784,7 +2784,7 @@ H5S_hyper_offset(const H5S_t *space, hsize_t *offset)
 
     FUNC_ENTER_NOAPI(FAIL)
 
-    HDassert(space);
+    HDassert(space && space->extent.rank>0);
     HDassert(offset);
 
     /* Start at linear offset 0 */
@@ -2878,7 +2878,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_hyper_is_contiguous(const H5S_t *space)
 {
     unsigned small_contiguous,      /* Flag for small contiguous block */
@@ -3063,7 +3063,7 @@ H5S_hyper_is_contiguous(const H5S_t *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_hyper_is_single(const H5S_t *space)
 {
     H5S_hyper_span_info_t *spans;   /* Hyperslab span info node */
@@ -3133,7 +3133,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-htri_t
+static htri_t
 H5S_hyper_is_regular(const H5S_t *space)
 {
     htri_t ret_value;  /* return value */
@@ -3175,7 +3175,7 @@ H5S_hyper_is_regular(const H5S_t *space)
  *	changing the hyperslab selection of one data space causes a core dump
  *	when closing some other data space.
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_release(H5S_t *space)
 {
     herr_t ret_value = SUCCEED;
@@ -4008,7 +4008,7 @@ H5S_hyper_adjust_helper_u (H5S_hyper_span_info_t *spans, const hsize_t *offset)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_hyper_adjust_u(H5S_t *space, const hsize_t *offset)
 {
     unsigned u;                         /* Local index variable */
diff --git a/src/H5Snone.c b/src/H5Snone.c
index e9a3bf9..021dd61 100644
--- a/src/H5Snone.c
+++ b/src/H5Snone.c
@@ -113,7 +113,7 @@ static const H5S_sel_iter_class_t H5S_sel_iter_none[1] = {{
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5S_none_iter_init(H5S_sel_iter_t *iter, const H5S_t UNUSED *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -589,7 +589,7 @@ H5S_none_bounds(const H5S_t UNUSED *space, hsize_t UNUSED *start, hsize_t UNUSED
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_none_offset(const H5S_t UNUSED *space, hsize_t UNUSED *offset)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -708,7 +708,7 @@ H5S_none_is_regular(const H5S_t UNUSED *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_none_adjust_u(H5S_t UNUSED *space, const hsize_t UNUSED *offset)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
diff --git a/src/H5Spoint.c b/src/H5Spoint.c
index 7e82295..b758a92 100644
--- a/src/H5Spoint.c
+++ b/src/H5Spoint.c
@@ -120,7 +120,7 @@ H5FL_DEFINE_STATIC(H5S_pnt_list_t);
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5S_point_iter_init(H5S_sel_iter_t *iter, const H5S_t *space)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -643,7 +643,7 @@ H5S_point_copy(H5S_t *dst, const H5S_t *src, hbool_t UNUSED share_selection)
     } /* end while */
 
 done:
-    if(ret_value < 0) {
+    if(ret_value < 0 && dst->select.sel_info.pnt_lst) {
         /* Traverse the (incomplete?) dst list, freeing all memory */
         curr = dst->select.sel_info.pnt_lst->head;
         while(curr) {
@@ -1136,7 +1136,7 @@ done:
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_point_offset(const H5S_t *space, hsize_t *offset)
 {
     const hsize_t *pnt;         /* Pointer to a selected point's coordinates */
@@ -1316,7 +1316,7 @@ H5S_point_is_regular(const H5S_t *space)
  EXAMPLES
  REVISION LOG
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5S_point_adjust_u(H5S_t *space, const hsize_t *offset)
 {
     H5S_pnt_node_t *node;               /* Point node */
diff --git a/src/H5Sselect.c b/src/H5Sselect.c
index 91aed1e..9a993a5 100644
--- a/src/H5Sselect.c
+++ b/src/H5Sselect.c
@@ -67,7 +67,7 @@ H5S_select_offset(H5S_t *space, const hssize_t *offset)
 
     /* Check args */
     HDassert(space);
-    HDassert(space->extent.rank);
+    HDassert(0 < space->extent.rank && space->extent.rank <= H5S_MAX_RANK);
     HDassert(offset);
 
     /* Copy the offset over */
diff --git a/src/H5T.c b/src/H5T.c
index 37d4b68..5a3c17b 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -51,232 +51,11 @@
 #include <sys/fpu.h>
 #endif /* H5_HAVE_SYS_FPU_H */
 
-/*
- * Predefined data types. These are initialized at runtime in H5Tinit.c and
- * by H5T_init_interface() in this source file.
- *
- * If more of these are added, the new ones must be added to the list of
- * types to reset in H5T_term_interface().
- */
-hid_t H5T_IEEE_F32BE_g			= FAIL;
-hid_t H5T_IEEE_F32LE_g			= FAIL;
-hid_t H5T_IEEE_F64BE_g			= FAIL;
-hid_t H5T_IEEE_F64LE_g			= FAIL;
-
-hid_t H5T_VAX_F32_g			= FAIL;
-hid_t H5T_VAX_F64_g			= FAIL;
-
-hid_t H5T_STD_I8BE_g			= FAIL;
-hid_t H5T_STD_I8LE_g			= FAIL;
-hid_t H5T_STD_I16BE_g			= FAIL;
-hid_t H5T_STD_I16LE_g			= FAIL;
-hid_t H5T_STD_I32BE_g			= FAIL;
-hid_t H5T_STD_I32LE_g			= FAIL;
-hid_t H5T_STD_I64BE_g			= FAIL;
-hid_t H5T_STD_I64LE_g			= FAIL;
-hid_t H5T_STD_U8BE_g			= FAIL;
-hid_t H5T_STD_U8LE_g			= FAIL;
-hid_t H5T_STD_U16BE_g			= FAIL;
-hid_t H5T_STD_U16LE_g			= FAIL;
-hid_t H5T_STD_U32BE_g			= FAIL;
-hid_t H5T_STD_U32LE_g			= FAIL;
-hid_t H5T_STD_U64BE_g			= FAIL;
-hid_t H5T_STD_U64LE_g			= FAIL;
-hid_t H5T_STD_B8BE_g			= FAIL;
-hid_t H5T_STD_B8LE_g			= FAIL;
-hid_t H5T_STD_B16BE_g			= FAIL;
-hid_t H5T_STD_B16LE_g			= FAIL;
-hid_t H5T_STD_B32BE_g			= FAIL;
-hid_t H5T_STD_B32LE_g			= FAIL;
-hid_t H5T_STD_B64BE_g			= FAIL;
-hid_t H5T_STD_B64LE_g 			= FAIL;
-hid_t H5T_STD_REF_OBJ_g 		= FAIL;
-hid_t H5T_STD_REF_DSETREG_g 		= FAIL;
-
-hid_t H5T_UNIX_D32BE_g			= FAIL;
-hid_t H5T_UNIX_D32LE_g			= FAIL;
-hid_t H5T_UNIX_D64BE_g			= FAIL;
-hid_t H5T_UNIX_D64LE_g 			= FAIL;
-
-hid_t H5T_C_S1_g			= FAIL;
-
-hid_t H5T_FORTRAN_S1_g			= FAIL;
-
-hid_t H5T_NATIVE_SCHAR_g		= FAIL;
-hid_t H5T_NATIVE_UCHAR_g		= FAIL;
-hid_t H5T_NATIVE_SHORT_g		= FAIL;
-hid_t H5T_NATIVE_USHORT_g		= FAIL;
-hid_t H5T_NATIVE_INT_g			= FAIL;
-hid_t H5T_NATIVE_UINT_g			= FAIL;
-hid_t H5T_NATIVE_LONG_g			= FAIL;
-hid_t H5T_NATIVE_ULONG_g		= FAIL;
-hid_t H5T_NATIVE_LLONG_g		= FAIL;
-hid_t H5T_NATIVE_ULLONG_g		= FAIL;
-hid_t H5T_NATIVE_FLOAT_g		= FAIL;
-hid_t H5T_NATIVE_DOUBLE_g		= FAIL;
-#if H5_SIZEOF_LONG_DOUBLE !=0
-hid_t H5T_NATIVE_LDOUBLE_g		= FAIL;
-#endif
-hid_t H5T_NATIVE_B8_g			= FAIL;
-hid_t H5T_NATIVE_B16_g			= FAIL;
-hid_t H5T_NATIVE_B32_g			= FAIL;
-hid_t H5T_NATIVE_B64_g			= FAIL;
-hid_t H5T_NATIVE_OPAQUE_g		= FAIL;
-hid_t H5T_NATIVE_HADDR_g		= FAIL;
-hid_t H5T_NATIVE_HSIZE_g		= FAIL;
-hid_t H5T_NATIVE_HSSIZE_g		= FAIL;
-hid_t H5T_NATIVE_HERR_g			= FAIL;
-hid_t H5T_NATIVE_HBOOL_g		= FAIL;
-
-hid_t H5T_NATIVE_INT8_g			= FAIL;
-hid_t H5T_NATIVE_UINT8_g		= FAIL;
-hid_t H5T_NATIVE_INT_LEAST8_g		= FAIL;
-hid_t H5T_NATIVE_UINT_LEAST8_g		= FAIL;
-hid_t H5T_NATIVE_INT_FAST8_g		= FAIL;
-hid_t H5T_NATIVE_UINT_FAST8_g		= FAIL;
-
-hid_t H5T_NATIVE_INT16_g		= FAIL;
-hid_t H5T_NATIVE_UINT16_g		= FAIL;
-hid_t H5T_NATIVE_INT_LEAST16_g		= FAIL;
-hid_t H5T_NATIVE_UINT_LEAST16_g		= FAIL;
-hid_t H5T_NATIVE_INT_FAST16_g		= FAIL;
-hid_t H5T_NATIVE_UINT_FAST16_g		= FAIL;
-
-hid_t H5T_NATIVE_INT32_g		= FAIL;
-hid_t H5T_NATIVE_UINT32_g		= FAIL;
-hid_t H5T_NATIVE_INT_LEAST32_g		= FAIL;
-hid_t H5T_NATIVE_UINT_LEAST32_g		= FAIL;
-hid_t H5T_NATIVE_INT_FAST32_g		= FAIL;
-hid_t H5T_NATIVE_UINT_FAST32_g		= FAIL;
-
-hid_t H5T_NATIVE_INT64_g		= FAIL;
-hid_t H5T_NATIVE_UINT64_g		= FAIL;
-hid_t H5T_NATIVE_INT_LEAST64_g		= FAIL;
-hid_t H5T_NATIVE_UINT_LEAST64_g		= FAIL;
-hid_t H5T_NATIVE_INT_FAST64_g		= FAIL;
-hid_t H5T_NATIVE_UINT_FAST64_g		= FAIL;
-
-/*
- * Alignment constraints for native types. These are initialized at run time
- * in H5Tinit.c.  These alignments are mainly for offsets in HDF5 compound
- * datatype or C structures, which are different from the alignments for memory
- * address below this group of variables.
- */
-size_t H5T_NATIVE_SCHAR_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_UCHAR_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_SHORT_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_USHORT_COMP_ALIGN_g   	= 0;
-size_t H5T_NATIVE_INT_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_UINT_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_LONG_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_ULONG_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_LLONG_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_ULLONG_COMP_ALIGN_g	        = 0;
-size_t H5T_NATIVE_FLOAT_COMP_ALIGN_g		= 0;
-size_t H5T_NATIVE_DOUBLE_COMP_ALIGN_g	        = 0;
-#if H5_SIZEOF_LONG_DOUBLE !=0
-size_t H5T_NATIVE_LDOUBLE_COMP_ALIGN_g	        = 0;
-#endif
 
-size_t H5T_POINTER_COMP_ALIGN_g	                = 0;
-size_t H5T_HVL_COMP_ALIGN_g	                = 0;
-size_t H5T_HOBJREF_COMP_ALIGN_g	                = 0;
-size_t H5T_HDSETREGREF_COMP_ALIGN_g	        = 0;
-
-/*
- * Alignment constraints for native types. These are initialized at run time
- * in H5Tinit.c
- */
-size_t H5T_NATIVE_SCHAR_ALIGN_g		= 0;
-size_t H5T_NATIVE_UCHAR_ALIGN_g		= 0;
-size_t H5T_NATIVE_SHORT_ALIGN_g		= 0;
-size_t H5T_NATIVE_USHORT_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_ALIGN_g		= 0;
-size_t H5T_NATIVE_UINT_ALIGN_g		= 0;
-size_t H5T_NATIVE_LONG_ALIGN_g		= 0;
-size_t H5T_NATIVE_ULONG_ALIGN_g		= 0;
-size_t H5T_NATIVE_LLONG_ALIGN_g		= 0;
-size_t H5T_NATIVE_ULLONG_ALIGN_g	= 0;
-size_t H5T_NATIVE_FLOAT_ALIGN_g		= 0;
-size_t H5T_NATIVE_DOUBLE_ALIGN_g	= 0;
-#if H5_SIZEOF_LONG_DOUBLE !=0
-size_t H5T_NATIVE_LDOUBLE_ALIGN_g	= 0;
-#endif
-
-/*
- * Alignment constraints for C9x types. These are initialized at run time in
- * H5Tinit.c if the types are provided by the system. Otherwise we set their
- * values to 0 here (no alignment calculated).
- */
-size_t H5T_NATIVE_INT8_ALIGN_g		= 0;
-size_t H5T_NATIVE_UINT8_ALIGN_g		= 0;
-size_t H5T_NATIVE_INT_LEAST8_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_LEAST8_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_FAST8_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_FAST8_ALIGN_g	= 0;
-
-size_t H5T_NATIVE_INT16_ALIGN_g		= 0;
-size_t H5T_NATIVE_UINT16_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_LEAST16_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_LEAST16_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_FAST16_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_FAST16_ALIGN_g	= 0;
-
-size_t H5T_NATIVE_INT32_ALIGN_g		= 0;
-size_t H5T_NATIVE_UINT32_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_LEAST32_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_LEAST32_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_FAST32_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_FAST32_ALIGN_g	= 0;
-
-size_t H5T_NATIVE_INT64_ALIGN_g		= 0;
-size_t H5T_NATIVE_UINT64_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_LEAST64_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_LEAST64_ALIGN_g	= 0;
-size_t H5T_NATIVE_INT_FAST64_ALIGN_g	= 0;
-size_t H5T_NATIVE_UINT_FAST64_ALIGN_g	= 0;
-
-/* Useful floating-point values for conversion routines */
-/* (+/- Inf for all floating-point types) */
-float H5T_NATIVE_FLOAT_POS_INF_g        = 0.0;
-float H5T_NATIVE_FLOAT_NEG_INF_g        = 0.0;
-double H5T_NATIVE_DOUBLE_POS_INF_g      = 0.0;
-double H5T_NATIVE_DOUBLE_NEG_INF_g      = 0.0;
-
-
-/*
- * The path database. Each path has a source and destination data type pair
- * which is used as the key by which the `entries' array is sorted.
- */
-static struct {
-    int	npaths;		/*number of paths defined		*/
-    size_t	apaths;		/*number of paths allocated		*/
-    H5T_path_t	**path;		/*sorted array of path pointers		*/
-    int	nsoft;		/*number of soft conversions defined	*/
-    size_t	asoft;		/*number of soft conversions allocated	*/
-    H5T_soft_t	*soft;		/*unsorted array of soft conversions	*/
-} H5T_g;
-
-/* The native endianess of the platform */
-H5T_order_t H5T_native_order_g = H5T_ORDER_ERROR;
-
-/* Declare the free list for H5T_t's and H5T_shared_t's */
-H5FL_DEFINE(H5T_t);
-H5FL_DEFINE(H5T_shared_t);
-
-/* Declare the free list for H5T_path_t's */
-H5FL_DEFINE(H5T_path_t);
-
-/* Static local functions */
-static herr_t H5T_unregister(H5T_pers_t pers, const char *name, H5T_t *src,
-                H5T_t *dst, H5T_conv_t func, hid_t dxpl_id);
-static herr_t H5T_register(H5T_pers_t pers, const char *name, H5T_t *src,
-        H5T_t *dst, H5T_conv_t func, hid_t dxpl_id, hbool_t api_call);
-static htri_t H5T_compiler_conv(H5T_t *src, H5T_t *dst);
-static herr_t H5T_encode(H5T_t *obj, unsigned char *buf, size_t *nalloc);
-static H5T_t *H5T_decode(const unsigned char *buf);
+/****************/
+/* Local Macros */
+/****************/
 
-/* Local macro definitions */
 #define H5T_ENCODE_VERSION      0
 
 /*
@@ -478,7 +257,7 @@ static H5T_t *H5T_decode(const unsigned char *buf);
 
 #define H5T_INIT_TYPE_ALLOC_CREATE(BASE) {				      \
     /* Allocate new datatype info */					      \
-    if(NULL == (dt = H5T_alloc()))				              \
+    if(NULL == (dt = H5T__alloc()))				              \
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTALLOC, FAIL, "memory allocation failed") \
 }
 
@@ -499,6 +278,264 @@ static H5T_t *H5T_decode(const unsigned char *buf);
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register datatype atom") \
 }
 
+
+/******************/
+/* Local Typedefs */
+/******************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
+static herr_t H5T_unregister(H5T_pers_t pers, const char *name, H5T_t *src,
+                H5T_t *dst, H5T_conv_t func, hid_t dxpl_id);
+static herr_t H5T_register(H5T_pers_t pers, const char *name, H5T_t *src,
+        H5T_t *dst, H5T_conv_t func, hid_t dxpl_id, hbool_t api_call);
+static htri_t H5T_compiler_conv(H5T_t *src, H5T_t *dst);
+static herr_t H5T_encode(H5T_t *obj, unsigned char *buf, size_t *nalloc);
+static H5T_t *H5T_decode(const unsigned char *buf);
+static herr_t H5T_set_size(H5T_t *dt, size_t size);
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
+
+/* The native endianess of the platform */
+H5T_order_t H5T_native_order_g = H5T_ORDER_ERROR;
+
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+/*
+ * Predefined data types. These are initialized at runtime in H5Tinit.c and
+ * by H5T_init_interface() in this source file.
+ *
+ * If more of these are added, the new ones must be added to the list of
+ * types to reset in H5T_term_interface().
+ */
+hid_t H5T_IEEE_F32BE_g			= FAIL;
+hid_t H5T_IEEE_F32LE_g			= FAIL;
+hid_t H5T_IEEE_F64BE_g			= FAIL;
+hid_t H5T_IEEE_F64LE_g			= FAIL;
+
+hid_t H5T_VAX_F32_g			= FAIL;
+hid_t H5T_VAX_F64_g			= FAIL;
+
+hid_t H5T_STD_I8BE_g			= FAIL;
+hid_t H5T_STD_I8LE_g			= FAIL;
+hid_t H5T_STD_I16BE_g			= FAIL;
+hid_t H5T_STD_I16LE_g			= FAIL;
+hid_t H5T_STD_I32BE_g			= FAIL;
+hid_t H5T_STD_I32LE_g			= FAIL;
+hid_t H5T_STD_I64BE_g			= FAIL;
+hid_t H5T_STD_I64LE_g			= FAIL;
+hid_t H5T_STD_U8BE_g			= FAIL;
+hid_t H5T_STD_U8LE_g			= FAIL;
+hid_t H5T_STD_U16BE_g			= FAIL;
+hid_t H5T_STD_U16LE_g			= FAIL;
+hid_t H5T_STD_U32BE_g			= FAIL;
+hid_t H5T_STD_U32LE_g			= FAIL;
+hid_t H5T_STD_U64BE_g			= FAIL;
+hid_t H5T_STD_U64LE_g			= FAIL;
+hid_t H5T_STD_B8BE_g			= FAIL;
+hid_t H5T_STD_B8LE_g			= FAIL;
+hid_t H5T_STD_B16BE_g			= FAIL;
+hid_t H5T_STD_B16LE_g			= FAIL;
+hid_t H5T_STD_B32BE_g			= FAIL;
+hid_t H5T_STD_B32LE_g			= FAIL;
+hid_t H5T_STD_B64BE_g			= FAIL;
+hid_t H5T_STD_B64LE_g 			= FAIL;
+hid_t H5T_STD_REF_OBJ_g 		= FAIL;
+hid_t H5T_STD_REF_DSETREG_g 		= FAIL;
+
+hid_t H5T_UNIX_D32BE_g			= FAIL;
+hid_t H5T_UNIX_D32LE_g			= FAIL;
+hid_t H5T_UNIX_D64BE_g			= FAIL;
+hid_t H5T_UNIX_D64LE_g 			= FAIL;
+
+hid_t H5T_C_S1_g			= FAIL;
+
+hid_t H5T_FORTRAN_S1_g			= FAIL;
+
+hid_t H5T_NATIVE_SCHAR_g		= FAIL;
+hid_t H5T_NATIVE_UCHAR_g		= FAIL;
+hid_t H5T_NATIVE_SHORT_g		= FAIL;
+hid_t H5T_NATIVE_USHORT_g		= FAIL;
+hid_t H5T_NATIVE_INT_g			= FAIL;
+hid_t H5T_NATIVE_UINT_g			= FAIL;
+hid_t H5T_NATIVE_LONG_g			= FAIL;
+hid_t H5T_NATIVE_ULONG_g		= FAIL;
+hid_t H5T_NATIVE_LLONG_g		= FAIL;
+hid_t H5T_NATIVE_ULLONG_g		= FAIL;
+hid_t H5T_NATIVE_FLOAT_g		= FAIL;
+hid_t H5T_NATIVE_DOUBLE_g		= FAIL;
+#if H5_SIZEOF_LONG_DOUBLE !=0
+hid_t H5T_NATIVE_LDOUBLE_g		= FAIL;
+#endif
+hid_t H5T_NATIVE_B8_g			= FAIL;
+hid_t H5T_NATIVE_B16_g			= FAIL;
+hid_t H5T_NATIVE_B32_g			= FAIL;
+hid_t H5T_NATIVE_B64_g			= FAIL;
+hid_t H5T_NATIVE_OPAQUE_g		= FAIL;
+hid_t H5T_NATIVE_HADDR_g		= FAIL;
+hid_t H5T_NATIVE_HSIZE_g		= FAIL;
+hid_t H5T_NATIVE_HSSIZE_g		= FAIL;
+hid_t H5T_NATIVE_HERR_g			= FAIL;
+hid_t H5T_NATIVE_HBOOL_g		= FAIL;
+
+hid_t H5T_NATIVE_INT8_g			= FAIL;
+hid_t H5T_NATIVE_UINT8_g		= FAIL;
+hid_t H5T_NATIVE_INT_LEAST8_g		= FAIL;
+hid_t H5T_NATIVE_UINT_LEAST8_g		= FAIL;
+hid_t H5T_NATIVE_INT_FAST8_g		= FAIL;
+hid_t H5T_NATIVE_UINT_FAST8_g		= FAIL;
+
+hid_t H5T_NATIVE_INT16_g		= FAIL;
+hid_t H5T_NATIVE_UINT16_g		= FAIL;
+hid_t H5T_NATIVE_INT_LEAST16_g		= FAIL;
+hid_t H5T_NATIVE_UINT_LEAST16_g		= FAIL;
+hid_t H5T_NATIVE_INT_FAST16_g		= FAIL;
+hid_t H5T_NATIVE_UINT_FAST16_g		= FAIL;
+
+hid_t H5T_NATIVE_INT32_g		= FAIL;
+hid_t H5T_NATIVE_UINT32_g		= FAIL;
+hid_t H5T_NATIVE_INT_LEAST32_g		= FAIL;
+hid_t H5T_NATIVE_UINT_LEAST32_g		= FAIL;
+hid_t H5T_NATIVE_INT_FAST32_g		= FAIL;
+hid_t H5T_NATIVE_UINT_FAST32_g		= FAIL;
+
+hid_t H5T_NATIVE_INT64_g		= FAIL;
+hid_t H5T_NATIVE_UINT64_g		= FAIL;
+hid_t H5T_NATIVE_INT_LEAST64_g		= FAIL;
+hid_t H5T_NATIVE_UINT_LEAST64_g		= FAIL;
+hid_t H5T_NATIVE_INT_FAST64_g		= FAIL;
+hid_t H5T_NATIVE_UINT_FAST64_g		= FAIL;
+
+/*
+ * Alignment constraints for native types. These are initialized at run time
+ * in H5Tinit.c.  These alignments are mainly for offsets in HDF5 compound
+ * datatype or C structures, which are different from the alignments for memory
+ * address below this group of variables.
+ */
+size_t H5T_NATIVE_SCHAR_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_UCHAR_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_SHORT_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_USHORT_COMP_ALIGN_g   	= 0;
+size_t H5T_NATIVE_INT_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_UINT_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_LONG_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_ULONG_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_LLONG_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_ULLONG_COMP_ALIGN_g	        = 0;
+size_t H5T_NATIVE_FLOAT_COMP_ALIGN_g		= 0;
+size_t H5T_NATIVE_DOUBLE_COMP_ALIGN_g	        = 0;
+#if H5_SIZEOF_LONG_DOUBLE !=0
+size_t H5T_NATIVE_LDOUBLE_COMP_ALIGN_g	        = 0;
+#endif
+
+size_t H5T_POINTER_COMP_ALIGN_g	                = 0;
+size_t H5T_HVL_COMP_ALIGN_g	                = 0;
+size_t H5T_HOBJREF_COMP_ALIGN_g	                = 0;
+size_t H5T_HDSETREGREF_COMP_ALIGN_g	        = 0;
+
+/*
+ * Alignment constraints for native types. These are initialized at run time
+ * in H5Tinit.c
+ */
+size_t H5T_NATIVE_SCHAR_ALIGN_g		= 0;
+size_t H5T_NATIVE_UCHAR_ALIGN_g		= 0;
+size_t H5T_NATIVE_SHORT_ALIGN_g		= 0;
+size_t H5T_NATIVE_USHORT_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_ALIGN_g		= 0;
+size_t H5T_NATIVE_UINT_ALIGN_g		= 0;
+size_t H5T_NATIVE_LONG_ALIGN_g		= 0;
+size_t H5T_NATIVE_ULONG_ALIGN_g		= 0;
+size_t H5T_NATIVE_LLONG_ALIGN_g		= 0;
+size_t H5T_NATIVE_ULLONG_ALIGN_g	= 0;
+size_t H5T_NATIVE_FLOAT_ALIGN_g		= 0;
+size_t H5T_NATIVE_DOUBLE_ALIGN_g	= 0;
+#if H5_SIZEOF_LONG_DOUBLE !=0
+size_t H5T_NATIVE_LDOUBLE_ALIGN_g	= 0;
+#endif
+
+/*
+ * Alignment constraints for C9x types. These are initialized at run time in
+ * H5Tinit.c if the types are provided by the system. Otherwise we set their
+ * values to 0 here (no alignment calculated).
+ */
+size_t H5T_NATIVE_INT8_ALIGN_g		= 0;
+size_t H5T_NATIVE_UINT8_ALIGN_g		= 0;
+size_t H5T_NATIVE_INT_LEAST8_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_LEAST8_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_FAST8_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_FAST8_ALIGN_g	= 0;
+
+size_t H5T_NATIVE_INT16_ALIGN_g		= 0;
+size_t H5T_NATIVE_UINT16_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_LEAST16_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_LEAST16_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_FAST16_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_FAST16_ALIGN_g	= 0;
+
+size_t H5T_NATIVE_INT32_ALIGN_g		= 0;
+size_t H5T_NATIVE_UINT32_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_LEAST32_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_LEAST32_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_FAST32_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_FAST32_ALIGN_g	= 0;
+
+size_t H5T_NATIVE_INT64_ALIGN_g		= 0;
+size_t H5T_NATIVE_UINT64_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_LEAST64_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_LEAST64_ALIGN_g	= 0;
+size_t H5T_NATIVE_INT_FAST64_ALIGN_g	= 0;
+size_t H5T_NATIVE_UINT_FAST64_ALIGN_g	= 0;
+
+/* Useful floating-point values for conversion routines */
+/* (+/- Inf for all floating-point types) */
+float H5T_NATIVE_FLOAT_POS_INF_g        = 0.0;
+float H5T_NATIVE_FLOAT_NEG_INF_g        = 0.0;
+double H5T_NATIVE_DOUBLE_POS_INF_g      = 0.0;
+double H5T_NATIVE_DOUBLE_NEG_INF_g      = 0.0;
+
+/* Declare the free list for H5T_t's and H5T_shared_t's */
+H5FL_DEFINE(H5T_t);
+H5FL_DEFINE(H5T_shared_t);
+
+
+/*******************/
+/* Local Variables */
+/*******************/
+
+/*
+ * The path database. Each path has a source and destination data type pair
+ * which is used as the key by which the `entries' array is sorted.
+ */
+static struct {
+    int	npaths;		/*number of paths defined		*/
+    size_t	apaths;		/*number of paths allocated		*/
+    H5T_path_t	**path;		/*sorted array of path pointers		*/
+    int	nsoft;		/*number of soft conversions defined	*/
+    size_t	asoft;		/*number of soft conversions allocated	*/
+    H5T_soft_t	*soft;		/*unsorted array of soft conversions	*/
+} H5T_g;
+
+/* Declare the free list for H5T_path_t's */
+H5FL_DEFINE_STATIC(H5T_path_t);
+
+/* Datatype ID class */
+static const H5I_class_t H5I_DATATYPE_CLS[1] = {{
+    H5I_DATATYPE,		/* ID class value */
+    0,				/* Class flags */
+    64,				/* Minimum hash size for class */
+    8,				/* # of reserved IDs for class */
+    (H5I_free_t)H5T_close	/* Callback routine for closing objects of this class */
+}};
+
+
 
 /*-------------------------------------------------------------------------
  * Function:	H5T_init
@@ -569,9 +606,9 @@ H5T_init_inf(void)
 
     /* +Inf */
     d = (uint8_t *)&H5T_NATIVE_FLOAT_POS_INF_g;
-    H5T_bit_set(d, dst->u.f.sign, (size_t)1, FALSE);
-    H5T_bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
-    H5T_bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
+    H5T__bit_set(d, dst->u.f.sign, (size_t)1, FALSE);
+    H5T__bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
+    H5T__bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
 
     /* Swap the bytes if the machine architecture is big-endian */
     if (H5T_ORDER_BE == H5T_native_order_g) {
@@ -585,9 +622,9 @@ H5T_init_inf(void)
 
     /* -Inf */
     d = (uint8_t *)&H5T_NATIVE_FLOAT_NEG_INF_g;
-    H5T_bit_set(d, dst->u.f.sign, (size_t)1, TRUE);
-    H5T_bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
-    H5T_bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
+    H5T__bit_set(d, dst->u.f.sign, (size_t)1, TRUE);
+    H5T__bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
+    H5T__bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
 
     /* Swap the bytes if the machine architecture is big-endian */
     if(H5T_ORDER_BE == H5T_native_order_g) {
@@ -610,9 +647,9 @@ H5T_init_inf(void)
 
     /* +Inf */
     d = (uint8_t *)&H5T_NATIVE_DOUBLE_POS_INF_g;
-    H5T_bit_set(d, dst->u.f.sign, (size_t)1, FALSE);
-    H5T_bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
-    H5T_bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
+    H5T__bit_set(d, dst->u.f.sign, (size_t)1, FALSE);
+    H5T__bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
+    H5T__bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
 
     /* Swap the bytes if the machine architecture is big-endian */
     if(H5T_ORDER_BE == H5T_native_order_g) {
@@ -626,9 +663,9 @@ H5T_init_inf(void)
 
     /* -Inf */
     d = (uint8_t *)&H5T_NATIVE_DOUBLE_NEG_INF_g;
-    H5T_bit_set(d, dst->u.f.sign, (size_t)1, TRUE);
-    H5T_bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
-    H5T_bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
+    H5T__bit_set(d, dst->u.f.sign, (size_t)1, TRUE);
+    H5T__bit_set(d, dst->u.f.epos, dst->u.f.esize, TRUE);
+    H5T__bit_set(d, dst->u.f.mpos, dst->u.f.msize, FALSE);
 
     /* Swap the bytes if the machine architecture is big-endian */
     if(H5T_ORDER_BE == H5T_native_order_g) {
@@ -697,7 +734,7 @@ DESCRIPTION
     Initializes any interface-specific data or routines.
 
 --------------------------------------------------------------------------*/
-herr_t
+static herr_t
 H5T_init_interface(void)
 {
     H5T_t       *native_schar=NULL;     /* Datatype structure for native signed char */
@@ -742,7 +779,7 @@ H5T_init_interface(void)
     FUNC_ENTER_NOAPI_NOINIT
 
     /* Initialize the atom group for the file IDs */
-    if(H5I_register_type(H5I_DATATYPE, (size_t)H5I_DATATYPEID_HASHSIZE, H5T_RESERVED_ATOMS, (H5I_free_t)H5T_close)<0)
+    if(H5I_register_type(H5I_DATATYPE_CLS) < 0)
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
     /* Make certain there aren't too many classes of datatypes defined */
@@ -1002,32 +1039,32 @@ H5T_init_interface(void)
      */
     fixedpt = native_int;
     floatpt = native_float;
-    if (NULL == (compound = H5T_create(H5T_COMPOUND, (size_t)1)))
+    if (NULL == (compound = H5T__create(H5T_COMPOUND, (size_t)1)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
-    if (NULL == (enum_type = H5T_create(H5T_ENUM, (size_t)1)))
+    if (NULL == (enum_type = H5T__create(H5T_ENUM, (size_t)1)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
-    if (NULL == (vlen = H5T_vlen_create(native_int)))
+    if (NULL == (vlen = H5T__vlen_create(native_int)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
-    if (NULL == (array = H5T_array_create(native_int, 1, dim)))
+    if (NULL == (array = H5T__array_create(native_int, 1, dim)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
     status = 0;
 
-    status |= H5T_register(H5T_PERS_SOFT, "i_i", fixedpt, fixedpt, H5T_conv_i_i, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "i_f", fixedpt, floatpt, H5T_conv_i_f, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "f_f", floatpt, floatpt, H5T_conv_f_f, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "f_i", floatpt, fixedpt, H5T_conv_f_i, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "s_s", string, string, H5T_conv_s_s, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "b_b", bitfield, bitfield, H5T_conv_b_b, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "ibo", fixedpt, fixedpt, H5T_conv_order, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "ibo(opt)", fixedpt, fixedpt, H5T_conv_order_opt, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "fbo", floatpt, floatpt, H5T_conv_order, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "fbo(opt)", floatpt, floatpt, H5T_conv_order_opt, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "struct(no-opt)", compound, compound, H5T_conv_struct, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "struct(opt)", compound, compound, H5T_conv_struct_opt, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "enum", enum_type, enum_type, H5T_conv_enum, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "vlen", vlen, vlen, H5T_conv_vlen, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "array", array, array, H5T_conv_array, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_SOFT, "objref", objref, objref, H5T_conv_order_opt, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "i_i", fixedpt, fixedpt, H5T__conv_i_i, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "i_f", fixedpt, floatpt, H5T__conv_i_f, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "f_f", floatpt, floatpt, H5T__conv_f_f, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "f_i", floatpt, fixedpt, H5T__conv_f_i, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "s_s", string, string, H5T__conv_s_s, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "b_b", bitfield, bitfield, H5T__conv_b_b, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "ibo", fixedpt, fixedpt, H5T__conv_order, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "ibo(opt)", fixedpt, fixedpt, H5T__conv_order_opt, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "fbo", floatpt, floatpt, H5T__conv_order, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "fbo(opt)", floatpt, floatpt, H5T__conv_order_opt, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "struct(no-opt)", compound, compound, H5T__conv_struct, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "struct(opt)", compound, compound, H5T__conv_struct_opt, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "enum", enum_type, enum_type, H5T__conv_enum, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "vlen", vlen, vlen, H5T__conv_vlen, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "array", array, array, H5T__conv_array, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_SOFT, "objref", objref, objref, H5T__conv_order_opt, H5AC_dxpl_id, FALSE);
 
     /*
      * Native conversions should be listed last since we can use hardware to
@@ -1039,263 +1076,263 @@ H5T_init_interface(void)
 
     /* floating point */
 #if H5T_CONV_INTERNAL_FP_FP
-    status |= H5T_register(H5T_PERS_HARD, "flt_dbl", native_float, native_double, H5T_conv_float_double, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_flt", native_double, native_float, H5T_conv_double_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_dbl", native_float, native_double, H5T__conv_float_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_flt", native_double, native_float, H5T__conv_double_float, H5AC_dxpl_id, FALSE);
 #endif /*H5T_CONV_INTERNAL_FP_FP*/
 #if H5T_CONV_INTERNAL_FP_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "flt_ldbl", native_float, native_ldouble, H5T_conv_float_ldouble, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_ldbl", native_double, native_ldouble, H5T_conv_double_ldouble, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_flt", native_ldouble, native_float, H5T_conv_ldouble_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_dbl", native_ldouble, native_double, H5T_conv_ldouble_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_ldbl", native_float, native_ldouble, H5T__conv_float_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_ldbl", native_double, native_ldouble, H5T__conv_double_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_flt", native_ldouble, native_float, H5T__conv_ldouble_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_dbl", native_ldouble, native_double, H5T__conv_ldouble_double, H5AC_dxpl_id, FALSE);
 #endif /*H5T_CONV_INTERNAL_FP_LDOUBLE*/
 
     /* from long long */
-    status |= H5T_register(H5T_PERS_HARD, "llong_ullong", native_llong, native_ullong, H5T_conv_llong_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_llong", native_ullong, native_llong, H5T_conv_ullong_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_long", native_llong, native_long, H5T_conv_llong_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_ulong", native_llong, native_ulong, H5T_conv_llong_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_long", native_ullong, native_long, H5T_conv_ullong_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_ulong", native_ullong, native_ulong, H5T_conv_ullong_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_short", native_llong, native_short, H5T_conv_llong_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_ushort", native_llong, native_ushort, H5T_conv_llong_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_short", native_ullong, native_short, H5T_conv_ullong_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_ushort", native_ullong, native_ushort, H5T_conv_ullong_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_int", native_llong, native_int, H5T_conv_llong_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_uint", native_llong, native_uint, H5T_conv_llong_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_int", native_ullong, native_int, H5T_conv_ullong_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_uint", native_ullong, native_uint, H5T_conv_ullong_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_schar", native_llong, native_schar, H5T_conv_llong_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_uchar", native_llong, native_uchar, H5T_conv_llong_uchar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_schar", native_ullong, native_schar, H5T_conv_ullong_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_uchar", native_ullong, native_uchar, H5T_conv_ullong_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_ullong", native_llong, native_ullong, H5T__conv_llong_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_llong", native_ullong, native_llong, H5T__conv_ullong_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_long", native_llong, native_long, H5T__conv_llong_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_ulong", native_llong, native_ulong, H5T__conv_llong_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_long", native_ullong, native_long, H5T__conv_ullong_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_ulong", native_ullong, native_ulong, H5T__conv_ullong_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_short", native_llong, native_short, H5T__conv_llong_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_ushort", native_llong, native_ushort, H5T__conv_llong_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_short", native_ullong, native_short, H5T__conv_ullong_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_ushort", native_ullong, native_ushort, H5T__conv_ullong_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_int", native_llong, native_int, H5T__conv_llong_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_uint", native_llong, native_uint, H5T__conv_llong_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_int", native_ullong, native_int, H5T__conv_ullong_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_uint", native_ullong, native_uint, H5T__conv_ullong_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_schar", native_llong, native_schar, H5T__conv_llong_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_uchar", native_llong, native_uchar, H5T__conv_llong_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_schar", native_ullong, native_schar, H5T__conv_ullong_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_uchar", native_ullong, native_uchar, H5T__conv_ullong_uchar, H5AC_dxpl_id, FALSE);
 
     /* From long */
-    status |= H5T_register(H5T_PERS_HARD, "long_llong", native_long, native_llong, H5T_conv_long_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_ullong", native_long, native_ullong, H5T_conv_long_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_llong", native_ulong, native_llong, H5T_conv_ulong_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_ullong", native_ulong, native_ullong, H5T_conv_ulong_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_ulong", native_long, native_ulong, H5T_conv_long_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_long", native_ulong, native_long, H5T_conv_ulong_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_short", native_long, native_short, H5T_conv_long_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_ushort", native_long, native_ushort, H5T_conv_long_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_short", native_ulong, native_short, H5T_conv_ulong_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_ushort", native_ulong, native_ushort, H5T_conv_ulong_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_int", native_long, native_int, H5T_conv_long_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_uint", native_long, native_uint, H5T_conv_long_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_int", native_ulong, native_int, H5T_conv_ulong_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_uint", native_ulong, native_uint, H5T_conv_ulong_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_schar", native_long, native_schar, H5T_conv_long_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_uchar", native_long, native_uchar, H5T_conv_long_uchar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_schar", native_ulong, native_schar, H5T_conv_ulong_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ulong_uchar", native_ulong, native_uchar, H5T_conv_ulong_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_llong", native_long, native_llong, H5T__conv_long_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_ullong", native_long, native_ullong, H5T__conv_long_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_llong", native_ulong, native_llong, H5T__conv_ulong_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_ullong", native_ulong, native_ullong, H5T__conv_ulong_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_ulong", native_long, native_ulong, H5T__conv_long_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_long", native_ulong, native_long, H5T__conv_ulong_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_short", native_long, native_short, H5T__conv_long_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_ushort", native_long, native_ushort, H5T__conv_long_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_short", native_ulong, native_short, H5T__conv_ulong_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_ushort", native_ulong, native_ushort, H5T__conv_ulong_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_int", native_long, native_int, H5T__conv_long_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_uint", native_long, native_uint, H5T__conv_long_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_int", native_ulong, native_int, H5T__conv_ulong_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_uint", native_ulong, native_uint, H5T__conv_ulong_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_schar", native_long, native_schar, H5T__conv_long_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_uchar", native_long, native_uchar, H5T__conv_long_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_schar", native_ulong, native_schar, H5T__conv_ulong_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_uchar", native_ulong, native_uchar, H5T__conv_ulong_uchar, H5AC_dxpl_id, FALSE);
 
     /* From short */
-    status |= H5T_register(H5T_PERS_HARD, "short_llong", native_short, native_llong, H5T_conv_short_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_ullong", native_short, native_ullong, H5T_conv_short_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_llong", native_ushort, native_llong, H5T_conv_ushort_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_ullong", native_ushort, native_ullong, H5T_conv_ushort_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_long", native_short, native_long, H5T_conv_short_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_ulong", native_short, native_ulong, H5T_conv_short_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_long", native_ushort, native_long, H5T_conv_ushort_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_ulong", native_ushort, native_ulong, H5T_conv_ushort_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_ushort", native_short, native_ushort, H5T_conv_short_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_short", native_ushort, native_short, H5T_conv_ushort_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_int", native_short, native_int, H5T_conv_short_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_uint", native_short, native_uint, H5T_conv_short_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_int", native_ushort, native_int, H5T_conv_ushort_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_uint", native_ushort, native_uint, H5T_conv_ushort_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_schar", native_short, native_schar, H5T_conv_short_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_uchar", native_short, native_uchar, H5T_conv_short_uchar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_schar", native_ushort, native_schar, H5T_conv_ushort_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_uchar", native_ushort, native_uchar, H5T_conv_ushort_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_llong", native_short, native_llong, H5T__conv_short_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_ullong", native_short, native_ullong, H5T__conv_short_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_llong", native_ushort, native_llong, H5T__conv_ushort_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_ullong", native_ushort, native_ullong, H5T__conv_ushort_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_long", native_short, native_long, H5T__conv_short_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_ulong", native_short, native_ulong, H5T__conv_short_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_long", native_ushort, native_long, H5T__conv_ushort_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_ulong", native_ushort, native_ulong, H5T__conv_ushort_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_ushort", native_short, native_ushort, H5T__conv_short_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_short", native_ushort, native_short, H5T__conv_ushort_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_int", native_short, native_int, H5T__conv_short_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_uint", native_short, native_uint, H5T__conv_short_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_int", native_ushort, native_int, H5T__conv_ushort_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_uint", native_ushort, native_uint, H5T__conv_ushort_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_schar", native_short, native_schar, H5T__conv_short_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_uchar", native_short, native_uchar, H5T__conv_short_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_schar", native_ushort, native_schar, H5T__conv_ushort_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_uchar", native_ushort, native_uchar, H5T__conv_ushort_uchar, H5AC_dxpl_id, FALSE);
 
     /* From int */
-    status |= H5T_register(H5T_PERS_HARD, "int_llong", native_int, native_llong, H5T_conv_int_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_ullong", native_int, native_ullong, H5T_conv_int_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_llong", native_uint, native_llong, H5T_conv_uint_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_ullong", native_uint, native_ullong, H5T_conv_uint_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_long", native_int, native_long, H5T_conv_int_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_ulong", native_int, native_ulong, H5T_conv_int_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_long", native_uint, native_long, H5T_conv_uint_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_ulong", native_uint, native_ulong, H5T_conv_uint_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_short", native_int, native_short, H5T_conv_int_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_ushort", native_int, native_ushort, H5T_conv_int_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_short", native_uint, native_short, H5T_conv_uint_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_ushort", native_uint, native_ushort, H5T_conv_uint_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_uint", native_int, native_uint, H5T_conv_int_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_int", native_uint, native_int, H5T_conv_uint_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_schar", native_int, native_schar, H5T_conv_int_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_uchar", native_int, native_uchar, H5T_conv_int_uchar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_schar", native_uint, native_schar, H5T_conv_uint_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_uchar", native_uint, native_uchar, H5T_conv_uint_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_llong", native_int, native_llong, H5T__conv_int_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_ullong", native_int, native_ullong, H5T__conv_int_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_llong", native_uint, native_llong, H5T__conv_uint_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_ullong", native_uint, native_ullong, H5T__conv_uint_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_long", native_int, native_long, H5T__conv_int_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_ulong", native_int, native_ulong, H5T__conv_int_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_long", native_uint, native_long, H5T__conv_uint_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_ulong", native_uint, native_ulong, H5T__conv_uint_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_short", native_int, native_short, H5T__conv_int_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_ushort", native_int, native_ushort, H5T__conv_int_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_short", native_uint, native_short, H5T__conv_uint_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_ushort", native_uint, native_ushort, H5T__conv_uint_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_uint", native_int, native_uint, H5T__conv_int_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_int", native_uint, native_int, H5T__conv_uint_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_schar", native_int, native_schar, H5T__conv_int_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_uchar", native_int, native_uchar, H5T__conv_int_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_schar", native_uint, native_schar, H5T__conv_uint_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_uchar", native_uint, native_uchar, H5T__conv_uint_uchar, H5AC_dxpl_id, FALSE);
 
     /* From char */
-    status |= H5T_register(H5T_PERS_HARD, "schar_llong", native_schar, native_llong, H5T_conv_schar_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_ullong", native_schar, native_ullong, H5T_conv_schar_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_llong", native_uchar, native_llong, H5T_conv_uchar_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_ullong", native_uchar, native_ullong, H5T_conv_uchar_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_long", native_schar, native_long, H5T_conv_schar_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_ulong", native_schar, native_ulong, H5T_conv_schar_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_long", native_uchar, native_long, H5T_conv_uchar_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_ulong", native_uchar, native_ulong, H5T_conv_uchar_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_short", native_schar, native_short, H5T_conv_schar_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_ushort", native_schar, native_ushort, H5T_conv_schar_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_short", native_uchar, native_short, H5T_conv_uchar_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_ushort", native_uchar, native_ushort, H5T_conv_uchar_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_int", native_schar, native_int, H5T_conv_schar_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_uint", native_schar, native_uint, H5T_conv_schar_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_int", native_uchar, native_int, H5T_conv_uchar_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_uint", native_uchar, native_uint, H5T_conv_uchar_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_uchar", native_schar, native_uchar, H5T_conv_schar_uchar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_schar", native_uchar, native_schar, H5T_conv_uchar_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_llong", native_schar, native_llong, H5T__conv_schar_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_ullong", native_schar, native_ullong, H5T__conv_schar_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_llong", native_uchar, native_llong, H5T__conv_uchar_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_ullong", native_uchar, native_ullong, H5T__conv_uchar_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_long", native_schar, native_long, H5T__conv_schar_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_ulong", native_schar, native_ulong, H5T__conv_schar_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_long", native_uchar, native_long, H5T__conv_uchar_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_ulong", native_uchar, native_ulong, H5T__conv_uchar_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_short", native_schar, native_short, H5T__conv_schar_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_ushort", native_schar, native_ushort, H5T__conv_schar_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_short", native_uchar, native_short, H5T__conv_uchar_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_ushort", native_uchar, native_ushort, H5T__conv_uchar_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_int", native_schar, native_int, H5T__conv_schar_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_uint", native_schar, native_uint, H5T__conv_schar_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_int", native_uchar, native_int, H5T__conv_uchar_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_uint", native_uchar, native_uint, H5T__conv_uchar_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_uchar", native_schar, native_uchar, H5T__conv_schar_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_schar", native_uchar, native_schar, H5T__conv_uchar_schar, H5AC_dxpl_id, FALSE);
 
     /* From char to floats */
-    status |= H5T_register(H5T_PERS_HARD, "schar_flt", native_schar, native_float, H5T_conv_schar_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "schar_dbl", native_schar, native_double, H5T_conv_schar_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_flt", native_schar, native_float, H5T__conv_schar_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_dbl", native_schar, native_double, H5T__conv_schar_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "schar_ldbl", native_schar, native_ldouble, H5T_conv_schar_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "schar_ldbl", native_schar, native_ldouble, H5T__conv_schar_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From unsigned char to floats */
-    status |= H5T_register(H5T_PERS_HARD, "uchar_flt", native_uchar, native_float, H5T_conv_uchar_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uchar_dbl", native_uchar, native_double, H5T_conv_uchar_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_flt", native_uchar, native_float, H5T__conv_uchar_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_dbl", native_uchar, native_double, H5T__conv_uchar_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "uchar_ldbl", native_uchar, native_ldouble, H5T_conv_uchar_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uchar_ldbl", native_uchar, native_ldouble, H5T__conv_uchar_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From short to floats */
-    status |= H5T_register(H5T_PERS_HARD, "short_flt", native_short, native_float, H5T_conv_short_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "short_dbl", native_short, native_double, H5T_conv_short_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_flt", native_short, native_float, H5T__conv_short_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_dbl", native_short, native_double, H5T__conv_short_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "short_ldbl", native_short, native_ldouble, H5T_conv_short_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "short_ldbl", native_short, native_ldouble, H5T__conv_short_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From unsigned short to floats */
-    status |= H5T_register(H5T_PERS_HARD, "ushort_flt", native_ushort, native_float, H5T_conv_ushort_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ushort_dbl", native_ushort, native_double, H5T_conv_ushort_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_flt", native_ushort, native_float, H5T__conv_ushort_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_dbl", native_ushort, native_double, H5T__conv_ushort_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "ushort_ldbl", native_ushort, native_ldouble, H5T_conv_ushort_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ushort_ldbl", native_ushort, native_ldouble, H5T__conv_ushort_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From int to floats */
-    status |= H5T_register(H5T_PERS_HARD, "int_flt", native_int, native_float, H5T_conv_int_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "int_dbl", native_int, native_double, H5T_conv_int_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_flt", native_int, native_float, H5T__conv_int_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_dbl", native_int, native_double, H5T__conv_int_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "int_ldbl", native_int, native_ldouble, H5T_conv_int_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "int_ldbl", native_int, native_ldouble, H5T__conv_int_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From unsigned int to floats */
-    status |= H5T_register(H5T_PERS_HARD, "uint_flt", native_uint, native_float, H5T_conv_uint_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "uint_dbl", native_uint, native_double, H5T_conv_uint_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_flt", native_uint, native_float, H5T__conv_uint_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_dbl", native_uint, native_double, H5T__conv_uint_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "uint_ldbl", native_uint, native_ldouble, H5T_conv_uint_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "uint_ldbl", native_uint, native_ldouble, H5T__conv_uint_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From long to floats */
-    status |= H5T_register(H5T_PERS_HARD, "long_flt", native_long, native_float, H5T_conv_long_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "long_dbl", native_long, native_double, H5T_conv_long_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_flt", native_long, native_float, H5T__conv_long_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_dbl", native_long, native_double, H5T__conv_long_double, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "long_ldbl", native_long, native_ldouble, H5T_conv_long_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "long_ldbl", native_long, native_ldouble, H5T__conv_long_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
 
     /* From unsigned long to floats */
 #if H5T_CONV_INTERNAL_ULONG_FLT
-    status |= H5T_register(H5T_PERS_HARD, "ulong_flt", native_ulong, native_float, H5T_conv_ulong_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_flt", native_ulong, native_float, H5T__conv_ulong_float, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_ULONG_FLT */
 #if H5T_CONV_INTERNAL_ULONG_DBL
-    status |= H5T_register(H5T_PERS_HARD, "ulong_dbl", native_ulong, native_double, H5T_conv_ulong_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_dbl", native_ulong, native_double, H5T__conv_ulong_double, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_ULONG_DBL */
 #if H5T_CONV_INTERNAL_ULONG_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "ulong_ldbl", native_ulong, native_ldouble, H5T_conv_ulong_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ulong_ldbl", native_ulong, native_ldouble, H5T__conv_ulong_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_ULONG_LDOUBLE */
 
     /* From long long to floats */
-    status |= H5T_register(H5T_PERS_HARD, "llong_flt", native_llong, native_float, H5T_conv_llong_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "llong_dbl", native_llong, native_double, H5T_conv_llong_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_flt", native_llong, native_float, H5T__conv_llong_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_dbl", native_llong, native_double, H5T__conv_llong_double, H5AC_dxpl_id, FALSE);
 #ifdef H5T_CONV_INTERNAL_LLONG_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "llong_ldbl", native_llong, native_ldouble, H5T_conv_llong_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "llong_ldbl", native_llong, native_ldouble, H5T__conv_llong_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LLONG_LDOUBLE */
 
     /* From unsigned long long to floats */
 #if H5T_CONV_INTERNAL_ULLONG_FP
-    status |= H5T_register(H5T_PERS_HARD, "ullong_flt", native_ullong, native_float, H5T_conv_ullong_float, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "ullong_dbl", native_ullong, native_double, H5T_conv_ullong_double, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_flt", native_ullong, native_float, H5T__conv_ullong_float, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_dbl", native_ullong, native_double, H5T__conv_ullong_double, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_ULLONG_FP */
 #ifdef H5T_CONV_INTERNAL_ULLONG_LDOUBLE
-    status |= H5T_register(H5T_PERS_HARD, "ullong_ldbl", native_ullong, native_ldouble, H5T_conv_ullong_ldouble, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ullong_ldbl", native_ullong, native_ldouble, H5T__conv_ullong_ldouble, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_ULLONG_LDOUBLE */
 
     /* From floats to char */
-    status |= H5T_register(H5T_PERS_HARD, "flt_schar", native_float, native_schar, H5T_conv_float_schar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_schar", native_double, native_schar, H5T_conv_double_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_schar", native_float, native_schar, H5T__conv_float_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_schar", native_double, native_schar, H5T__conv_double_schar, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_schar", native_ldouble, native_schar, H5T_conv_ldouble_schar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_schar", native_ldouble, native_schar, H5T__conv_ldouble_schar, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to unsigned char */
-    status |= H5T_register(H5T_PERS_HARD, "flt_uchar", native_float, native_uchar, H5T_conv_float_uchar, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_uchar", native_double, native_uchar, H5T_conv_double_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_uchar", native_float, native_uchar, H5T__conv_float_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_uchar", native_double, native_uchar, H5T__conv_double_uchar, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_uchar", native_ldouble, native_uchar, H5T_conv_ldouble_uchar, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_uchar", native_ldouble, native_uchar, H5T__conv_ldouble_uchar, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to short */
-    status |= H5T_register(H5T_PERS_HARD, "flt_short", native_float, native_short, H5T_conv_float_short, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_short", native_double, native_short, H5T_conv_double_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_short", native_float, native_short, H5T__conv_float_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_short", native_double, native_short, H5T__conv_double_short, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_short", native_ldouble, native_short, H5T_conv_ldouble_short, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_short", native_ldouble, native_short, H5T__conv_ldouble_short, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to unsigned short */
-    status |= H5T_register(H5T_PERS_HARD, "flt_ushort", native_float, native_ushort, H5T_conv_float_ushort, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_ushort", native_double, native_ushort, H5T_conv_double_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_ushort", native_float, native_ushort, H5T__conv_float_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_ushort", native_double, native_ushort, H5T__conv_double_ushort, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_ushort", native_ldouble, native_ushort, H5T_conv_ldouble_ushort, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_ushort", native_ldouble, native_ushort, H5T__conv_ldouble_ushort, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to int */
-    status |= H5T_register(H5T_PERS_HARD, "flt_int", native_float, native_int, H5T_conv_float_int, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_int", native_double, native_int, H5T_conv_double_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_int", native_float, native_int, H5T__conv_float_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_int", native_double, native_int, H5T__conv_double_int, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_int", native_ldouble, native_int, H5T_conv_ldouble_int, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_int", native_ldouble, native_int, H5T__conv_ldouble_int, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to unsigned int */
-    status |= H5T_register(H5T_PERS_HARD, "flt_uint", native_float, native_uint, H5T_conv_float_uint, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_uint", native_double, native_uint, H5T_conv_double_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_uint", native_float, native_uint, H5T__conv_float_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_uint", native_double, native_uint, H5T__conv_double_uint, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_UINT
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_uint", native_ldouble, native_uint, H5T_conv_ldouble_uint, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_uint", native_ldouble, native_uint, H5T__conv_ldouble_uint, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_UINT */
 
-    status |= H5T_register(H5T_PERS_HARD, "flt_long", native_float, native_long, H5T_conv_float_long, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_long", native_double, native_long, H5T_conv_double_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_long", native_float, native_long, H5T__conv_float_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_long", native_double, native_long, H5T__conv_double_long, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_long", native_ldouble, native_long, H5T_conv_ldouble_long, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_long", native_ldouble, native_long, H5T__conv_ldouble_long, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to unsigned long */
-    status |= H5T_register(H5T_PERS_HARD, "flt_ulong", native_float, native_ulong, H5T_conv_float_ulong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_ulong", native_double, native_ulong, H5T_conv_double_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_ulong", native_float, native_ulong, H5T__conv_float_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_ulong", native_double, native_ulong, H5T__conv_double_ulong, H5AC_dxpl_id, FALSE);
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_ulong", native_ldouble, native_ulong, H5T_conv_ldouble_ulong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_ulong", native_ldouble, native_ulong, H5T__conv_ldouble_ulong, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
     /* From floats to long long */
 #if H5T_CONV_INTERNAL_FP_LLONG
-    status |= H5T_register(H5T_PERS_HARD, "flt_llong", native_float, native_llong, H5T_conv_float_llong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_llong", native_double, native_llong, H5T_conv_double_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_llong", native_float, native_llong, H5T__conv_float_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_llong", native_double, native_llong, H5T__conv_double_llong, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_FP_LLONG */
 #ifdef H5T_CONV_INTERNAL_LDOUBLE_LLONG
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_llong", native_ldouble, native_llong, H5T_conv_ldouble_llong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_llong", native_ldouble, native_llong, H5T__conv_ldouble_llong, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_LLONG */
 
     /* From floats to unsigned long long */
 #if H5T_CONV_INTERNAL_FP_ULLONG
-    status |= H5T_register(H5T_PERS_HARD, "flt_ullong", native_float, native_ullong, H5T_conv_float_ullong, H5AC_dxpl_id, FALSE);
-    status |= H5T_register(H5T_PERS_HARD, "dbl_ullong", native_double, native_ullong, H5T_conv_double_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "flt_ullong", native_float, native_ullong, H5T__conv_float_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "dbl_ullong", native_double, native_ullong, H5T__conv_double_ullong, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_FP_ULLONG */
 #if H5T_CONV_INTERNAL_LDOUBLE_ULLONG
-    status |= H5T_register(H5T_PERS_HARD, "ldbl_ullong", native_ldouble, native_ullong, H5T_conv_ldouble_ullong, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "ldbl_ullong", native_ldouble, native_ullong, H5T__conv_ldouble_ullong, H5AC_dxpl_id, FALSE);
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_ULLONG */
 
     /*
@@ -1303,7 +1340,7 @@ H5T_init_interface(void)
      * data types we use are not important as long as the source and
      * destination are equal.
      */
-    status |= H5T_register(H5T_PERS_HARD, "no-op", native_int, native_int, H5T_conv_noop, H5AC_dxpl_id, FALSE);
+    status |= H5T_register(H5T_PERS_HARD, "no-op", native_int, native_int, H5T__conv_noop, H5AC_dxpl_id, FALSE);
 
     /* Initialize the +/- Infinity values for floating-point types */
     status |= H5T_init_inf();
@@ -1416,7 +1453,7 @@ H5T_term_interface(void)
 	    path = H5T_g.path[i];
 	    HDassert(path);
 	    if(path->func) {
-		H5T_print_stats(path, &nprint/*in,out*/);
+		H5T__print_stats(path, &nprint/*in,out*/);
 		path->cdata.command = H5T_CONV_FREE;
 		if((path->func)(FAIL, FAIL, &(path->cdata), (size_t)0,
                         (size_t)0, (size_t)0, NULL, NULL,H5AC_dxpl_id) < 0) {
@@ -1594,7 +1631,7 @@ H5Tcreate(H5T_class_t type, size_t size)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "size must be positive")
 
     /* create the type */
-    if(NULL == (dt = H5T_create(type, size)))
+    if(NULL == (dt = H5T__create(type, size)))
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to create type")
 
     /* Get an ID for the datatype */
@@ -2371,7 +2408,7 @@ H5T_register(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst,
             new_path = NULL; /*so we don't free it on error*/
 
             /* Free old path */
-            H5T_print_stats(old_path, &nprint);
+            H5T__print_stats(old_path, &nprint);
             old_path->cdata.command = H5T_CONV_FREE;
             if ((old_path->func)(tmp_sid, tmp_did, &(old_path->cdata),
                     (size_t)0, (size_t)0, (size_t)0, NULL, NULL, dxpl_id)<0) {
@@ -2543,7 +2580,7 @@ H5T_unregister(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst,
             --H5T_g.npaths;
 
             /* Shut down path */
-            H5T_print_stats(path, &nprint);
+            H5T__print_stats(path, &nprint);
             path->cdata.command = H5T_CONV_FREE;
             if((path->func)(FAIL, FAIL, &(path->cdata),
                     (size_t)0, (size_t)0, (size_t)0, NULL, NULL, dxpl_id) < 0) {
@@ -2955,7 +2992,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_create
+ * Function:	H5T__create
  *
  * Purpose:	Creates a new data type and initializes it to reasonable
  *		values.	 The new data type is SIZE bytes and an instance of
@@ -2975,12 +3012,12 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_t *
-H5T_create(H5T_class_t type, size_t size)
+H5T__create(H5T_class_t type, size_t size)
 {
     H5T_t  *dt = NULL;
     H5T_t  *ret_value = NULL;
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     switch(type) {
         case H5T_INTEGER:
@@ -3008,7 +3045,7 @@ H5T_create(H5T_class_t type, size_t size)
 
         case H5T_OPAQUE:
         case H5T_COMPOUND:
-            if(NULL == (dt = H5T_alloc()))
+            if(NULL == (dt = H5T__alloc()))
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
             dt->shared->type = type;
 
@@ -3039,7 +3076,7 @@ H5T_create(H5T_class_t type, size_t size)
                     subtype = H5T_NATIVE_LLONG_g;
                 else
                     HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "no applicable native integer type")
-                if(NULL == (dt = H5T_alloc()))
+                if(NULL == (dt = H5T__alloc()))
                     HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
                 dt->shared->type = type;
                 if(NULL == (sub_t_obj = (H5T_t *)H5I_object(subtype)))
@@ -3078,7 +3115,7 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_create() */
+} /* end H5T__create() */
 
 
 /*-------------------------------------------------------------------------
@@ -3118,7 +3155,7 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_t *
-H5T_copy(const H5T_t *old_dt, H5T_copy_t method)
+H5T_copy(H5T_t *old_dt, H5T_copy_t method)
 {
     H5T_t	*new_dt = NULL, *tmp = NULL;
     H5T_shared_t    *reopened_fo = NULL;
@@ -3420,7 +3457,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_alloc
+ * Function:	H5T__alloc
  *
  * Purpose:	Allocates a new H5T_t structure, initializing it correctly.
  *
@@ -3432,12 +3469,12 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_t *
-H5T_alloc(void)
+H5T__alloc(void)
 {
     H5T_t *dt = NULL;           /* Pointer to datatype allocated */
     H5T_t *ret_value;           /* Return value */
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     /* Allocate & initialize datatype wrapper info */
     if(NULL == (dt = H5FL_CALLOC(H5T_t)))
@@ -3463,11 +3500,11 @@ done:
         } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_alloc() */
+} /* end H5T__alloc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_free
+ * Function:	H5T__free
  *
  * Purpose:	Frees all memory associated with a datatype, but does not
  *              free the H5T_t or H5T_shared_t structures (which should
@@ -3481,12 +3518,12 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_free(H5T_t *dt)
+H5T__free(H5T_t *dt)
 {
     unsigned	i;
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(dt && dt->shared);
 
@@ -3550,7 +3587,7 @@ H5T_free(H5T_t *dt)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_free() */
+} /* end H5T__free() */
 
 
 /*-------------------------------------------------------------------------
@@ -3575,7 +3612,7 @@ done:
  *      Added "ID to name" support
  *
  *      Quincey Koziol, 2003-01-06
- *      Moved "guts" of function to H5T_free()
+ *      Moved "guts" of function to H5T__free()
  *
  *-------------------------------------------------------------------------
  */
@@ -3592,7 +3629,7 @@ H5T_close(H5T_t *dt)
         dt->shared->fo_count--;
 
     if(dt->shared->state != H5T_STATE_OPEN || dt->shared->fo_count == 0) {
-        if(H5T_free(dt) < 0)
+        if(H5T__free(dt) < 0)
             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTFREE, FAIL, "unable to free datatype");
 
         dt->shared = H5FL_FREE(H5T_shared_t, dt->shared);
@@ -3621,7 +3658,7 @@ H5T_close(H5T_t *dt)
                     HGOTO_ERROR(H5E_DATATYPE, H5E_CANTRELEASE, FAIL, "problem attempting to free location")
         } /* end if */
 
-        /* Free the group hier. path since we're not calling H5T_free*/
+        /* Free the group hier. path since we're not calling H5T__free*/
         H5G_name_free(&(dt->path));
     } /* end else */
 
@@ -3663,13 +3700,13 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-herr_t
+static herr_t
 H5T_set_size(H5T_t *dt, size_t size)
 {
     size_t	prec, offset;
     herr_t      ret_value=SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_NOAPI_NOINIT
 
     /* Check args */
     assert(dt);
@@ -3731,7 +3768,7 @@ H5T_set_size(H5T_t *dt, size_t size)
 			    }
 			}
 
-			max_size = H5T_get_member_size(dt, max_index);
+			max_size = H5T__get_member_size(dt, max_index);
 
 			if(size<(max_offset+max_size))
 			    HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "size shrinking will cut off last member ");
@@ -3803,8 +3840,10 @@ H5T_set_size(H5T_t *dt, size_t size)
             case H5T_ENUM:
             case H5T_VLEN:
             case H5T_ARRAY:
-                assert("can't happen" && 0);
             case H5T_REFERENCE:
+                assert("can't happen" && 0);
+            case H5T_NO_CLASS:
+            case H5T_NCLASSES:
                 assert("invalid type" && 0);
             default:
                 assert("not implemented yet" && 0);
@@ -3821,7 +3860,7 @@ H5T_set_size(H5T_t *dt, size_t size)
 
         /* Check if the new compound type is packed */
         if(dt->shared->type == H5T_COMPOUND)
-            H5T_update_packed(dt);
+            H5T__update_packed(dt);
     }
 
 done:
@@ -4259,6 +4298,9 @@ H5T_cmp(const H5T_t *dt1, const H5T_t *dt2, hbool_t superset)
                             /*void */
                             break;
 
+                        case H5R_BADTYPE:
+                        case H5R_MAXTYPE:
+                            assert("invalid type" && 0);
                         default:
                             assert("not implemented yet" && 0);
                     }
@@ -4348,9 +4390,9 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
 	if(NULL == (H5T_g.path[0] = H5FL_CALLOC(H5T_path_t)))
 	    HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for no-op conversion path")
 	HDstrcpy(H5T_g.path[0]->name, "no-op");
-	H5T_g.path[0]->func = H5T_conv_noop;
+	H5T_g.path[0]->func = H5T__conv_noop;
 	H5T_g.path[0]->cdata.command = H5T_CONV_INIT;
-	if(H5T_conv_noop(FAIL, FAIL, &(H5T_g.path[0]->cdata), (size_t)0, (size_t)0, (size_t)0, NULL, NULL, dxpl_id) < 0) {
+	if(H5T__conv_noop(FAIL, FAIL, &(H5T_g.path[0]->cdata), (size_t)0, (size_t)0, (size_t)0, NULL, NULL, dxpl_id) < 0) {
 #ifdef H5T_DEBUG
 	    if(H5DEBUG(T))
 		fprintf(H5DEBUG(T), "H5T: unable to initialize no-op conversion function (ignored)\n");
@@ -4506,7 +4548,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
     /* Replace an existing table entry or add a new entry */
     if(table && path != table) {
 	HDassert(table == H5T_g.path[md]);
-	H5T_print_stats(table, &nprint/*in,out*/);
+	H5T__print_stats(table, &nprint/*in,out*/);
 	table->cdata.command = H5T_CONV_FREE;
 	if((table->func)(FAIL, FAIL, &(table->cdata), (size_t)0, (size_t)0, (size_t)0, NULL, NULL, dxpl_id) < 0) {
 #ifdef H5T_DEBUG
@@ -4635,7 +4677,7 @@ H5T_path_compound_subset(const H5T_path_t *p)
     HDassert(p);
 
     if(p->are_compounds)
-        ret_value = H5T_conv_struct_subset(&(p->cdata));
+        ret_value = H5T__conv_struct_subset(&(p->cdata));
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5T_path_compound_subset */
@@ -5075,7 +5117,7 @@ H5T_set_loc(H5T_t *dt, H5F_t *f, H5T_loc_t loc)
 
             case H5T_COMPOUND:  /* Check each field and recurse on VL, compound and array type */
                 /* Sort the fields based on offsets */
-                H5T_sort_value(dt,NULL);
+                H5T__sort_value(dt, NULL);
 
                 for (i=0,accum_change=0; i<dt->shared->u.compnd.nmembs; i++) {
                     H5T_t *memb_type;   /* Member's datatype pointer */
@@ -5110,7 +5152,7 @@ H5T_set_loc(H5T_t *dt, H5F_t *f, H5T_loc_t loc)
                 } /* end for */
 
                 /* Apply the accumulated size change to the datatype */
-                dt->shared->size += accum_change;
+                dt->shared->size = (size_t)(dt->shared->size + accum_change);
                 break;
 
             case H5T_VLEN: /* Recurse on the VL information if it's VL, compound or array, then free VL sequence */
@@ -5124,7 +5166,7 @@ H5T_set_loc(H5T_t *dt, H5F_t *f, H5T_loc_t loc)
                 } /* end if */
 
                 /* Mark this VL sequence */
-                if((changed=H5T_vlen_set_loc(dt,f,loc))<0)
+                if((changed = H5T__vlen_set_loc(dt, f, loc)) < 0)
                     HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "Unable to set VL location");
                 if(changed>0)
                     ret_value=changed;
@@ -5196,7 +5238,7 @@ done:
 /*-------------------------------------------------------------------------
  * Function:    H5T_upgrade_version_cb
  *
- * Purpose:     H5T_visit callback to Upgrade the version of a datatype
+ * Purpose:     H5T__visit callback to Upgrade the version of a datatype
  *              (if there's any benefit to doing so)
  *
  * Note:	The behavior below is tightly coupled with the "better"
@@ -5243,7 +5285,7 @@ H5T_upgrade_version_cb(H5T_t *dt, void *op_value)
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5T_upgrade_version
+ * Function:    H5T__upgrade_version
  *
  * Purpose:     Upgrade the version of a datatype (if there's any benefit to
  *              doing so) and recursively apply to compound members and/or
@@ -5257,22 +5299,22 @@ H5T_upgrade_version_cb(H5T_t *dt, void *op_value)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_upgrade_version(H5T_t *dt, unsigned new_version)
+H5T__upgrade_version(H5T_t *dt, unsigned new_version)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(dt);
 
     /* Iterate over entire datatype, upgrading the version of components, if it's useful */
-    if(H5T_visit(dt, (H5T_VISIT_SIMPLE | H5T_VISIT_COMPLEX_LAST), H5T_upgrade_version_cb, &new_version) < 0)
+    if(H5T__visit(dt, (H5T_VISIT_SIMPLE | H5T_VISIT_COMPLEX_LAST), H5T_upgrade_version_cb, &new_version) < 0)
         HGOTO_ERROR(H5E_DATATYPE, H5E_BADITER, FAIL, "iteration to upgrade datatype encoding version failed")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_upgrade_version() */
+} /* end H5T__upgrade_version() */
 
 
 /*-------------------------------------------------------------------------
@@ -5298,7 +5340,7 @@ H5T_set_latest_version(H5T_t *dt)
     HDassert(dt);
 
     /* Upgrade the format version for the datatype to the latest */
-    if(H5T_upgrade_version(dt, H5O_DTYPE_VERSION_LATEST) < 0)
+    if(H5T__upgrade_version(dt, H5O_DTYPE_VERSION_LATEST) < 0)
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "can't upgrade datatype encoding")
 
 done:
diff --git a/src/H5Tarray.c b/src/H5Tarray.c
index 714ecc9..c73b934 100644
--- a/src/H5Tarray.c
+++ b/src/H5Tarray.c
@@ -142,7 +142,7 @@ H5Tarray_create2(hid_t base_id, unsigned ndims, const hsize_t dim[/* ndims */])
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype")
 
     /* Create the array datatype */
-    if(NULL == (dt = H5T_array_create(base, ndims, dim)))
+    if(NULL == (dt = H5T__array_create(base, ndims, dim)))
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create datatype")
 
     /* Atomize the type */
@@ -160,7 +160,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_array_create
+ * Function:	H5T__array_create
  *
  * Purpose:	Internal routine to create a new array data type based on the
  *      specified BASE_TYPE.  The type is an array with NDIMS dimensionality
@@ -177,24 +177,25 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_t *
-H5T_array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */])
+H5T__array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */])
 {
     H5T_t	*ret_value;	/* new array data type	*/
     unsigned    u;              /* local index variable */
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     HDassert(base);
     HDassert(ndims <= H5S_MAX_RANK);
     HDassert(dim);
 
     /* Build new type */
-    if(NULL == (ret_value = H5T_alloc()))
+    if(NULL == (ret_value = H5T__alloc()))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
     ret_value->shared->type = H5T_ARRAY;
 
     /* Copy the base type of the array */
-    ret_value->shared->parent = H5T_copy(base, H5T_COPY_ALL);
+    if(NULL == (ret_value->shared->parent = H5T_copy(base, H5T_COPY_ALL)))
+        HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCOPY, NULL, "unable to copy base datatype")
 
     /* Set the array parameters */
     ret_value->shared->u.array.ndims = ndims;
@@ -217,7 +218,7 @@ H5T_array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */])
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5T_array_create */
+}   /* end H5T__array_create */
 
 
 /*-------------------------------------------------------------------------
@@ -249,7 +250,7 @@ H5Tget_array_ndims(hid_t type_id)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype")
 
     /* Retrieve the number of dimensions */
-    ret_value = H5T_get_array_ndims(dt);
+    ret_value = H5T__get_array_ndims(dt);
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -257,9 +258,9 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_get_array_ndims
+ * Function:	H5T__get_array_ndims
  *
- * Purpose:	Private function for H5T_get_array_ndims.  Query the number
+ * Purpose:	Private function for H5T__get_array_ndims.  Query the number
  *              of dimensions for an array datatype.
  *
  * Return:	Success:	Number of dimensions of the array datatype
@@ -271,16 +272,16 @@ done:
  *-------------------------------------------------------------------------
  */
 int
-H5T_get_array_ndims(const H5T_t *dt)
+H5T__get_array_ndims(const H5T_t *dt)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(dt);
     HDassert(dt->shared->type == H5T_ARRAY);
 
     /* Retrieve the number of dimensions */
-    FUNC_LEAVE_NOAPI(dt->shared->u.array.ndims)
-}   /* end H5T_get_array_ndims */
+    FUNC_LEAVE_NOAPI((int)dt->shared->u.array.ndims)
+}   /* end H5T__get_array_ndims */
 
 
 /*-------------------------------------------------------------------------
@@ -312,7 +313,7 @@ H5Tget_array_dims2(hid_t type_id, hsize_t dims[])
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype")
 
     /* Retrieve the sizes of the dimensions */
-    if((ret_value = H5T_get_array_dims(dt, dims)) < 0)
+    if((ret_value = H5T__get_array_dims(dt, dims)) < 0)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unable to get dimension sizes")
 done:
     FUNC_LEAVE_API(ret_value)
@@ -320,9 +321,9 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_get_array_dims
+ * Function:	H5T__get_array_dims
  *
- * Purpose:	Private function for H5T_get_array_dims.  Query the sizes
+ * Purpose:	Private function for H5T__get_array_dims.  Query the sizes
  *              of dimensions for an array datatype.
  *
  * Return:	Success:	Number of dimensions of the array type
@@ -334,12 +335,11 @@ done:
  *-------------------------------------------------------------------------
  */
 int
-H5T_get_array_dims(const H5T_t *dt, hsize_t dims[])
+H5T__get_array_dims(const H5T_t *dt, hsize_t dims[])
 {
     unsigned u;         /* Local index variable */
-    int	ret_value;	/* return value			*/
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(dt);
     HDassert(dt->shared->type == H5T_ARRAY);
@@ -350,11 +350,8 @@ H5T_get_array_dims(const H5T_t *dt, hsize_t dims[])
             dims[u] = dt->shared->u.array.dim[u];
 
     /* Pass along the array rank as the return value */
-    ret_value = dt->shared->u.array.ndims;
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5T_get_array_dims */
+    FUNC_LEAVE_NOAPI((int)dt->shared->u.array.ndims)
+}   /* end H5T__get_array_dims */
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 
@@ -401,7 +398,7 @@ H5Tarray_create1(hid_t base_id, int ndims, const hsize_t dim[/* ndims */],
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype")
 
     /* Create the array datatype */
-    if(NULL == (dt = H5T_array_create(base, (unsigned)ndims, dim)))
+    if(NULL == (dt = H5T__array_create(base, (unsigned)ndims, dim)))
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create datatype")
 
     /* Atomize the type */
@@ -447,7 +444,7 @@ H5Tget_array_dims1(hid_t type_id, hsize_t dims[], int UNUSED perm[])
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype")
 
     /* Retrieve the sizes of the dimensions */
-    if((ret_value = H5T_get_array_dims(dt, dims)) < 0)
+    if((ret_value = H5T__get_array_dims(dt, dims)) < 0)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unable to get dimension sizes")
 
 done:
diff --git a/src/H5Tbit.c b/src/H5Tbit.c
index c9a9446..258a336 100644
--- a/src/H5Tbit.c
+++ b/src/H5Tbit.c
@@ -31,7 +31,7 @@
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_copy
+ * Function:	H5T__bit_copy
  *
  * Purpose:	Copies bits from one vector to another.
  *
@@ -43,13 +43,15 @@
  *-------------------------------------------------------------------------
  */
 void
-H5T_bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
+H5T__bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
     size_t src_offset, size_t size)
 {
     unsigned	shift;
     unsigned mask_lo, mask_hi;
     unsigned	s_idx, d_idx;
 
+    FUNC_ENTER_PACKAGE_NOERR
+
     /*
      * Normalize the offset to be a byte number and a bit offset within that
      * byte.
@@ -155,11 +157,13 @@ H5T_bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
 
 	size -= nbits;
     } /* end while */
-} /* end H5T_bit_copy() */
+
+    FUNC_LEAVE_NOAPI_VOID
+} /* end H5T__bit_copy() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_shift
+ * Function:	H5T__bit_shift
  *
  * Purpose:	Simulation of hardware shifting.  Shifts a bit vector
  *              in a way similar to shifting a variable value, like
@@ -179,13 +183,13 @@ H5T_bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size)
+H5T__bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size)
 {
     uint8_t tmp_buf[512];       /* Temporary buffer */
     H5WB_t *wb = NULL;          /* Wrapped buffer for temporary buffer */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(buf);
@@ -195,7 +199,7 @@ H5T_bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size)
         size_t abs_shift_dist = (size_t)ABS(shift_dist);
 
         if(abs_shift_dist >= size)
-            H5T_bit_set(buf, offset, size, 0);
+            H5T__bit_set(buf, offset, size, 0);
         else {
             size_t buf_size = (size / 8) + 1;   /* Size of shift buffer needed */
             uint8_t *shift_buf;                 /* Pointer to shift buffer */
@@ -211,18 +215,18 @@ H5T_bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size)
             /* Shift vector by making copies */
             if(shift_dist > 0) { /* left shift */
                 /* Copy part to be shifted to a temporary buffer */
-                H5T_bit_copy(shift_buf, (size_t)0, buf, offset, size - abs_shift_dist);
+                H5T__bit_copy(shift_buf, (size_t)0, buf, offset, size - abs_shift_dist);
 
                 /* Copy it back to the original buffer */
-                H5T_bit_copy(buf, offset + abs_shift_dist, shift_buf, (size_t)0, size - abs_shift_dist);
+                H5T__bit_copy(buf, offset + abs_shift_dist, shift_buf, (size_t)0, size - abs_shift_dist);
 
                 /* Zero-set the left part*/
-                H5T_bit_set(buf, offset, abs_shift_dist, 0);
+                H5T__bit_set(buf, offset, abs_shift_dist, 0);
             } /* end if */
             else { /* right shift */
-                H5T_bit_copy(shift_buf, (size_t)0, buf, offset + abs_shift_dist, size - abs_shift_dist);
-                H5T_bit_copy(buf, offset, shift_buf, (size_t)0, size - abs_shift_dist);
-                H5T_bit_set(buf, offset + size - abs_shift_dist, abs_shift_dist, 0);
+                H5T__bit_copy(shift_buf, (size_t)0, buf, offset + abs_shift_dist, size - abs_shift_dist);
+                H5T__bit_copy(buf, offset, shift_buf, (size_t)0, size - abs_shift_dist);
+                H5T__bit_set(buf, offset + size - abs_shift_dist, abs_shift_dist, 0);
             } /* end else */
         } /* end else */
     } /* end if */
@@ -233,11 +237,11 @@ done:
         HDONE_ERROR(H5E_DATATYPE, H5E_CLOSEERROR, FAIL, "can't close wrapped buffer")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_bit_shift() */
+} /* end H5T__bit_shift() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_get_d
+ * Function:	H5T__bit_get_d
  *
  * Purpose:	Return a small bit sequence as a number.  Bit vector starts
  *              at OFFSET and is SIZE bits long.
@@ -253,17 +257,17 @@ done:
  *-------------------------------------------------------------------------
  */
 uint64_t
-H5T_bit_get_d(uint8_t *buf, size_t offset, size_t size)
+H5T__bit_get_d(uint8_t *buf, size_t offset, size_t size)
 {
     uint64_t	val = 0;
     size_t	i, hs;
     uint64_t	ret_value;      /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(8 * sizeof(val) >= size);
 
-    H5T_bit_copy((uint8_t*)&val, (size_t)0, buf, offset, size);
+    H5T__bit_copy((uint8_t*)&val, (size_t)0, buf, offset, size);
     switch(H5T_native_order_g) {
         case H5T_ORDER_LE:
             break;
@@ -290,11 +294,11 @@ H5T_bit_get_d(uint8_t *buf, size_t offset, size_t size)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_bit_get_d() */
+} /* end H5T__bit_get_d() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_set_d
+ * Function:	H5T__bit_set_d
  *
  * Purpose:	Sets part of a bit vector to the specified unsigned value.
  *
@@ -306,10 +310,12 @@ done:
  *-------------------------------------------------------------------------
  */
 void
-H5T_bit_set_d(uint8_t *buf, size_t offset, size_t size, uint64_t val)
+H5T__bit_set_d(uint8_t *buf, size_t offset, size_t size, uint64_t val)
 {
     size_t	i, hs;
 
+    FUNC_ENTER_PACKAGE_NOERR
+
     HDassert(8 * sizeof(val) >= size);
 
     switch(H5T_native_order_g) {
@@ -332,12 +338,14 @@ H5T_bit_set_d(uint8_t *buf, size_t offset, size_t size, uint64_t val)
             HDabort();
     } /* end switch */
 
-    H5T_bit_copy(buf, offset, (uint8_t*)&val, (size_t)0, size);
-} /* end H5T_bit_set_d() */
+    H5T__bit_copy(buf, offset, (uint8_t*)&val, (size_t)0, size);
+
+    FUNC_LEAVE_NOAPI_VOID
+} /* end H5T__bit_set_d() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_set
+ * Function:	H5T__bit_set
  *
  * Purpose:	Sets or clears bits in a contiguous region of a vector
  *		beginning at bit OFFSET and continuing for SIZE bits.
@@ -352,10 +360,12 @@ H5T_bit_set_d(uint8_t *buf, size_t offset, size_t size, uint64_t val)
  *-------------------------------------------------------------------------
  */
 void
-H5T_bit_set(uint8_t *buf, size_t offset, size_t size, hbool_t value)
+H5T__bit_set(uint8_t *buf, size_t offset, size_t size, hbool_t value)
 {
     int	idx;
 
+    FUNC_ENTER_PACKAGE_NOERR
+
     /* Normalize */
     idx = (int)offset / 8;
     offset %= 8;
@@ -385,11 +395,13 @@ H5T_bit_set(uint8_t *buf, size_t offset, size_t size, hbool_t value)
 	else
 	    buf[idx] &= (uint8_t)(~(((unsigned)1 << size) - 1));
     } /* end if */
-} /* end H5T_bit_set() */
+
+    FUNC_LEAVE_NOAPI_VOID
+} /* end H5T__bit_set() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_find
+ * Function:	H5T__bit_find
  *
  * Purpose:	Finds the first bit with the specified VALUE within a region
  *		of a bit vector.  The region begins at OFFSET and continues
@@ -409,7 +421,7 @@ H5T_bit_set(uint8_t *buf, size_t offset, size_t size, hbool_t value)
  *-------------------------------------------------------------------------
  */
 ssize_t
-H5T_bit_find(uint8_t *buf, size_t offset, size_t size, H5T_sdir_t direction,
+H5T__bit_find(uint8_t *buf, size_t offset, size_t size, H5T_sdir_t direction,
 	      hbool_t value)
 {
     ssize_t	base = (ssize_t)offset;
@@ -417,8 +429,8 @@ H5T_bit_find(uint8_t *buf, size_t offset, size_t size, H5T_sdir_t direction,
     size_t	iu;
     ssize_t     ret_value = (-1);         /* Return value */
 
-    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    /* Use FUNC_ENTER_PACKAGE_NOERR here to avoid performance issues */
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Some functions call this with value=TRUE */
     HDassert(TRUE == 1);
@@ -496,11 +508,11 @@ H5T_bit_find(uint8_t *buf, size_t offset, size_t size, H5T_sdir_t direction,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_bit_find() */
+} /* end H5T__bit_find() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_inc
+ * Function:	H5T__bit_inc
  *
  * Purpose:	Increment part of a bit field by adding 1.  The bit field
  *              starts with bit position START and is SIZE bits long.
@@ -516,14 +528,14 @@ done:
  *-------------------------------------------------------------------------
  */
 htri_t
-H5T_bit_inc(uint8_t *buf, size_t start, size_t size)
+H5T__bit_inc(uint8_t *buf, size_t start, size_t size)
 {
     size_t	idx = start / 8;
     unsigned	carry = 1;
     unsigned	acc, mask;
 
-    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    /* Use FUNC_ENTER_PACKAGE_NOERR here to avoid performance issues */
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(buf);
 
@@ -566,11 +578,11 @@ H5T_bit_inc(uint8_t *buf, size_t start, size_t size)
     } /* end if */
 
     FUNC_LEAVE_NOAPI(carry ? TRUE : FALSE)
-} /* end H5T_bit_inc() */
+} /* end H5T__bit_inc() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_dec
+ * Function:	H5T__bit_dec
  *
  * Purpose:	decrement part of a bit field by substracting 1.  The bit
  *              field starts with bit position START and is SIZE bits long.
@@ -586,15 +598,15 @@ H5T_bit_inc(uint8_t *buf, size_t start, size_t size)
  *-------------------------------------------------------------------------
  */
 htri_t
-H5T_bit_dec(uint8_t *buf, size_t start, size_t size)
+H5T__bit_dec(uint8_t *buf, size_t start, size_t size)
 {
     size_t	idx = start / 8;
     size_t      pos = start % 8;
     uint8_t     tmp;
     unsigned	borrow = 0;
 
-    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    /* Use FUNC_ENTER_PACKAGE_NOERR here to avoid performance issues */
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(buf);
     HDassert(size);
@@ -645,11 +657,11 @@ H5T_bit_dec(uint8_t *buf, size_t start, size_t size)
     } /* end else */
 
     FUNC_LEAVE_NOAPI(borrow ? TRUE : FALSE)
-} /* end H5T_bit_dec() */
+} /* end H5T__bit_dec() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_bit_neg
+ * Function:	H5T__bit_neg
  *
  * Purpose:	negate part of a bit sequence.  The bit
  *              field starts with bit position START and is SIZE bits long.
@@ -662,14 +674,14 @@ H5T_bit_dec(uint8_t *buf, size_t start, size_t size)
  *-------------------------------------------------------------------------
  */
 void
-H5T_bit_neg(uint8_t *buf, size_t start, size_t size)
+H5T__bit_neg(uint8_t *buf, size_t start, size_t size)
 {
     size_t	idx = start / 8;
     size_t      pos = start % 8;
     uint8_t     tmp[1];
 
-    /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    /* Use FUNC_ENTER_PACKAGE_NOERR here to avoid performance issues */
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(buf);
     HDassert(size);
@@ -679,7 +691,7 @@ H5T_bit_neg(uint8_t *buf, size_t start, size_t size)
 
     /* Simply copy the negated bit field back to the original byte */
     if((size + start - 1) / 8 > idx) {   /*bit sequence doesn't end in the same byte as starts*/
-        H5T_bit_copy(&(buf[idx]), pos, tmp, pos, (8-pos));
+        H5T__bit_copy(&(buf[idx]), pos, tmp, pos, (8-pos));
         idx++;
         size -= (8 - pos);
 
@@ -694,12 +706,12 @@ H5T_bit_neg(uint8_t *buf, size_t start, size_t size)
         if(size > 0) {
             /* Similar to the first byte case, where sequence ends in the same byte as starts */
             tmp[0] = (uint8_t)~buf[idx];
-            H5T_bit_copy(&(buf[idx]), (size_t)0, tmp, (size_t)0, size);
+            H5T__bit_copy(&(buf[idx]), (size_t)0, tmp, (size_t)0, size);
         } /* end if */
     } /* end if */
     else  /* bit sequence ends in the same byte as starts */
-        H5T_bit_copy(&(buf[idx]), pos, tmp, pos, size);
+        H5T__bit_copy(&(buf[idx]), pos, tmp, pos, size);
 
     FUNC_LEAVE_NOAPI_VOID
-} /* end H5T_bit_neg() */
+} /* end H5T__bit_neg() */
 
diff --git a/src/H5Tcommit.c b/src/H5Tcommit.c
index a49d66e..bfae624 100644
--- a/src/H5Tcommit.c
+++ b/src/H5Tcommit.c
@@ -186,7 +186,7 @@ H5T__commit_named(const H5G_loc_t *loc, const char *name, H5T_t *dt,
 {
     H5O_obj_create_t ocrt_info;             /* Information for object creation */
     H5T_obj_create_t tcrt_info;             /* Information for named datatype creation */
-    H5T_state_t old_state = H5T_STATE_TRANSIENT;        /* The state of the datatype before H5T_commit. */
+    H5T_state_t old_state = H5T_STATE_TRANSIENT;        /* The state of the datatype before H5T__commit. */
     herr_t      ret_value = SUCCEED;        /* Return value */
 
     FUNC_ENTER_PACKAGE
@@ -299,7 +299,7 @@ H5Tcommit_anon(hid_t loc_id, hid_t type_id, hid_t tcpl_id, hid_t tapl_id)
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not datatype access property list")
 
     /* Commit the type */
-    if(H5T_commit(loc.oloc->file, type, tcpl_id, H5AC_dxpl_id) < 0)
+    if(H5T__commit(loc.oloc->file, type, tcpl_id, H5AC_dxpl_id) < 0)
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to commit datatype")
 
     /* Release the datatype's object header */
@@ -321,7 +321,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_commit
+ * Function:	H5T__commit
  *
  * Purpose:	Commit a type, giving it a name and causing it to become
  *		immutable.
@@ -334,7 +334,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id)
+H5T__commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id)
 {
     H5O_loc_t   temp_oloc;              /* Temporary object header location */
     H5G_name_t  temp_path;              /* Temporary path */
@@ -342,7 +342,7 @@ H5T_commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id)
     size_t      dtype_size;             /* Size of the datatype message */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     HDassert(file);
     HDassert(type);
@@ -439,7 +439,7 @@ done:
     } /* end if */
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* H5T_commit() */
+} /* H5T__commit() */
 
 
 /*-------------------------------------------------------------------------
diff --git a/src/H5Tcompound.c b/src/H5Tcompound.c
index e7142e5..b377b29 100644
--- a/src/H5Tcompound.c
+++ b/src/H5Tcompound.c
@@ -56,6 +56,7 @@
 /* Local Prototypes */
 /********************/
 static herr_t H5T_pack(const H5T_t *dt);
+static htri_t H5T_is_packed(const H5T_t *dt);
 
 
 /*********************/
@@ -298,7 +299,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_get_member_size
+ * Function:	H5T__get_member_size
  *
  * Purpose:	Returns the size of the specified member.
  *
@@ -311,16 +312,15 @@ done:
  *-------------------------------------------------------------------------
  */
 size_t
-H5T_get_member_size(const H5T_t *dt, unsigned membno)
+H5T__get_member_size(const H5T_t *dt, unsigned membno)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(dt);
     HDassert(membno < dt->shared->u.compnd.nmembs);
 
-
     FUNC_LEAVE_NOAPI(dt->shared->u.compnd.memb[membno].type->shared->size)
-} /* end H5T_get_member_size() */
+} /* end H5T__get_member_size() */
 
 
 /*-------------------------------------------------------------------------
@@ -370,7 +370,7 @@ H5Tinsert(hid_t parent_id, const char *name, size_t offset, hid_t member_id)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
 
     /* Insert */
-    if(H5T_insert(parent, name, offset, member) < 0)
+    if(H5T__insert(parent, name, offset, member) < 0)
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINSERT, FAIL, "unable to insert member")
 
 done:
@@ -416,7 +416,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_insert
+ * Function:	H5T__insert
  *
  * Purpose:	Adds a new MEMBER to the compound datatype PARENT.  The new
  *		member will have a NAME that is unique within PARENT and an
@@ -431,14 +431,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_insert(H5T_t *parent, const char *name, size_t offset, const H5T_t *member)
+H5T__insert(H5T_t *parent, const char *name, size_t offset, const H5T_t *member)
 {
     unsigned	idx;                        /* Index of member to insert */
     size_t	total_size;
     unsigned	i;                          /* Local index variable */
     herr_t      ret_value = SUCCEED;        /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* check args */
     HDassert(parent && H5T_COMPOUND == parent->shared->type);
@@ -492,7 +492,7 @@ H5T_insert(H5T_t *parent, const char *name, size_t offset, const H5T_t *member)
     HDassert(!(parent->shared->u.compnd.packed));
 
     /* Determine if the compound datatype becomes packed */
-    H5T_update_packed(parent);
+    H5T__update_packed(parent);
 
     /* Set the "force conversion" flag if the field's datatype indicates */
     if(member->shared->force_conv == TRUE)
@@ -504,12 +504,12 @@ H5T_insert(H5T_t *parent, const char *name, size_t offset, const H5T_t *member)
         /* (can't use a partial datatype and later versions of the format are
          *  more efficient, so might as well upgrade all members also... -QAK)
          */
-        if(H5T_upgrade_version(parent, member->shared->version) < 0)
+        if(H5T__upgrade_version(parent, member->shared->version) < 0)
 	    HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "can't upgrade member encoding version")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_insert() */
+} /* end H5T__insert() */
 
 
 /*-------------------------------------------------------------------------
@@ -567,7 +567,7 @@ H5T_pack(const H5T_t *dt)
             } /* end for */
 
             /* Remove padding between members */
-            if(H5T_sort_value(dt, NULL) < 0)
+            if(H5T__sort_value(dt, NULL) < 0)
 		HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOMPARE, FAIL, "value sort failed")
             for(i = 0, offset = 0; i < dt->shared->u.compnd.nmembs; i++) {
                 dt->shared->u.compnd.memb[i].offset = offset;
@@ -602,7 +602,7 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-htri_t
+static htri_t
 H5T_is_packed(const H5T_t *dt)
 {
     htri_t      ret_value = TRUE;       /* Return value */
@@ -625,7 +625,7 @@ H5T_is_packed(const H5T_t *dt)
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_update_packed
+ * Function:	H5T__update_packed
  *
  * Purpose:	Checks whether a datatype which is compound became packed
  *              after recent changes.  This function does not assume that
@@ -642,11 +642,11 @@ H5T_is_packed(const H5T_t *dt)
  *-------------------------------------------------------------------------
  */
 void
-H5T_update_packed(const H5T_t *dt)
+H5T__update_packed(const H5T_t *dt)
 {
     unsigned    i;                      /* Index */
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(dt);
     HDassert(dt->shared->type == H5T_COMPOUND);
@@ -667,5 +667,5 @@ H5T_update_packed(const H5T_t *dt)
         dt->shared->u.compnd.packed = FALSE;
 
     FUNC_LEAVE_NOAPI_VOID
-} /* end H5T_update_packed() */
+} /* end H5T__update_packed() */
 
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index cdfaa0d..ff49ba5 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -605,7 +605,7 @@
 {                                                                             \
     herr_t      ret_value=SUCCEED;      /* Return value         */            \
                                                                               \
-    FUNC_ENTER_NOAPI(FAIL)                                                    \
+    FUNC_ENTER_PACKAGE                                                        \
                                                                               \
 {                                                                             \
     size_t	elmtno;			/*element number		*/    \
@@ -890,7 +890,7 @@ done:                                                                         \
 /* Local Typedefs */
 /******************/
 
-/* Conversion data for H5T_conv_struct() */
+/* Conversion data for H5T__conv_struct() */
 typedef struct H5T_conv_struct_t {
     int	*src2dst;		/*mapping from src to dst member num */
     hid_t	*src_memb_id;		/*source member type ID's	     */
@@ -900,7 +900,7 @@ typedef struct H5T_conv_struct_t {
     unsigned            src_nmembs;     /*needed by free function            */
 } H5T_conv_struct_t;
 
-/* Conversion data for H5T_conv_enum() */
+/* Conversion data for H5T__conv_enum() */
 typedef struct H5T_enum_struct_t {
     int	base;			/*lowest `in' value		     */
     int	length;			/*num elements in arrays	     */
@@ -972,7 +972,7 @@ H5T_init_conv_interface(void)
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_noop
+ * Function:	H5T__conv_noop
  *
  * Purpose:	The no-op conversion.  The library knows about this
  *		conversion without it being registered.
@@ -985,14 +985,14 @@ H5T_init_conv_interface(void)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_noop(hid_t UNUSED src_id, hid_t UNUSED dst_id, H5T_cdata_t *cdata,
+H5T__conv_noop(hid_t UNUSED src_id, hid_t UNUSED dst_id, H5T_cdata_t *cdata,
 	      size_t UNUSED nelmts, size_t UNUSED buf_stride,
               size_t UNUSED bkg_stride, void UNUSED *buf,
 	      void UNUSED *background, hid_t UNUSED dxpl_id)
 {
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -1012,14 +1012,14 @@ H5T_conv_noop(hid_t UNUSED src_id, hid_t UNUSED dst_id, H5T_cdata_t *cdata,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_noop() */
+} /* end H5T__conv_noop() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_order_opt
+ * Function:	H5T__conv_order_opt
  *
  * Purpose:	Convert one type to another when byte order is the only
- *		difference. This is the optimized version of H5T_conv_order()
+ *		difference. This is the optimized version of H5T__conv_order()
  *              for a handful of different sizes.
  *
  * Note:	This is a soft conversion function.
@@ -1034,7 +1034,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                    size_t nelmts, size_t buf_stride,
                    size_t UNUSED bkg_stride, void *_buf,
                    void UNUSED *background, hid_t UNUSED dxpl_id)
@@ -1045,7 +1045,7 @@ H5T_conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
     size_t      i;
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -1415,11 +1415,11 @@ H5T_conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_order_opt() */
+} /* end H5T__conv_order_opt() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_order
+ * Function:	H5T__conv_order
  *
  * Purpose:	Convert one type to another when byte order is the only
  *		difference.
@@ -1442,7 +1442,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 	       size_t buf_stride, size_t UNUSED bkg_stride, void *_buf,
                void UNUSED *background, hid_t UNUSED dxpl_id)
 {
@@ -1453,7 +1453,7 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t	j, md;
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -1515,11 +1515,11 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_order() */
+} /* end H5T__conv_order() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_b_b
+ * Function:	H5T__conv_b_b
  *
  * Purpose:	Convert from one bitfield to any other bitfield.
  *
@@ -1537,7 +1537,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 	     size_t buf_stride, size_t UNUSED bkg_stride, void *_buf,
              void UNUSED *background, hid_t dxpl_id)
 {
@@ -1558,7 +1558,7 @@ H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     hbool_t             reverse;        /*if reverse the order of destination        */
     herr_t      ret_value = SUCCEED;      /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -1676,7 +1676,7 @@ H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                     } /* end if */
 
                     if(except_ret == H5T_CONV_UNHANDLED) {
-                        H5T_bit_copy(d, dst->shared->u.atomic.offset,
+                        H5T__bit_copy(d, dst->shared->u.atomic.offset,
                                      s, src->shared->u.atomic.offset, dst->shared->u.atomic.prec);
                     } else if(except_ret == H5T_CONV_ABORT)
                         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
@@ -1684,10 +1684,10 @@ H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         /*Don't reverse because user handles it*/
                         reverse = FALSE;
                 } else {
-                    H5T_bit_copy(d, dst->shared->u.atomic.offset,
+                    H5T__bit_copy(d, dst->shared->u.atomic.offset,
                                  s, src->shared->u.atomic.offset,
                                  src->shared->u.atomic.prec);
-                    H5T_bit_set(d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
+                    H5T__bit_set(d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
                                 dst->shared->u.atomic.prec-src->shared->u.atomic.prec, FALSE);
                 }
 
@@ -1696,11 +1696,11 @@ H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  */
                 switch(dst->shared->u.atomic.lsb_pad) {
                     case H5T_PAD_ZERO:
-                        H5T_bit_set(d, (size_t)0, dst->shared->u.atomic.offset, FALSE);
+                        H5T__bit_set(d, (size_t)0, dst->shared->u.atomic.offset, FALSE);
                         break;
 
                     case H5T_PAD_ONE:
-                        H5T_bit_set(d, (size_t)0, dst->shared->u.atomic.offset, TRUE);
+                        H5T__bit_set(d, (size_t)0, dst->shared->u.atomic.offset, TRUE);
                         break;
 
                     default:
@@ -1709,11 +1709,11 @@ H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 msb_pad_offset = dst->shared->u.atomic.offset + dst->shared->u.atomic.prec;
                 switch(dst->shared->u.atomic.msb_pad) {
                     case H5T_PAD_ZERO:
-                        H5T_bit_set(d, msb_pad_offset, 8 * dst->shared->size - msb_pad_offset, FALSE);
+                        H5T__bit_set(d, msb_pad_offset, 8 * dst->shared->size - msb_pad_offset, FALSE);
                         break;
 
                     case H5T_PAD_ONE:
-                        H5T_bit_set(d, msb_pad_offset, 8 * dst->shared->size - msb_pad_offset, TRUE);
+                        H5T__bit_set(d, msb_pad_offset, 8 * dst->shared->size - msb_pad_offset, TRUE);
                         break;
                     default:
                         HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "unsupported MSB padding")
@@ -1758,7 +1758,7 @@ done:
     if(src_rev)
         H5MM_free(src_rev);
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_b_b() */
+} /* end H5T__conv_b_b() */
 
 
 /*-------------------------------------------------------------------------
@@ -1887,8 +1887,8 @@ H5T_conv_struct_init(H5T_t *src, H5T_t *dst, H5T_cdata_t *cdata, hid_t dxpl_id)
         /*
          * Insure that members are sorted.
          */
-        H5T_sort_value(src, NULL);
-        H5T_sort_value(dst, NULL);
+        H5T__sort_value(src, NULL);
+        H5T__sort_value(dst, NULL);
 
         /*
          * Build a mapping from source member number to destination member
@@ -1924,8 +1924,8 @@ H5T_conv_struct_init(H5T_t *src, H5T_t *dst, H5T_cdata_t *cdata, hid_t dxpl_id)
     else {
         /* Restore sorted conditions for the datatypes */
         /* (Required for the src2dst array to be valid) */
-        H5T_sort_value(src, NULL);
-        H5T_sort_value(dst, NULL);
+        H5T__sort_value(src, NULL);
+        H5T__sort_value(dst, NULL);
     } /* end else */
 
     /*
@@ -1999,7 +1999,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_struct_subset
+ * Function:	H5T__conv_struct_subset
  *
  * Purpose:     A quick way to return a field in a struct private in this
  *              file.  The flag SMEMBS_SUBSET indicates whether the source
@@ -2023,11 +2023,11 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_subset_info_t *
-H5T_conv_struct_subset(const H5T_cdata_t *cdata)
+H5T__conv_struct_subset(const H5T_cdata_t *cdata)
 {
     H5T_conv_struct_t	*priv;
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
     HDassert(cdata);
     HDassert(cdata->priv);
@@ -2035,11 +2035,11 @@ H5T_conv_struct_subset(const H5T_cdata_t *cdata)
     priv = (H5T_conv_struct_t *)(cdata->priv);
 
     FUNC_LEAVE_NOAPI((H5T_subset_info_t *) &priv->subset_info)
-} /* end H5T_conv_struct_subset() */
+} /* end H5T__conv_struct_subset() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_struct
+ * Function:	H5T__conv_struct
  *
  * Purpose:	Converts between compound datatypes.  This is a soft
  *		conversion function.  The algorithm is basically:
@@ -2079,7 +2079,7 @@ H5T_conv_struct_subset(const H5T_cdata_t *cdata)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t buf_stride, size_t bkg_stride, void *_buf, void *_bkg, hid_t dxpl_id)
 {
     uint8_t	*buf = (uint8_t *)_buf;	/*cast for pointer arithmetic	*/
@@ -2098,7 +2098,7 @@ H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     H5T_conv_struct_t *priv = (H5T_conv_struct_t *)(cdata->priv);
     herr_t      ret_value = SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -2141,8 +2141,8 @@ H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
             /*
              * Insure that members are sorted.
              */
-            H5T_sort_value(src, NULL);
-            H5T_sort_value(dst, NULL);
+            H5T__sort_value(src, NULL);
+            H5T__sort_value(dst, NULL);
             src2dst = priv->src2dst;
 
             /*
@@ -2254,14 +2254,14 @@ H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_struct() */
+} /* end H5T__conv_struct() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_struct_opt
+ * Function:	H5T__conv_struct_opt
  *
  * Purpose:	Converts between compound datatypes in a manner more
- *		efficient than the general-purpose H5T_conv_struct()
+ *		efficient than the general-purpose H5T__conv_struct()
  *		function.  This function isn't applicable if the destination
  *		is larger than the source type. This is a soft conversion
  *		function.  The algorithm is basically:
@@ -2326,7 +2326,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
     size_t nelmts, size_t buf_stride, size_t bkg_stride, void *_buf,
     void *_bkg, hid_t dxpl_id)
 {
@@ -2348,7 +2348,7 @@ H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
     int		i;			/*counters			*/
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -2431,8 +2431,8 @@ H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
             /*
              * Insure that members are sorted.
              */
-            H5T_sort_value(src, NULL);
-            H5T_sort_value(dst, NULL);
+            H5T__sort_value(src, NULL);
+            H5T__sort_value(dst, NULL);
 
             /*
              * Calculate strides. If BUF_STRIDE is non-zero then convert one
@@ -2550,13 +2550,13 @@ H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_struct_opt() */
+} /* end H5T__conv_struct_opt() */
 
 
 /*-------------------------------------------------------------------------
  * Function:	H5T_conv_enum_init
  *
- * Purpose:	Initialize information for H5T_conv_enum().
+ * Purpose:	Initialize information for H5T__conv_enum().
  *
  * Return:	Success:	Non-negative
  *
@@ -2593,8 +2593,8 @@ H5T_conv_enum_init(H5T_t *src, H5T_t *dst, H5T_cdata_t *cdata)
      * symbol names and build a map from source member index to destination
      * member index.
      */
-    H5T_sort_name(src, NULL);
-    H5T_sort_name(dst, NULL);
+    H5T__sort_name(src, NULL);
+    H5T__sort_name(dst, NULL);
     if(NULL == (priv->src2dst = (int *)H5MM_malloc(src->shared->u.enumer.nmembs * sizeof(int))))
 	HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
     for(i = 0, j = 0;
@@ -2686,7 +2686,7 @@ H5T_conv_enum_init(H5T_t *src, H5T_t *dst, H5T_cdata_t *cdata)
     }
 
     /* Sort source type by value and adjust src2dst[] appropriately */
-    H5T_sort_value(src, priv->src2dst);
+    H5T__sort_value(src, priv->src2dst);
 
 done:
     if (ret_value<0 && priv) {
@@ -2699,7 +2699,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_enum
+ * Function:	H5T__conv_enum
  *
  * Purpose:	Converts one type of enumerated data to another.
  *
@@ -2712,7 +2712,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 	      size_t buf_stride, size_t UNUSED bkg_stride, void *_buf,
               void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -2729,7 +2729,7 @@ H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t	i;			/*counters			*/
     herr_t      ret_value = SUCCEED;    /* Return value                 */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -2777,9 +2777,9 @@ H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
              * sort keys are used here during conversion. See H5T_conv_enum_init(). But
              * we actually don't care about the source type's order when doing the O(1)
              * conversion algorithm, which is turned on by non-zero priv->length */
-            H5T_sort_name(dst, NULL);
+            H5T__sort_name(dst, NULL);
             if(!priv->length)
-                H5T_sort_value(src, NULL);
+                H5T__sort_value(src, NULL);
 
             /*
              * Direction of conversion.
@@ -2885,11 +2885,11 @@ H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_enum() */
+} /* end H5T__conv_enum() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_vlen
+ * Function:	H5T__conv_vlen
  *
  * Purpose:	Converts between VL datatypes in memory and on disk.
  *		This is a soft conversion function.  The algorithm is
@@ -2929,7 +2929,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t buf_stride, size_t bkg_stride, void *buf, void *bkg, hid_t dxpl_id)
 {
     H5T_vlen_alloc_info_t _vl_alloc_info;       /* VL allocation info buffer */
@@ -2959,7 +2959,7 @@ H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t	elmtno;			/*element number counter	     */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -3232,11 +3232,11 @@ done:
         tmp_buf = H5FL_BLK_FREE(vlen_seq, tmp_buf);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_vlen() */
+} /* end H5T__conv_vlen() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_array
+ * Function:	H5T__conv_array
  *
  * Purpose:	Converts between array datatypes in memory and on disk.
  *		This is a soft conversion function.
@@ -3251,7 +3251,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 	      size_t buf_stride, size_t bkg_stride, void *_buf,
               void UNUSED *_bkg, hid_t dxpl_id)
 {
@@ -3267,7 +3267,7 @@ H5T_conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     void	*bkg_buf = NULL;     	/*temporary background buffer 	     */
     herr_t      ret_value=SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch (cdata->command) {
         case H5T_CONV_INIT:
@@ -3378,11 +3378,11 @@ done:
         bkg_buf = H5FL_BLK_FREE(array_seq, bkg_buf);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_array() */
+} /* end H5T__conv_array() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_i_i
+ * Function:	H5T__conv_i_i
  *
  * Purpose:	Convert one integer type to another.  This is the catch-all
  *		function for integer conversions and is probably not
@@ -3410,7 +3410,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t buf_stride, size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
     hid_t dxpl_id)
 {
@@ -3432,7 +3432,7 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     hbool_t             reverse;        /*if reverse the order of destination        */
     herr_t      ret_value=SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -3532,7 +3532,7 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * What is the bit number for the msb bit of S which is set? The
                  * bit number is relative to the significant part of the number.
                  */
-                sfirst = H5T_bit_find (s, src->shared->u.atomic.offset, src->shared->u.atomic.prec,
+                sfirst = H5T__bit_find (s, src->shared->u.atomic.offset, src->shared->u.atomic.prec,
                                        H5T_BIT_MSB, TRUE);
                 first = (size_t)sfirst;
 
@@ -3545,7 +3545,7 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                      * The source has no bits set and must therefore be zero.
                      * Set the destination to zero.
                      */
-                    H5T_bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, FALSE);
+                    H5T__bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, FALSE);
 
                 } else if (H5T_SGN_NONE==src->shared->u.atomic.u.i.sign &&
                            H5T_SGN_NONE==dst->shared->u.atomic.u.i.sign) {
@@ -3556,9 +3556,9 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                      * destination will be set to the maximum possible value.
                      */
                     if (src->shared->u.atomic.prec <= dst->shared->u.atomic.prec) {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               src->shared->u.atomic.prec);
-                        H5T_bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
+                        H5T__bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
                              dst->shared->u.atomic.prec-src->shared->u.atomic.prec, FALSE);
                     } else if (first>=dst->shared->u.atomic.prec) {
                         /*overflow*/
@@ -3569,14 +3569,14 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
-                            H5T_bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, TRUE);
+                            H5T__bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, TRUE);
                         } else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED)
                             /*Don't reverse because user handles it already*/
                             reverse = FALSE;
                     } else {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               dst->shared->u.atomic.prec);
                     }
 
@@ -3598,16 +3598,16 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
-                            H5T_bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, FALSE);
+                            H5T__bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, FALSE);
                         } else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED)
                             /*Don't reverse because user handles it already*/
                             reverse = FALSE;
                     } else if (src->shared->u.atomic.prec < dst->shared->u.atomic.prec) {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               src->shared->u.atomic.prec-1);
-                        H5T_bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec-1,
+                        H5T__bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec-1,
                              (dst->shared->u.atomic.prec-src->shared->u.atomic.prec)+1, FALSE);
                     } else if (first>=dst->shared->u.atomic.prec) {
                         /*overflow - source is positive*/
@@ -3618,14 +3618,14 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED)
-                            H5T_bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, TRUE);
+                            H5T__bit_set (d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec, TRUE);
                         else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED)
                             /*Don't reverse because user handles it already*/
                             reverse = FALSE;
                     } else {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               dst->shared->u.atomic.prec);
                     }
 
@@ -3645,20 +3645,20 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
-                            H5T_bit_set(d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec-1, TRUE);
-                            H5T_bit_set(d, (dst->shared->u.atomic.offset + dst->shared->u.atomic.prec-1), (size_t)1, FALSE);
+                            H5T__bit_set(d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec-1, TRUE);
+                            H5T__bit_set(d, (dst->shared->u.atomic.offset + dst->shared->u.atomic.prec-1), (size_t)1, FALSE);
                         } else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED)
                             /*Don't reverse because user handles it already*/
                             reverse = FALSE;
                     } else if (src->shared->u.atomic.prec<dst->shared->u.atomic.prec) {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               src->shared->u.atomic.prec);
-                        H5T_bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
+                        H5T__bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
                              dst->shared->u.atomic.prec-src->shared->u.atomic.prec, FALSE);
                     } else {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               dst->shared->u.atomic.prec);
                     }
                 } else if (first+1 == src->shared->u.atomic.prec) {
@@ -3669,7 +3669,7 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                      * destination is set to a negative number with the largest
                      * possible magnitude.
                      */
-                    ssize_t sfz = H5T_bit_find (s, src->shared->u.atomic.offset,
+                    ssize_t sfz = H5T__bit_find (s, src->shared->u.atomic.offset,
                                     src->shared->u.atomic.prec-1, H5T_BIT_MSB, FALSE);
                     size_t fz = (size_t)sfz;
 
@@ -3682,18 +3682,18 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
-                            H5T_bit_set(d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec-1, FALSE);
-                            H5T_bit_set(d, (dst->shared->u.atomic.offset + dst->shared->u.atomic.prec-1), (size_t)1, TRUE);
+                            H5T__bit_set(d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec-1, FALSE);
+                            H5T__bit_set(d, (dst->shared->u.atomic.offset + dst->shared->u.atomic.prec-1), (size_t)1, TRUE);
                         } else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED)
                             /*Don't reverse because user handles it already*/
                             reverse = FALSE;
                     } else if (src->shared->u.atomic.prec<dst->shared->u.atomic.prec) {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset, src->shared->u.atomic.prec);
-                        H5T_bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec, dst->shared->u.atomic.prec-src->shared->u.atomic.prec, TRUE);
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset, src->shared->u.atomic.prec);
+                        H5T__bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec, dst->shared->u.atomic.prec-src->shared->u.atomic.prec, TRUE);
                     } else {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset, dst->shared->u.atomic.prec);
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset, dst->shared->u.atomic.prec);
                     }
 
                 } else {
@@ -3712,20 +3712,20 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
-                            H5T_bit_set(d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec-1, TRUE);
-                            H5T_bit_set(d, (dst->shared->u.atomic.offset + dst->shared->u.atomic.prec-1), (size_t)1, FALSE);
+                            H5T__bit_set(d, dst->shared->u.atomic.offset, dst->shared->u.atomic.prec-1, TRUE);
+                            H5T__bit_set(d, (dst->shared->u.atomic.offset + dst->shared->u.atomic.prec-1), (size_t)1, FALSE);
                         } else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED)
                             /*Don't reverse because user handles it already*/
                             reverse = FALSE;
                     } else if (src->shared->u.atomic.prec<dst->shared->u.atomic.prec) {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               src->shared->u.atomic.prec);
-                        H5T_bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
+                        H5T__bit_set (d, dst->shared->u.atomic.offset+src->shared->u.atomic.prec,
                              dst->shared->u.atomic.prec-src->shared->u.atomic.prec, FALSE);
                     } else {
-                        H5T_bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
+                        H5T__bit_copy (d, dst->shared->u.atomic.offset, s, src->shared->u.atomic.offset,
                               dst->shared->u.atomic.prec);
                     }
                 }
@@ -3735,11 +3735,11 @@ H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  */
                 if (dst->shared->u.atomic.offset>0) {
                     assert(H5T_PAD_ZERO==dst->shared->u.atomic.lsb_pad || H5T_PAD_ONE==dst->shared->u.atomic.lsb_pad);
-                    H5T_bit_set(d, (size_t)0, dst->shared->u.atomic.offset, (hbool_t)(H5T_PAD_ONE==dst->shared->u.atomic.lsb_pad));
+                    H5T__bit_set(d, (size_t)0, dst->shared->u.atomic.offset, (hbool_t)(H5T_PAD_ONE==dst->shared->u.atomic.lsb_pad));
                 }
                 if (dst->shared->u.atomic.offset+dst->shared->u.atomic.prec!=8*dst->shared->size) {
                     assert (H5T_PAD_ZERO==dst->shared->u.atomic.msb_pad || H5T_PAD_ONE==dst->shared->u.atomic.msb_pad);
-                    H5T_bit_set (d, dst->shared->u.atomic.offset+dst->shared->u.atomic.prec,
+                    H5T__bit_set (d, dst->shared->u.atomic.offset+dst->shared->u.atomic.prec,
                                  8*dst->shared->size - (dst->shared->u.atomic.offset+ dst->shared->u.atomic.prec),
                                  (hbool_t)(H5T_PAD_ONE==dst->shared->u.atomic.msb_pad));
                 }
@@ -3782,11 +3782,11 @@ done:
     if(src_rev)
         H5MM_free(src_rev);
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_i_i() */
+} /* end H5T__conv_i_i() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_f_f
+ * Function:	H5T__conv_f_f
  *
  * Purpose:	Convert one floating point type to another.  This is a catch
  *		all for floating point conversions and is probably not
@@ -3817,7 +3817,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t buf_stride, size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
     hid_t dxpl_id)
 {
@@ -3854,7 +3854,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     hbool_t             reverse;        /*if reverse the order of destination        */
     herr_t      ret_value = SUCCEED;    /*return value                 */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -3978,21 +3978,21 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 /*
                  * Find the sign bit value of the source.
                  */
-                sign = H5T_bit_get_d(s, src.u.f.sign, (size_t)1);
+                sign = H5T__bit_get_d(s, src.u.f.sign, (size_t)1);
 
                 /*
                  * Check for special cases: +0, -0, +Inf, -Inf, NaN
                  */
-                if (H5T_bit_find (s, src.u.f.mpos, src.u.f.msize,
+                if (H5T__bit_find (s, src.u.f.mpos, src.u.f.msize,
                                   H5T_BIT_LSB, TRUE)<0) {
-                    if (H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                    if (H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                       H5T_BIT_LSB, TRUE)<0) {
                         /* +0 or -0 */
-                        H5T_bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
-                        H5T_bit_set (d, dst.u.f.epos, dst.u.f.esize, FALSE);
-                        H5T_bit_set (d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                        H5T__bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
+                        H5T__bit_set (d, dst.u.f.epos, dst.u.f.esize, FALSE);
+                        H5T__bit_set (d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                         goto padding;
-                    } else if (H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                    } else if (H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                              H5T_BIT_LSB, FALSE)<0) {
                         /* +Inf or -Inf */
                         if(cb_struct.func) { /*If user's exception handler is present, use it*/
@@ -4007,14 +4007,14 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
-                            H5T_bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
-                            H5T_bit_set (d, dst.u.f.epos, dst.u.f.esize, TRUE);
-                            H5T_bit_set (d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                            H5T__bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
+                            H5T__bit_set (d, dst.u.f.epos, dst.u.f.esize, TRUE);
+                            H5T__bit_set (d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                             /*If the destination no implied mantissa bit, we'll need to set
                              *the 1st bit of mantissa to 1.  The Intel-Linux long double is
                              *this case.*/
                             if (H5T_NORM_NONE==dst.u.f.norm)
-                                H5T_bit_set (d, dst.u.f.mpos+dst.u.f.msize-1, (size_t)1, TRUE);
+                                H5T__bit_set (d, dst.u.f.mpos+dst.u.f.msize-1, (size_t)1, TRUE);
                         } else if(except_ret == H5T_CONV_HANDLED) {
                             /*No need to reverse the order of destination because user handles it*/
                             reverse = FALSE;
@@ -4024,8 +4024,8 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                         goto padding;
                     }
-                } else if (H5T_NORM_NONE==src.u.f.norm && H5T_bit_find (s, src.u.f.mpos, src.u.f.msize-1,
-                                  H5T_BIT_LSB, TRUE)<0 && H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                } else if (H5T_NORM_NONE==src.u.f.norm && H5T__bit_find (s, src.u.f.mpos, src.u.f.msize-1,
+                                  H5T_BIT_LSB, TRUE)<0 && H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                   H5T_BIT_LSB, FALSE)<0) {
                     /*This is a special case for the source of no implied mantissa bit.
                      *If the exponent bits are all 1s and only the 1st bit of mantissa
@@ -4043,14 +4043,14 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                     }
 
                     if(except_ret == H5T_CONV_UNHANDLED) {
-                        H5T_bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
-                        H5T_bit_set (d, dst.u.f.epos, dst.u.f.esize, TRUE);
-                        H5T_bit_set (d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                        H5T__bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
+                        H5T__bit_set (d, dst.u.f.epos, dst.u.f.esize, TRUE);
+                        H5T__bit_set (d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                         /*If the destination no implied mantissa bit, we'll need to set
                          *the 1st bit of mantissa to 1.  The Intel-Linux long double is
                          *this case.*/
                         if (H5T_NORM_NONE==dst.u.f.norm)
-                            H5T_bit_set (d, dst.u.f.mpos+dst.u.f.msize-1, (size_t)1, TRUE);
+                            H5T__bit_set (d, dst.u.f.mpos+dst.u.f.msize-1, (size_t)1, TRUE);
                     } else if(except_ret == H5T_CONV_HANDLED) {
                         /*No need to reverse the order of destination because user handles it*/
                         reverse = FALSE;
@@ -4062,7 +4062,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 #ifdef H5_VMS
                 } /*Temporary solution to handle VAX special values*/
 #else /*H5_VMS*/
-                } else if (H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                } else if (H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                          H5T_BIT_LSB, FALSE)<0) {
                     /* NaN */
                     if(cb_struct.func) { /*If user's exception handler is present, use it*/
@@ -4075,9 +4075,9 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                     if(except_ret == H5T_CONV_UNHANDLED) {
                         /* There are many NaN values, so we just set all bits of
                          * the significand. */
-                        H5T_bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
-                        H5T_bit_set (d, dst.u.f.epos, dst.u.f.esize, TRUE);
-                        H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize, TRUE);
+                        H5T__bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
+                        H5T__bit_set (d, dst.u.f.epos, dst.u.f.esize, TRUE);
+                        H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize, TRUE);
                     } else if(except_ret == H5T_CONV_HANDLED) {
                         /*No need to reverse the order of destination because user handles it*/
                         reverse = FALSE;
@@ -4094,7 +4094,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * the source bit field where it's located.	 Don't worry about
                  * the exponent bias yet.
                  */
-                expo = H5T_bit_get_d(s, src.u.f.epos, src.u.f.esize);
+                expo = H5T__bit_get_d(s, src.u.f.epos, src.u.f.esize);
 
                 if(expo==0)
                    denormalized=TRUE;
@@ -4107,12 +4107,12 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 mpos = src.u.f.mpos;
                 mrsh = 0;
                 if (0==expo || H5T_NORM_NONE==src.u.f.norm) {
-                    if ((bitno=H5T_bit_find(s, src.u.f.mpos, src.u.f.msize,
+                    if ((bitno=H5T__bit_find(s, src.u.f.mpos, src.u.f.msize,
                                             H5T_BIT_MSB, TRUE))>0) {
                         msize = bitno;
                     } else if (0==bitno) {
                         msize = 1;
-                        H5T_bit_set(s, src.u.f.mpos, (size_t)1, FALSE);
+                        H5T__bit_set(s, src.u.f.mpos, (size_t)1, FALSE);
                     }
                 } else if (H5T_NORM_IMPLIED==src.u.f.norm) {
                     msize = src.u.f.msize;
@@ -4125,7 +4125,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * The sign for the destination is the same as the sign for the
                  * source in all cases.
                  */
-                H5T_bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
+                H5T__bit_copy (d, dst.u.f.sign, s, src.u.f.sign, (size_t)1);
 
                 /*
                  * Calculate the true source exponent by adjusting according to
@@ -4158,7 +4158,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 if (expo < -(hssize_t)(dst.u.f.msize)) {
                     /* The exponent is way too small.  Result is zero. */
                     expo = 0;
-                    H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                    H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                     msize = 0;
                 } else if (expo<=0) {
                     /*
@@ -4188,7 +4188,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                     if(except_ret == H5T_CONV_UNHANDLED) {
                         expo = expo_max;
-                        H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                        H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                         msize = 0;
                     } else if(except_ret == H5T_CONV_ABORT)
                         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
@@ -4209,17 +4209,17 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                     bitno = (ssize_t)(mrsh+msize - dst.u.f.msize);
                     assert(bitno>=0 && (size_t)bitno<=msize);
                     /*If the 1st bit being cut off is set and source isn't denormalized.*/
-                    if(H5T_bit_get_d(s, (mpos + bitno) - 1, (size_t)1) && !denormalized) {
+                    if(H5T__bit_get_d(s, (mpos + bitno) - 1, (size_t)1) && !denormalized) {
                         /*Don't do rounding if exponent is 111...110 and mantissa is 111...11.
                          *To do rounding and increment exponent in this case will create an infinity value.*/
-                        if((H5T_bit_find(s, mpos+bitno, msize-bitno, H5T_BIT_LSB, FALSE)>=0 || expo<expo_max-1)) {
-                            carry = H5T_bit_inc(s, mpos+bitno-1, 1+msize-bitno);
+                        if((H5T__bit_find(s, mpos+bitno, msize-bitno, H5T_BIT_LSB, FALSE)>=0 || expo<expo_max-1)) {
+                            carry = H5T__bit_inc(s, mpos+bitno-1, 1+msize-bitno);
                             if (carry)
                                 implied = 2;
                         }
-                    } else if(H5T_bit_get_d(s, (mpos + bitno) - 1, (size_t)1) && denormalized)
+                    } else if(H5T__bit_get_d(s, (mpos + bitno) - 1, (size_t)1) && denormalized)
                             /*For either source or destination, denormalized value doesn't increment carry.*/
-                            H5T_bit_inc(s, mpos+bitno-1, 1+msize-bitno);
+                            H5T__bit_inc(s, mpos+bitno-1, 1+msize-bitno);
                 }
                 else
                     carry=0;
@@ -4228,28 +4228,28 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * Write the mantissa to the destination
                  */
                 if (mrsh>dst.u.f.msize+1) {
-                    H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                    H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                 } else if (mrsh==dst.u.f.msize+1) {
-                    H5T_bit_set(d, dst.u.f.mpos+1, dst.u.f.msize-1, FALSE);
-                    H5T_bit_set(d, dst.u.f.mpos, (size_t)1, TRUE);
+                    H5T__bit_set(d, dst.u.f.mpos+1, dst.u.f.msize-1, FALSE);
+                    H5T__bit_set(d, dst.u.f.mpos, (size_t)1, TRUE);
                 } else if (mrsh==dst.u.f.msize) {
-                    H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
-                    H5T_bit_set_d(d, dst.u.f.mpos, MIN(2, dst.u.f.msize), (hsize_t)implied);
+                    H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                    H5T__bit_set_d(d, dst.u.f.mpos, MIN(2, dst.u.f.msize), (hsize_t)implied);
                 } else {
                     if (mrsh>0) {
-                        H5T_bit_set(d, dst.u.f.mpos+dst.u.f.msize-mrsh, mrsh,
+                        H5T__bit_set(d, dst.u.f.mpos+dst.u.f.msize-mrsh, mrsh,
                                     FALSE);
-                        H5T_bit_set_d(d, dst.u.f.mpos+dst.u.f.msize-mrsh, (size_t)2,
+                        H5T__bit_set_d(d, dst.u.f.mpos+dst.u.f.msize-mrsh, (size_t)2,
                                       (hsize_t)implied);
                     }
                     if (mrsh+msize>=dst.u.f.msize) {
-                        H5T_bit_copy(d, dst.u.f.mpos,
+                        H5T__bit_copy(d, dst.u.f.mpos,
                                      s, (mpos+msize+mrsh-dst.u.f.msize),
                                      dst.u.f.msize-mrsh);
                     } else {
-                        H5T_bit_copy(d, dst.u.f.mpos+dst.u.f.msize-(mrsh+msize),
+                        H5T__bit_copy(d, dst.u.f.mpos+dst.u.f.msize-(mrsh+msize),
                                      s, mpos, msize);
-                        H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize-(mrsh+msize),
+                        H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize-(mrsh+msize),
                                     FALSE);
                     }
                 }
@@ -4275,7 +4275,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
                             expo = expo_max;
-                            H5T_bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
+                            H5T__bit_set(d, dst.u.f.mpos, dst.u.f.msize, FALSE);
                         } else if(except_ret == H5T_CONV_ABORT)
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                         else if(except_ret == H5T_CONV_HANDLED) {
@@ -4288,7 +4288,7 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 carry = 0;
 
                 H5_CHECK_OVERFLOW(expo,hssize_t,hsize_t);
-                H5T_bit_set_d(d, dst.u.f.epos, dst.u.f.esize, (hsize_t)expo);
+                H5T__bit_set_d(d, dst.u.f.epos, dst.u.f.esize, (hsize_t)expo);
 
             padding:
 
@@ -4297,11 +4297,11 @@ H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  */
                 if (dst.offset>0) {
                     assert (H5T_PAD_ZERO==dst.lsb_pad || H5T_PAD_ONE==dst.lsb_pad);
-                    H5T_bit_set (d, (size_t)0, dst.offset, (hbool_t)(H5T_PAD_ONE==dst.lsb_pad));
+                    H5T__bit_set (d, (size_t)0, dst.offset, (hbool_t)(H5T_PAD_ONE==dst.lsb_pad));
                 }
                 if (dst.offset+dst.prec!=8*dst_p->shared->size) {
                     assert (H5T_PAD_ZERO==dst.msb_pad || H5T_PAD_ONE==dst.msb_pad);
-                    H5T_bit_set (d, dst.offset+dst.prec, 8*dst_p->shared->size - (dst.offset+dst.prec),
+                    H5T__bit_set (d, dst.offset+dst.prec, 8*dst_p->shared->size - (dst.offset+dst.prec),
                          (hbool_t)(H5T_PAD_ONE==dst.msb_pad));
                 }
 
@@ -4359,11 +4359,11 @@ done:
         H5MM_free(src_rev);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_f_f() */
+} /* end H5T__conv_f_f() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_s_s
+ * Function:	H5T__conv_s_s
  *
  * Purpose:	Convert one fixed-length string type to another.
  *
@@ -4385,7 +4385,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 	      size_t buf_stride, size_t UNUSED bkg_stride, void *buf,
               void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4399,7 +4399,7 @@ H5T_conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     uint8_t	*dbuf=NULL;		/*temp buf for overlap convers.	*/
     herr_t      ret_value=SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -4592,11 +4592,11 @@ done:
     H5MM_xfree(dbuf);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_s_s() */
+} /* end H5T__conv_s_s() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_uchar
+ * Function:	H5T__conv_schar_uchar
  *
  * Purpose:	Converts `signed char' to `unsigned char'
  *
@@ -4612,7 +4612,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                      hid_t UNUSED dxpl_id)
@@ -4622,7 +4622,7 @@ H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_schar
+ * Function:	H5T__conv_uchar_schar
  *
  * Purpose:	Converts `unsigned char' to `signed char'
  *
@@ -4638,7 +4638,7 @@ H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                      hid_t UNUSED dxpl_id)
@@ -4648,7 +4648,7 @@ H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_short
+ * Function:	H5T__conv_schar_short
  *
  * Purpose:	Converts `signed char' to `short'
  *
@@ -4664,7 +4664,7 @@ H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                      hid_t UNUSED dxpl_id)
@@ -4674,7 +4674,7 @@ H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_ushort
+ * Function:	H5T__conv_schar_ushort
  *
  * Purpose:	Converts `signed char' to `unsigned short'
  *
@@ -4690,7 +4690,7 @@ H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -4700,7 +4700,7 @@ H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_short
+ * Function:	H5T__conv_uchar_short
  *
  * Purpose:	Converts `unsigned char' to `short'
  *
@@ -4716,7 +4716,7 @@ H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                      hid_t UNUSED dxpl_id)
@@ -4726,7 +4726,7 @@ H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_ushort
+ * Function:	H5T__conv_uchar_ushort
  *
  * Purpose:	Converts `unsigned char' to `unsigned short'
  *
@@ -4742,7 +4742,7 @@ H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -4752,7 +4752,7 @@ H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_int
+ * Function:	H5T__conv_schar_int
  *
  * Purpose:	Converts `signed char' to `int'
  *
@@ -4768,7 +4768,7 @@ H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4777,7 +4777,7 @@ H5T_conv_schar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_uint
+ * Function:	H5T__conv_schar_uint
  *
  * Purpose:	Converts `signed char' to `unsigned int'
  *
@@ -4793,7 +4793,7 @@ H5T_conv_schar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4802,7 +4802,7 @@ H5T_conv_schar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_int
+ * Function:	H5T__conv_uchar_int
  *
  * Purpose:	Converts `unsigned char' to `int'
  *
@@ -4818,7 +4818,7 @@ H5T_conv_schar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4827,7 +4827,7 @@ H5T_conv_uchar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_uint
+ * Function:	H5T__conv_uchar_uint
  *
  * Purpose:	Converts `unsigned char' to `unsigned int'
  *
@@ -4843,7 +4843,7 @@ H5T_conv_uchar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4852,7 +4852,7 @@ H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_long
+ * Function:	H5T__conv_schar_long
  *
  * Purpose:	Converts `signed char' to `long'
  *
@@ -4868,7 +4868,7 @@ H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4877,7 +4877,7 @@ H5T_conv_schar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_ulong
+ * Function:	H5T__conv_schar_ulong
  *
  * Purpose:	Converts `signed char' to `unsigned long'
  *
@@ -4893,7 +4893,7 @@ H5T_conv_schar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -4903,7 +4903,7 @@ H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_long
+ * Function:	H5T__conv_uchar_long
  *
  * Purpose:	Converts `unsigned char' to `long'
  *
@@ -4919,7 +4919,7 @@ H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -4928,7 +4928,7 @@ H5T_conv_uchar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_ulong
+ * Function:	H5T__conv_uchar_ulong
  *
  * Purpose:	Converts `unsigned char' to `unsigned long'
  *
@@ -4944,7 +4944,7 @@ H5T_conv_uchar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -4954,7 +4954,7 @@ H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_llong
+ * Function:	H5T__conv_schar_llong
  *
  * Purpose:	Converts `signed char' to `long long'
  *
@@ -4970,7 +4970,7 @@ H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -4980,7 +4980,7 @@ H5T_conv_schar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_ullong
+ * Function:	H5T__conv_schar_ullong
  *
  * Purpose:	Converts `signed char' to `unsigned long long'
  *
@@ -4996,7 +4996,7 @@ H5T_conv_schar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5006,7 +5006,7 @@ H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_llong
+ * Function:	H5T__conv_uchar_llong
  *
  * Purpose:	Converts `unsigned char' to `long long'
  *
@@ -5022,7 +5022,7 @@ H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5032,7 +5032,7 @@ H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_ullong
+ * Function:	H5T__conv_uchar_ullong
  *
  * Purpose:	Converts `unsigned char' to `unsigned long long'
  *
@@ -5048,7 +5048,7 @@ H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5058,7 +5058,7 @@ H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_schar
+ * Function:	H5T__conv_short_schar
  *
  * Purpose:	Converts `short' to `signed char'
  *
@@ -5074,7 +5074,7 @@ H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5084,7 +5084,7 @@ H5T_conv_short_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_uchar
+ * Function:	H5T__conv_short_uchar
  *
  * Purpose:	Converts `short' to `unsigned char'
  *
@@ -5100,7 +5100,7 @@ H5T_conv_short_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5110,7 +5110,7 @@ H5T_conv_short_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_schar
+ * Function:	H5T__conv_ushort_schar
  *
  * Purpose:	Converts `unsigned short' to `signed char'
  *
@@ -5126,7 +5126,7 @@ H5T_conv_short_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5136,7 +5136,7 @@ H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_uchar
+ * Function:	H5T__conv_ushort_uchar
  *
  * Purpose:	Converts `unsigned short' to `unsigned char'
  *
@@ -5152,7 +5152,7 @@ H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5162,7 +5162,7 @@ H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_ushort
+ * Function:	H5T__conv_short_ushort
  *
  * Purpose:	Converts `short' to `unsigned short'
  *
@@ -5178,7 +5178,7 @@ H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5188,7 +5188,7 @@ H5T_conv_short_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_short
+ * Function:	H5T__conv_ushort_short
  *
  * Purpose:	Converts `unsigned short' to `short'
  *
@@ -5204,7 +5204,7 @@ H5T_conv_short_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5214,7 +5214,7 @@ H5T_conv_ushort_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_int
+ * Function:	H5T__conv_short_int
  *
  * Purpose:	Converts `short' to `int'
  *
@@ -5230,7 +5230,7 @@ H5T_conv_ushort_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride,
                    size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		   hid_t UNUSED dxpl_id)
@@ -5240,7 +5240,7 @@ H5T_conv_short_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_uint
+ * Function:	H5T__conv_short_uint
  *
  * Purpose:	Converts `short' to `unsigned int'
  *
@@ -5256,7 +5256,7 @@ H5T_conv_short_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5266,7 +5266,7 @@ H5T_conv_short_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_int
+ * Function:	H5T__conv_ushort_int
  *
  * Purpose:	Converts `unsigned short' to `int'
  *
@@ -5282,7 +5282,7 @@ H5T_conv_short_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5292,7 +5292,7 @@ H5T_conv_ushort_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_uint
+ * Function:	H5T__conv_ushort_uint
  *
  * Purpose:	Converts `unsigned short' to `unsigned int'
  *
@@ -5308,7 +5308,7 @@ H5T_conv_ushort_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5318,7 +5318,7 @@ H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_long
+ * Function:	H5T__conv_short_long
  *
  * Purpose:	Converts `short' to `long'
  *
@@ -5334,7 +5334,7 @@ H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5344,7 +5344,7 @@ H5T_conv_short_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_ulong
+ * Function:	H5T__conv_short_ulong
  *
  * Purpose:	Converts `short' to `unsigned long'
  *
@@ -5360,7 +5360,7 @@ H5T_conv_short_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5370,7 +5370,7 @@ H5T_conv_short_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_long
+ * Function:	H5T__conv_ushort_long
  *
  * Purpose:	Converts `unsigned short' to `long'
  *
@@ -5386,7 +5386,7 @@ H5T_conv_short_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5396,7 +5396,7 @@ H5T_conv_ushort_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_ulong
+ * Function:	H5T__conv_ushort_ulong
  *
  * Purpose:	Converts `unsigned short' to `unsigned long'
  *
@@ -5412,7 +5412,7 @@ H5T_conv_ushort_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5422,7 +5422,7 @@ H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_llong
+ * Function:	H5T__conv_short_llong
  *
  * Purpose:	Converts `short' to `long long'
  *
@@ -5438,7 +5438,7 @@ H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5448,7 +5448,7 @@ H5T_conv_short_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_ullong
+ * Function:	H5T__conv_short_ullong
  *
  * Purpose:	Converts `short' to `unsigned long long'
  *
@@ -5464,7 +5464,7 @@ H5T_conv_short_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5474,7 +5474,7 @@ H5T_conv_short_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_llong
+ * Function:	H5T__conv_ushort_llong
  *
  * Purpose:	Converts `unsigned short' to `long long'
  *
@@ -5490,7 +5490,7 @@ H5T_conv_short_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -5500,7 +5500,7 @@ H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_ullong
+ * Function:	H5T__conv_ushort_ullong
  *
  * Purpose:	Converts `unsigned short' to `unsigned long long'
  *
@@ -5516,7 +5516,7 @@ H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -5526,7 +5526,7 @@ H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_schar
+ * Function:	H5T__conv_int_schar
  *
  * Purpose:	Converts `int' to `signed char'
  *
@@ -5542,7 +5542,7 @@ H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride,
                    size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		   hid_t UNUSED dxpl_id)
@@ -5552,7 +5552,7 @@ H5T_conv_int_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_uchar
+ * Function:	H5T__conv_int_uchar
  *
  * Purpose:	Converts `int' to `unsigned char'
  *
@@ -5568,7 +5568,7 @@ H5T_conv_int_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride,
                    size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		   hid_t UNUSED dxpl_id)
@@ -5578,7 +5578,7 @@ H5T_conv_int_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_schar
+ * Function:	H5T__conv_uint_schar
  *
  * Purpose:	Converts `unsigned int' to `signed char'
  *
@@ -5594,7 +5594,7 @@ H5T_conv_int_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5604,7 +5604,7 @@ H5T_conv_uint_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_uchar
+ * Function:	H5T__conv_uint_uchar
  *
  * Purpose:	Converts `unsigned int' to `unsigned char'
  *
@@ -5620,7 +5620,7 @@ H5T_conv_uint_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5630,7 +5630,7 @@ H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_short
+ * Function:	H5T__conv_int_short
  *
  * Purpose:	Converts `int' to `short'
  *
@@ -5646,7 +5646,7 @@ H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride,
                    size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		   hid_t UNUSED dxpl_id)
@@ -5656,7 +5656,7 @@ H5T_conv_int_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_ushort
+ * Function:	H5T__conv_int_ushort
  *
  * Purpose:	Converts `int' to `unsigned short'
  *
@@ -5672,7 +5672,7 @@ H5T_conv_int_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5682,7 +5682,7 @@ H5T_conv_int_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_short
+ * Function:	H5T__conv_uint_short
  *
  * Purpose:	Converts `unsigned int' to `short'
  *
@@ -5698,7 +5698,7 @@ H5T_conv_int_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride,
                     size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		    hid_t UNUSED dxpl_id)
@@ -5708,7 +5708,7 @@ H5T_conv_uint_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_ushort
+ * Function:	H5T__conv_uint_ushort
  *
  * Purpose:	Converts `unsigned int' to `unsigned short'
  *
@@ -5724,7 +5724,7 @@ H5T_conv_uint_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5734,7 +5734,7 @@ H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_uint
+ * Function:	H5T__conv_int_uint
  *
  * Purpose:	Converts `int' to `unsigned int'
  *
@@ -5750,7 +5750,7 @@ H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		  size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                   void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5759,7 +5759,7 @@ H5T_conv_int_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_int
+ * Function:	H5T__conv_uint_int
  *
  * Purpose:	Converts `unsigned int' to `int'
  *
@@ -5775,7 +5775,7 @@ H5T_conv_int_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		  size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                   void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5784,7 +5784,7 @@ H5T_conv_uint_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_long
+ * Function:	H5T__conv_int_long
  *
  * Purpose:	Converts `int' to `long'
  *
@@ -5800,7 +5800,7 @@ H5T_conv_uint_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		  size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                   void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5809,7 +5809,7 @@ H5T_conv_int_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_ulong
+ * Function:	H5T__conv_int_ulong
  *
  * Purpose:	Converts `int' to `unsigned long'
  *
@@ -5825,7 +5825,7 @@ H5T_conv_int_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5834,7 +5834,7 @@ H5T_conv_int_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_long
+ * Function:	H5T__conv_uint_long
  *
  * Purpose:	Converts `unsigned int' to `long'
  *
@@ -5850,7 +5850,7 @@ H5T_conv_int_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5859,7 +5859,7 @@ H5T_conv_uint_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_ulong
+ * Function:	H5T__conv_uint_ulong
  *
  * Purpose:	Converts `unsigned int' to `unsigned long'
  *
@@ -5875,7 +5875,7 @@ H5T_conv_uint_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5884,7 +5884,7 @@ H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_llong
+ * Function:	H5T__conv_int_llong
  *
  * Purpose:	Converts `int' to `long long'
  *
@@ -5900,7 +5900,7 @@ H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5909,7 +5909,7 @@ H5T_conv_int_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_ullong
+ * Function:	H5T__conv_int_ullong
  *
  * Purpose:	Converts `int' to `unsigned long long'
  *
@@ -5925,7 +5925,7 @@ H5T_conv_int_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5934,7 +5934,7 @@ H5T_conv_int_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_llong
+ * Function:	H5T__conv_uint_llong
  *
  * Purpose:	Converts `unsigned int' to `long long'
  *
@@ -5950,7 +5950,7 @@ H5T_conv_int_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -5959,7 +5959,7 @@ H5T_conv_uint_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_ullong
+ * Function:	H5T__conv_uint_ullong
  *
  * Purpose:	Converts `unsigned int' to `unsigned long long'
  *
@@ -5975,7 +5975,7 @@ H5T_conv_uint_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -5985,7 +5985,7 @@ H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_schar
+ * Function:	H5T__conv_long_schar
  *
  * Purpose:	Converts `long' to `signed char'
  *
@@ -6001,7 +6001,7 @@ H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6010,7 +6010,7 @@ H5T_conv_long_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_uchar
+ * Function:	H5T__conv_long_uchar
  *
  * Purpose:	Converts `long' to `unsigned char'
  *
@@ -6026,7 +6026,7 @@ H5T_conv_long_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6035,7 +6035,7 @@ H5T_conv_long_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_schar
+ * Function:	H5T__conv_ulong_schar
  *
  * Purpose:	Converts `unsigned long' to `signed char'
  *
@@ -6051,7 +6051,7 @@ H5T_conv_long_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6061,7 +6061,7 @@ H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_uchar
+ * Function:	H5T__conv_ulong_uchar
  *
  * Purpose:	Converts `unsigned long' to `unsigned char'
  *
@@ -6077,7 +6077,7 @@ H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6087,7 +6087,7 @@ H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_short
+ * Function:	H5T__conv_long_short
  *
  * Purpose:	Converts `long' to `short'
  *
@@ -6103,7 +6103,7 @@ H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6112,7 +6112,7 @@ H5T_conv_long_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_ushort
+ * Function:	H5T__conv_long_ushort
  *
  * Purpose:	Converts `long' to `unsigned short'
  *
@@ -6128,7 +6128,7 @@ H5T_conv_long_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6138,7 +6138,7 @@ H5T_conv_long_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_short
+ * Function:	H5T__conv_ulong_short
  *
  * Purpose:	Converts `unsigned long' to `short'
  *
@@ -6154,7 +6154,7 @@ H5T_conv_long_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                      void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6163,7 +6163,7 @@ H5T_conv_ulong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_ushort
+ * Function:	H5T__conv_ulong_ushort
  *
  * Purpose:	Converts `unsigned long' to `unsigned short'
  *
@@ -6179,7 +6179,7 @@ H5T_conv_ulong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6189,7 +6189,7 @@ H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_int
+ * Function:	H5T__conv_long_int
  *
  * Purpose:	Converts `long' to `int'
  *
@@ -6205,7 +6205,7 @@ H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		  size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                   void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6214,7 +6214,7 @@ H5T_conv_long_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_uint
+ * Function:	H5T__conv_long_uint
  *
  * Purpose:	Converts `long' to `unsigned int'
  *
@@ -6230,7 +6230,7 @@ H5T_conv_long_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6239,7 +6239,7 @@ H5T_conv_long_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_int
+ * Function:	H5T__conv_ulong_int
  *
  * Purpose:	Converts `unsigned long' to `int'
  *
@@ -6255,7 +6255,7 @@ H5T_conv_long_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6264,7 +6264,7 @@ H5T_conv_ulong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_uint
+ * Function:	H5T__conv_ulong_uint
  *
  * Purpose:	Converts `unsigned long' to `unsigned int'
  *
@@ -6280,7 +6280,7 @@ H5T_conv_ulong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6289,7 +6289,7 @@ H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_ulong
+ * Function:	H5T__conv_long_ulong
  *
  * Purpose:	Converts `long' to `unsigned long'
  *
@@ -6305,7 +6305,7 @@ H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6314,7 +6314,7 @@ H5T_conv_long_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_long
+ * Function:	H5T__conv_ulong_long
  *
  * Purpose:	Converts `unsigned long' to `long'
  *
@@ -6330,7 +6330,7 @@ H5T_conv_long_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6339,7 +6339,7 @@ H5T_conv_ulong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_llong
+ * Function:	H5T__conv_long_llong
  *
  * Purpose:	Converts `long' to `long long'
  *
@@ -6355,7 +6355,7 @@ H5T_conv_ulong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6364,7 +6364,7 @@ H5T_conv_long_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_ullong
+ * Function:	H5T__conv_long_ullong
  *
  * Purpose:	Converts `long' to `unsigned long long'
  *
@@ -6380,7 +6380,7 @@ H5T_conv_long_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6390,7 +6390,7 @@ H5T_conv_long_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_llong
+ * Function:	H5T__conv_ulong_llong
  *
  * Purpose:	Converts `unsigned long' to `long long'
  *
@@ -6406,7 +6406,7 @@ H5T_conv_long_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6416,7 +6416,7 @@ H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_ullong
+ * Function:	H5T__conv_ulong_ullong
  *
  * Purpose:	Converts `unsigned long' to `unsigned long long'
  *
@@ -6432,7 +6432,7 @@ H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6442,7 +6442,7 @@ H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_schar
+ * Function:	H5T__conv_llong_schar
  *
  * Purpose:	Converts `long long' to `signed char'
  *
@@ -6458,7 +6458,7 @@ H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6468,7 +6468,7 @@ H5T_conv_llong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_uchar
+ * Function:	H5T__conv_llong_uchar
  *
  * Purpose:	Converts `long long' to `unsigned char'
  *
@@ -6484,7 +6484,7 @@ H5T_conv_llong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6494,7 +6494,7 @@ H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_schar
+ * Function:	H5T__conv_ullong_schar
  *
  * Purpose:	Converts `unsigned long long' to `signed char'
  *
@@ -6510,7 +6510,7 @@ H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6520,7 +6520,7 @@ H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_uchar
+ * Function:	H5T__conv_ullong_uchar
  *
  * Purpose:	Converts `unsigned long long' to `unsigned char'
  *
@@ -6536,7 +6536,7 @@ H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                       size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6546,7 +6546,7 @@ H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_short
+ * Function:	H5T__conv_llong_short
  *
  * Purpose:	Converts `long long' to `short'
  *
@@ -6562,7 +6562,7 @@ H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6572,7 +6572,7 @@ H5T_conv_llong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_ushort
+ * Function:	H5T__conv_llong_ushort
  *
  * Purpose:	Converts `long long' to `unsigned short'
  *
@@ -6588,7 +6588,7 @@ H5T_conv_llong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6598,7 +6598,7 @@ H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_short
+ * Function:	H5T__conv_ullong_short
  *
  * Purpose:	Converts `unsigned long long' to `short'
  *
@@ -6614,7 +6614,7 @@ H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6624,7 +6624,7 @@ H5T_conv_ullong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_ushort
+ * Function:	H5T__conv_ullong_ushort
  *
  * Purpose:	Converts `unsigned long long' to `unsigned short'
  *
@@ -6640,7 +6640,7 @@ H5T_conv_ullong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -6650,7 +6650,7 @@ H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_int
+ * Function:	H5T__conv_llong_int
  *
  * Purpose:	Converts `long long' to `int'
  *
@@ -6666,7 +6666,7 @@ H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		   size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                    void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6675,7 +6675,7 @@ H5T_conv_llong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_uint
+ * Function:	H5T__conv_llong_uint
  *
  * Purpose:	Converts `long long' to `unsigned int'
  *
@@ -6691,7 +6691,7 @@ H5T_conv_llong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6700,7 +6700,7 @@ H5T_conv_llong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_int
+ * Function:	H5T__conv_ullong_int
  *
  * Purpose:	Converts `unsigned long long' to `int'
  *
@@ -6716,7 +6716,7 @@ H5T_conv_llong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6725,7 +6725,7 @@ H5T_conv_ullong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_uint
+ * Function:	H5T__conv_ullong_uint
  *
  * Purpose:	Converts `unsigned long long' to `unsigned int'
  *
@@ -6741,7 +6741,7 @@ H5T_conv_ullong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6751,7 +6751,7 @@ H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_long
+ * Function:	H5T__conv_llong_long
  *
  * Purpose:	Converts `long long' to `long'
  *
@@ -6767,7 +6767,7 @@ H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		    size_t nelmts, size_t buf_stride, size_t UNUSED bkg_stride,
                     void *buf, void UNUSED *bkg, hid_t UNUSED dxpl_id)
 {
@@ -6776,7 +6776,7 @@ H5T_conv_llong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_ulong
+ * Function:	H5T__conv_llong_ulong
  *
  * Purpose:	Converts `long long' to `unsigned long'
  *
@@ -6792,7 +6792,7 @@ H5T_conv_llong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6802,7 +6802,7 @@ H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_long
+ * Function:	H5T__conv_ullong_long
  *
  * Purpose:	Converts `unsigned long long' to `long'
  *
@@ -6818,7 +6818,7 @@ H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		     size_t nelmts, size_t buf_stride,
                      size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
 		     hid_t UNUSED dxpl_id)
@@ -6828,7 +6828,7 @@ H5T_conv_ullong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_ulong
+ * Function:	H5T__conv_ullong_ulong
  *
  * Purpose:	Converts `unsigned long long' to `unsigned long'
  *
@@ -6844,7 +6844,7 @@ H5T_conv_ullong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6854,7 +6854,7 @@ H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_ullong
+ * Function:	H5T__conv_llong_ullong
  *
  * Purpose:	Converts `long long' to `unsigned long long'
  *
@@ -6870,7 +6870,7 @@ H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6880,7 +6880,7 @@ H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_llong
+ * Function:	H5T__conv_ullong_llong
  *
  * Purpose:	Converts `unsigned long long' to `long long'
  *
@@ -6896,7 +6896,7 @@ H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		      size_t nelmts, size_t buf_stride,
                       size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                       hid_t UNUSED dxpl_id)
@@ -6906,7 +6906,7 @@ H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_double
+ * Function:	H5T__conv_float_double
  *
  * Purpose:	Convert native `float' to native `double' using hardware.
  *		This is a fast special case.
@@ -6926,7 +6926,7 @@ H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_FP
 herr_t
-H5T_conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -6937,7 +6937,7 @@ H5T_conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_ldouble
+ * Function:	H5T__conv_float_ldouble
  *
  * Purpose:	Convert native `float' to native `long double' using hardware.
  *		This is a fast special case.
@@ -6953,7 +6953,7 @@ H5T_conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_LDOUBLE
 herr_t
-H5T_conv_float_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -6964,7 +6964,7 @@ H5T_conv_float_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_float
+ * Function:	H5T__conv_double_float
  *
  * Purpose:	Convert native `double' to native `float' using hardware.
  *		This is a fast special case.
@@ -6987,7 +6987,7 @@ H5T_conv_float_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_FP
 herr_t
-H5T_conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -6998,7 +6998,7 @@ H5T_conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_ldouble
+ * Function:	H5T__conv_double_ldouble
  *
  * Purpose:	Convert native `double' to native `long double' using hardware.
  *		This is a fast special case.
@@ -7014,7 +7014,7 @@ H5T_conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_LDOUBLE
 herr_t
-H5T_conv_double_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7025,7 +7025,7 @@ H5T_conv_double_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_float
+ * Function:	H5T__conv_ldouble_float
  *
  * Purpose:	Convert native `long double' to native `float' using hardware.
  *		This is a fast special case.
@@ -7041,7 +7041,7 @@ H5T_conv_double_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_LDOUBLE
 herr_t
-H5T_conv_ldouble_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7052,7 +7052,7 @@ H5T_conv_ldouble_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_double
+ * Function:	H5T__conv_ldouble_double
  *
  * Purpose:	Convert native `long double' to native `double' using hardware.
  *		This is a fast special case.
@@ -7068,7 +7068,7 @@ H5T_conv_ldouble_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_LDOUBLE
 herr_t
-H5T_conv_ldouble_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7079,7 +7079,7 @@ H5T_conv_ldouble_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_float
+ * Function:	H5T__conv_schar_float
  *
  * Purpose:	Convert native signed char to native float using hardware.
  *		This is a fast special case.
@@ -7094,7 +7094,7 @@ H5T_conv_ldouble_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7104,7 +7104,7 @@ H5T_conv_schar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_double
+ * Function:	H5T__conv_schar_double
  *
  * Purpose:	Convert native signed char to native double using hardware.
  *		This is a fast special case.
@@ -7119,7 +7119,7 @@ H5T_conv_schar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_schar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7129,7 +7129,7 @@ H5T_conv_schar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_schar_ldouble
+ * Function:	H5T__conv_schar_ldouble
  *
  * Purpose:	Convert native signed char to native long double using
  *              hardware.  This is a fast special case.
@@ -7145,7 +7145,7 @@ H5T_conv_schar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_schar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_schar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7156,7 +7156,7 @@ H5T_conv_schar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_float
+ * Function:	H5T__conv_uchar_float
  *
  * Purpose:	Convert native unsigned char to native float using hardware.
  *		This is a fast special case.
@@ -7171,7 +7171,7 @@ H5T_conv_schar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7181,7 +7181,7 @@ H5T_conv_uchar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_double
+ * Function:	H5T__conv_uchar_double
  *
  * Purpose:	Convert native unsigned char to native double using hardware.
  *		This is a fast special case.
@@ -7196,7 +7196,7 @@ H5T_conv_uchar_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uchar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7206,7 +7206,7 @@ H5T_conv_uchar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uchar_ldouble
+ * Function:	H5T__conv_uchar_ldouble
  *
  * Purpose:	Convert native unsigned char to native long double using
  *              hardware.  This is a fast special case.
@@ -7222,7 +7222,7 @@ H5T_conv_uchar_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_uchar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uchar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7233,7 +7233,7 @@ H5T_conv_uchar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_float
+ * Function:	H5T__conv_short_float
  *
  * Purpose:	Convert native short to native float using hardware.
  *		This is a fast special case.
@@ -7248,7 +7248,7 @@ H5T_conv_uchar_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7258,7 +7258,7 @@ H5T_conv_short_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_double
+ * Function:	H5T__conv_short_double
  *
  * Purpose:	Convert native short to native double using hardware.
  *		This is a fast special case.
@@ -7273,7 +7273,7 @@ H5T_conv_short_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_short_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7283,7 +7283,7 @@ H5T_conv_short_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_short_ldouble
+ * Function:	H5T__conv_short_ldouble
  *
  * Purpose:	Convert native short to native long double using hardware.
  *		This is a fast special case.
@@ -7299,7 +7299,7 @@ H5T_conv_short_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_short_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_short_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7310,7 +7310,7 @@ H5T_conv_short_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_float
+ * Function:	H5T__conv_ushort_float
  *
  * Purpose:	Convert native unsigned short to native float using hardware.
  *		This is a fast special case.
@@ -7325,7 +7325,7 @@ H5T_conv_short_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7335,7 +7335,7 @@ H5T_conv_ushort_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_double
+ * Function:	H5T__conv_ushort_double
  *
  * Purpose:	Convert native unsigned short to native double using hardware.
  *		This is a fast special case.
@@ -7350,7 +7350,7 @@ H5T_conv_ushort_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_ushort_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7360,7 +7360,7 @@ H5T_conv_ushort_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ushort_ldouble
+ * Function:	H5T__conv_ushort_ldouble
  *
  * Purpose:	Convert native unsigned short to native long double using
  *              hardware.  This is a fast special case.
@@ -7376,7 +7376,7 @@ H5T_conv_ushort_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_ushort_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ushort_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7387,7 +7387,7 @@ H5T_conv_ushort_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_float
+ * Function:	H5T__conv_int_float
  *
  * Purpose:	Convert native integer to native float using hardware.
  *		This is a fast special case.
@@ -7402,7 +7402,7 @@ H5T_conv_ushort_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7412,7 +7412,7 @@ H5T_conv_int_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_double
+ * Function:	H5T__conv_int_double
  *
  * Purpose:	Convert native integer to native double using hardware.
  *		This is a fast special case.
@@ -7427,7 +7427,7 @@ H5T_conv_int_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_int_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7437,7 +7437,7 @@ H5T_conv_int_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_int_ldouble
+ * Function:	H5T__conv_int_ldouble
  *
  * Purpose:	Convert native integer to native long double using hardware.
  *		This is a fast special case.
@@ -7453,7 +7453,7 @@ H5T_conv_int_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_int_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_int_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7464,7 +7464,7 @@ H5T_conv_int_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_float
+ * Function:	H5T__conv_uint_float
  *
  * Purpose:	Convert native unsigned integer to native float using
  *              hardware.  This is a fast special case.
@@ -7479,7 +7479,7 @@ H5T_conv_int_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7489,7 +7489,7 @@ H5T_conv_uint_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_double
+ * Function:	H5T__conv_uint_double
  *
  * Purpose:	Convert native unsigned integer to native double using
  *              hardware.  This is a fast special case.
@@ -7504,7 +7504,7 @@ H5T_conv_uint_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_uint_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7514,7 +7514,7 @@ H5T_conv_uint_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_uint_ldouble
+ * Function:	H5T__conv_uint_ldouble
  *
  * Purpose:	Convert native unsigned integer to native long double using
  *              hardware.  This is a fast special case.
@@ -7530,7 +7530,7 @@ H5T_conv_uint_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_uint_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_uint_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7541,7 +7541,7 @@ H5T_conv_uint_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_float
+ * Function:	H5T__conv_long_float
  *
  * Purpose:	Convert native long to native float using hardware.
  *		This is a fast special case.
@@ -7556,7 +7556,7 @@ H5T_conv_uint_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7566,7 +7566,7 @@ H5T_conv_long_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_double
+ * Function:	H5T__conv_long_double
  *
  * Purpose:	Convert native long to native double using hardware.
  *		This is a fast special case.
@@ -7581,7 +7581,7 @@ H5T_conv_long_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_long_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7591,7 +7591,7 @@ H5T_conv_long_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_long_ldouble
+ * Function:	H5T__conv_long_ldouble
  *
  * Purpose:	Convert native long to native long double using hardware.
  *		This is a fast special case.
@@ -7607,7 +7607,7 @@ H5T_conv_long_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_INTEGER_LDOUBLE
 herr_t
-H5T_conv_long_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_long_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7618,7 +7618,7 @@ H5T_conv_long_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_float
+ * Function:	H5T__conv_ulong_float
  *
  * Purpose:	Convert native unsigned long to native float using hardware.
  *		This is a fast special case.
@@ -7634,7 +7634,7 @@ H5T_conv_long_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_ULONG_FLT
 herr_t
-H5T_conv_ulong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7645,7 +7645,7 @@ H5T_conv_ulong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_double
+ * Function:	H5T__conv_ulong_double
  *
  * Purpose:	Convert native unsigned long to native double using hardware.
  *		This is a fast special case.
@@ -7661,7 +7661,7 @@ H5T_conv_ulong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_ULONG_DBL
 herr_t
-H5T_conv_ulong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7672,7 +7672,7 @@ H5T_conv_ulong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ulong_ldouble
+ * Function:	H5T__conv_ulong_ldouble
  *
  * Purpose:	Convert native unsigned long to native long double using
  *              hardware.  This is a fast special case.
@@ -7688,7 +7688,7 @@ H5T_conv_ulong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_ULONG_LDOUBLE
 herr_t
-H5T_conv_ulong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ulong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7699,7 +7699,7 @@ H5T_conv_ulong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_float
+ * Function:	H5T__conv_llong_float
  *
  * Purpose:	Convert native long long to native float using hardware.
  *		This is a fast special case.
@@ -7714,7 +7714,7 @@ H5T_conv_ulong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7724,7 +7724,7 @@ H5T_conv_llong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_double
+ * Function:	H5T__conv_llong_double
  *
  * Purpose:	Convert native long long to native double using hardware.
  *		This is a fast special case.
@@ -7739,7 +7739,7 @@ H5T_conv_llong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_llong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7749,7 +7749,7 @@ H5T_conv_llong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_llong_ldouble
+ * Function:	H5T__conv_llong_ldouble
  *
  * Purpose:	Convert native long long to native long double using
  *              hardware.  This is a fast special case.
@@ -7765,7 +7765,7 @@ H5T_conv_llong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LLONG_LDOUBLE
 herr_t
-H5T_conv_llong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_llong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7776,7 +7776,7 @@ H5T_conv_llong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_float
+ * Function:	H5T__conv_ullong_float
  *
  * Purpose:	Convert native unsigned long long to native float using
  *              hardware.  This is a fast special case.
@@ -7792,7 +7792,7 @@ H5T_conv_llong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_ULLONG_FP
 herr_t
-H5T_conv_ullong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7803,7 +7803,7 @@ H5T_conv_ullong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_double
+ * Function:	H5T__conv_ullong_double
  *
  * Purpose:	Convert native unsigned long long to native double using
  *              hardware.  This is a fast special case.
@@ -7819,7 +7819,7 @@ H5T_conv_ullong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_ULLONG_FP
 herr_t
-H5T_conv_ullong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7830,7 +7830,7 @@ H5T_conv_ullong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ullong_ldouble
+ * Function:	H5T__conv_ullong_ldouble
  *
  * Purpose:	Convert native unsigned long long to native long double using
  *              hardware.  This is a fast special case.
@@ -7846,7 +7846,7 @@ H5T_conv_ullong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_ULLONG_LDOUBLE
 herr_t
-H5T_conv_ullong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ullong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7857,7 +7857,7 @@ H5T_conv_ullong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_schar
+ * Function:	H5T__conv_float_schar
  *
  * Purpose:	Convert native float to native signed char using
  *              hardware.  This is a fast special case.
@@ -7872,7 +7872,7 @@ H5T_conv_ullong_ldouble (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7882,7 +7882,7 @@ H5T_conv_float_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_uchar
+ * Function:	H5T__conv_float_uchar
  *
  * Purpose:	Convert native float to native unsigned char using
  *              hardware.  This is a fast special case.
@@ -7897,7 +7897,7 @@ H5T_conv_float_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7907,7 +7907,7 @@ H5T_conv_float_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_schar
+ * Function:	H5T__conv_double_schar
  *
  * Purpose:	Convert native double to native signed char using
  *              hardware.  This is a fast special case.
@@ -7922,7 +7922,7 @@ H5T_conv_float_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7932,7 +7932,7 @@ H5T_conv_double_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_uchar
+ * Function:	H5T__conv_double_uchar
  *
  * Purpose:	Convert native double to native unsigned char using
  *              hardware.  This is a fast special case.
@@ -7947,7 +7947,7 @@ H5T_conv_double_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7957,7 +7957,7 @@ H5T_conv_double_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_schar
+ * Function:	H5T__conv_ldouble_schar
  *
  * Purpose:	Convert native long double to native signed char using
  *              hardware.  This is a fast special case.
@@ -7973,7 +7973,7 @@ H5T_conv_double_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -7984,7 +7984,7 @@ H5T_conv_ldouble_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_uchar
+ * Function:	H5T__conv_ldouble_uchar
  *
  * Purpose:	Convert native long double to native unsigned char using
  *              hardware.  This is a fast special case.
@@ -8000,7 +8000,7 @@ H5T_conv_ldouble_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8011,7 +8011,7 @@ H5T_conv_ldouble_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_short
+ * Function:	H5T__conv_float_short
  *
  * Purpose:	Convert native float to native short using
  *              hardware.  This is a fast special case.
@@ -8026,7 +8026,7 @@ H5T_conv_ldouble_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8036,7 +8036,7 @@ H5T_conv_float_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_ushort
+ * Function:	H5T__conv_float_ushort
  *
  * Purpose:	Convert native float to native unsigned short using
  *              hardware.  This is a fast special case.
@@ -8051,7 +8051,7 @@ H5T_conv_float_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8061,7 +8061,7 @@ H5T_conv_float_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_short
+ * Function:	H5T__conv_double_short
  *
  * Purpose:	Convert native double to native short using
  *              hardware.  This is a fast special case.
@@ -8076,7 +8076,7 @@ H5T_conv_float_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8086,7 +8086,7 @@ H5T_conv_double_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_ushort
+ * Function:	H5T__conv_double_ushort
  *
  * Purpose:	Convert native double to native unsigned short using
  *              hardware.  This is a fast special case.
@@ -8101,7 +8101,7 @@ H5T_conv_double_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8111,7 +8111,7 @@ H5T_conv_double_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_short
+ * Function:	H5T__conv_ldouble_short
  *
  * Purpose:	Convert native long double to native short using
  *              hardware.  This is a fast special case.
@@ -8127,7 +8127,7 @@ H5T_conv_double_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8138,7 +8138,7 @@ H5T_conv_ldouble_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_ushort
+ * Function:	H5T__conv_ldouble_ushort
  *
  * Purpose:	Convert native long double to native unsigned short using
  *              hardware.  This is a fast special case.
@@ -8154,7 +8154,7 @@ H5T_conv_ldouble_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8165,7 +8165,7 @@ H5T_conv_ldouble_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_int
+ * Function:	H5T__conv_float_int
  *
  * Purpose:	Convert native float to native int using
  *              hardware.  This is a fast special case.
@@ -8180,7 +8180,7 @@ H5T_conv_ldouble_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8190,7 +8190,7 @@ H5T_conv_float_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_uint
+ * Function:	H5T__conv_float_uint
  *
  * Purpose:	Convert native float to native unsigned int using
  *              hardware.  This is a fast special case.
@@ -8205,7 +8205,7 @@ H5T_conv_float_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8215,7 +8215,7 @@ H5T_conv_float_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_int
+ * Function:	H5T__conv_double_int
  *
  * Purpose:	Convert native double to native int using
  *              hardware.  This is a fast special case.
@@ -8230,7 +8230,7 @@ H5T_conv_float_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8240,7 +8240,7 @@ H5T_conv_double_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_uint
+ * Function:	H5T__conv_double_uint
  *
  * Purpose:	Convert native double to native unsigned int using
  *              hardware.  This is a fast special case.
@@ -8255,7 +8255,7 @@ H5T_conv_double_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8265,7 +8265,7 @@ H5T_conv_double_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_int
+ * Function:	H5T__conv_ldouble_int
  *
  * Purpose:	Convert native long double to native int using
  *              hardware.  This is a fast special case.
@@ -8281,7 +8281,7 @@ H5T_conv_double_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8292,7 +8292,7 @@ H5T_conv_ldouble_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_uint
+ * Function:	H5T__conv_ldouble_uint
  *
  * Purpose:	Convert native long double to native unsigned int using
  *              hardware.  This is a fast special case.
@@ -8308,7 +8308,7 @@ H5T_conv_ldouble_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_UINT
 herr_t
-H5T_conv_ldouble_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8319,7 +8319,7 @@ H5T_conv_ldouble_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_long
+ * Function:	H5T__conv_float_long
  *
  * Purpose:	Convert native float to native long using
  *              hardware.  This is a fast special case.
@@ -8334,7 +8334,7 @@ H5T_conv_ldouble_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8344,7 +8344,7 @@ H5T_conv_float_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_ulong
+ * Function:	H5T__conv_float_ulong
  *
  * Purpose:	Convert native float to native unsigned long using
  *              hardware.  This is a fast special case.
@@ -8359,7 +8359,7 @@ H5T_conv_float_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_float_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8369,7 +8369,7 @@ H5T_conv_float_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_long
+ * Function:	H5T__conv_double_long
  *
  * Purpose:	Convert native double to native long using
  *              hardware.  This is a fast special case.
@@ -8384,7 +8384,7 @@ H5T_conv_float_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8394,7 +8394,7 @@ H5T_conv_double_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_ulong
+ * Function:	H5T__conv_double_ulong
  *
  * Purpose:	Convert native double to native unsigned long using
  *              hardware.  This is a fast special case.
@@ -8409,7 +8409,7 @@ H5T_conv_double_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_double_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8419,7 +8419,7 @@ H5T_conv_double_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_long
+ * Function:	H5T__conv_ldouble_long
  *
  * Purpose:	Convert native long double to native long using
  *              hardware.  This is a fast special case.
@@ -8435,7 +8435,7 @@ H5T_conv_double_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8446,7 +8446,7 @@ H5T_conv_ldouble_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_ulong
+ * Function:	H5T__conv_ldouble_ulong
  *
  * Purpose:	Convert native long double to native unsigned long using
  *              hardware.  This is a fast special case.
@@ -8462,7 +8462,7 @@ H5T_conv_ldouble_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_INTEGER
 herr_t
-H5T_conv_ldouble_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8473,7 +8473,7 @@ H5T_conv_ldouble_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_llong
+ * Function:	H5T__conv_float_llong
  *
  * Purpose:	Convert native float to native long long using
  *              hardware.  This is a fast special case.
@@ -8489,7 +8489,7 @@ H5T_conv_ldouble_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_LLONG
 herr_t
-H5T_conv_float_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8500,7 +8500,7 @@ H5T_conv_float_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_float_ullong
+ * Function:	H5T__conv_float_ullong
  *
  * Purpose:	Convert native float to native unsigned long long using
  *              hardware.  This is a fast special case.
@@ -8516,7 +8516,7 @@ H5T_conv_float_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_ULLONG
 herr_t
-H5T_conv_float_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_float_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8527,7 +8527,7 @@ H5T_conv_float_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_llong
+ * Function:	H5T__conv_double_llong
  *
  * Purpose:	Convert native double to native long long using
  *              hardware.  This is a fast special case.
@@ -8543,7 +8543,7 @@ H5T_conv_float_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_LLONG
 herr_t
-H5T_conv_double_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8554,7 +8554,7 @@ H5T_conv_double_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_double_ullong
+ * Function:	H5T__conv_double_ullong
  *
  * Purpose:	Convert native double to native unsigned long long using
  *              hardware.  This is a fast special case.
@@ -8570,7 +8570,7 @@ H5T_conv_double_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_FP_ULLONG
 herr_t
-H5T_conv_double_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_double_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t dxpl_id)
@@ -8581,7 +8581,7 @@ H5T_conv_double_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_llong
+ * Function:	H5T__conv_ldouble_llong
  *
  * Purpose:	Convert native long double to native long long using
  *              hardware.  This is a fast special case.
@@ -8597,7 +8597,7 @@ H5T_conv_double_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_LLONG
 herr_t
-H5T_conv_ldouble_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
@@ -8608,7 +8608,7 @@ H5T_conv_ldouble_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_ldouble_ullong
+ * Function:	H5T__conv_ldouble_ullong
  *
  * Purpose:	Convert native long double to native unsigned long long using
  *              hardware.  This is a fast special case.
@@ -8624,7 +8624,7 @@ H5T_conv_ldouble_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  */
 #if H5T_CONV_INTERNAL_LDOUBLE_ULLONG
 herr_t
-H5T_conv_ldouble_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5T__conv_ldouble_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 		       size_t nelmts, size_t buf_stride,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t dxpl_id)
@@ -8635,7 +8635,7 @@ H5T_conv_ldouble_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_f_i
+ * Function:	H5T__conv_f_i
  *
  * Purpose:	Convert one floating-point type to an integer.  This is
  *              the catch-all function for float-integer conversions and
@@ -8659,7 +8659,7 @@ H5T_conv_ldouble_ullong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t buf_stride, size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
     hid_t dxpl_id)
 {
@@ -8693,7 +8693,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     H5T_conv_ret_t      except_ret;     /*return of callback function   */
     herr_t      ret_value=SUCCEED;      /* Return value                 */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -8818,24 +8818,24 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 }
 
                 /*zero-set all destination bits*/
-                H5T_bit_set (d, dst.offset, dst.prec, FALSE);
+                H5T__bit_set (d, dst.offset, dst.prec, FALSE);
 
                 /*
                  * Find the sign bit value of the source.
                  */
-                sign = H5T_bit_get_d(s, src.u.f.sign, (size_t)1);
+                sign = H5T__bit_get_d(s, src.u.f.sign, (size_t)1);
 
                 /*
                  * Check for special cases: +0, -0, +Inf, -Inf, NaN
                  */
-                if (H5T_bit_find (s, src.u.f.mpos, src.u.f.msize,
+                if (H5T__bit_find (s, src.u.f.mpos, src.u.f.msize,
                                   H5T_BIT_LSB, TRUE)<0) {
-                    if (H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                    if (H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                       H5T_BIT_LSB, TRUE)<0) {
                         /* +0 or -0 */
                         /* Set all bits to zero */
                         goto padding;
-                    } else if (H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                    } else if (H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                              H5T_BIT_LSB, FALSE)<0) {
                         /* +Infinity or -Infinity */
                         if(sign) { /* -Infinity */
@@ -8848,7 +8848,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                             if(except_ret == H5T_CONV_UNHANDLED) {
                                 if (H5T_SGN_2==dst.u.i.sign)
-                                    H5T_bit_set (d, dst.prec-1, (size_t)1, TRUE);
+                                    H5T__bit_set (d, dst.prec-1, (size_t)1, TRUE);
                             } else if(except_ret == H5T_CONV_HANDLED) {
                                 /*No need to reverse the order of destination because user handles it*/
                                 reverse = FALSE;
@@ -8865,9 +8865,9 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                             if(except_ret == H5T_CONV_UNHANDLED) {
                                 if (H5T_SGN_NONE==dst.u.i.sign)
-                                    H5T_bit_set (d, dst.offset, dst.prec, TRUE);
+                                    H5T__bit_set (d, dst.offset, dst.prec, TRUE);
                                 else if (H5T_SGN_2==dst.u.i.sign)
-                                    H5T_bit_set (d, dst.offset, dst.prec-1, TRUE);
+                                    H5T__bit_set (d, dst.offset, dst.prec-1, TRUE);
                             } else if(except_ret == H5T_CONV_HANDLED) {
                                 /*No need to reverse the order of destination because user handles it*/
                                 reverse = FALSE;
@@ -8877,8 +8877,8 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                         }
                         goto padding;
                     }
-                } else if (H5T_NORM_NONE==src.u.f.norm && H5T_bit_find (s, src.u.f.mpos, src.u.f.msize-1,
-                                  H5T_BIT_LSB, TRUE)<0 && H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                } else if (H5T_NORM_NONE==src.u.f.norm && H5T__bit_find (s, src.u.f.mpos, src.u.f.msize-1,
+                                  H5T_BIT_LSB, TRUE)<0 && H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                   H5T_BIT_LSB, FALSE)<0) {
                     /*This is a special case for the source of no implied mantissa bit.
                      *If the exponent bits are all 1s and only the 1st bit of mantissa
@@ -8894,7 +8894,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
                             if (H5T_SGN_2==dst.u.i.sign)
-                                H5T_bit_set (d, dst.prec-1, (size_t)1, TRUE);
+                                H5T__bit_set (d, dst.prec-1, (size_t)1, TRUE);
                         } else if(except_ret == H5T_CONV_HANDLED) {
                             /*No need to reverse the order of destination because user handles it*/
                             reverse = FALSE;
@@ -8911,9 +8911,9 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                         if(except_ret == H5T_CONV_UNHANDLED) {
                             if (H5T_SGN_NONE==dst.u.i.sign)
-                                H5T_bit_set (d, dst.offset, dst.prec, TRUE);
+                                H5T__bit_set (d, dst.offset, dst.prec, TRUE);
                             else if (H5T_SGN_2==dst.u.i.sign)
-                                H5T_bit_set (d, dst.offset, dst.prec-1, TRUE);
+                                H5T__bit_set (d, dst.offset, dst.prec-1, TRUE);
                         } else if(except_ret == H5T_CONV_HANDLED) {
                             /*No need to reverse the order of destination because user handles it*/
                             reverse = FALSE;
@@ -8922,7 +8922,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                             HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                     }
                     goto padding;
-                } else if (H5T_bit_find (s, src.u.f.epos, src.u.f.esize,
+                } else if (H5T__bit_find (s, src.u.f.epos, src.u.f.esize,
                                          H5T_BIT_LSB, FALSE)<0) {
                     /* NaN */
                     if(cb_struct.func) { /*If user's exception handler is present, use it*/
@@ -8950,7 +8950,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * the source bit field where it's located.   Not expecting
                  * exponent to be greater than the maximal value of hssize_t.
                  */
-                expo = H5T_bit_get_d(s, src.u.f.epos, src.u.f.esize);
+                expo = H5T__bit_get_d(s, src.u.f.epos, src.u.f.esize);
 
                 /*
                  * Calculate the true source exponent by adjusting according to
@@ -8975,14 +8975,14 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  *      V       V       V       V
                  *    buf[0]  buf[1]  buf[2]  buf[3]
                  */
-                H5T_bit_copy(int_buf, (size_t)0, s, src.u.f.mpos, src.u.f.msize);
+                H5T__bit_copy(int_buf, (size_t)0, s, src.u.f.mpos, src.u.f.msize);
 
                 /*
                  * Restore the implicit bit for mantissa if it's implied.
                  * Equivalent to mantissa |= (hsize_t)1<<src.u.f.msize.
                  */
                 if(H5T_NORM_IMPLIED == src.u.f.norm)
-                    H5T_bit_inc(int_buf, src.u.f.msize, 8 * buf_size - src.u.f.msize);
+                    H5T__bit_inc(int_buf, src.u.f.msize, 8 * buf_size - src.u.f.msize);
 
                 /*
                  * Shift mantissa part by exponent minus mantissa size(right shift),
@@ -8990,7 +8990,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * 10...010111, expo=20, expo-msize=-3.  Right-shift the sequence, we get
                  * 00010...10.  The last three bits were dropped.
                  */
-                H5T_bit_shift(int_buf, (ssize_t)(expo-src.u.f.msize), (size_t)0, buf_size * 8);
+                H5T__bit_shift(int_buf, (ssize_t)(expo-src.u.f.msize), (size_t)0, buf_size * 8);
 
                 /*
                  * If expo is less than mantissa size, the frantional value is dropped off
@@ -9004,7 +9004,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  * which is set?  This is checked before converted to negative
                  * integer.
                  */
-                sfirst = H5T_bit_find(int_buf, (size_t)0, 8 * buf_size, H5T_BIT_MSB, TRUE);
+                sfirst = H5T__bit_find(int_buf, (size_t)0, 8 * buf_size, H5T_BIT_MSB, TRUE);
                 first = (size_t)sfirst;
 
                 if(sfirst < 0) {
@@ -9046,7 +9046,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                             }
 
                             if(except_ret == H5T_CONV_UNHANDLED)
-                                H5T_bit_set (d, dst.offset, dst.prec, TRUE);
+                                H5T__bit_set (d, dst.offset, dst.prec, TRUE);
                             else if(except_ret == H5T_CONV_HANDLED) {
                                 /*No need to reverse the order of destination because user handles it*/
                                 reverse = FALSE;
@@ -9063,7 +9063,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                             if(except_ret == H5T_CONV_UNHANDLED)
                                 /*copy source value into it if case is ignored by user handler*/
-                                H5T_bit_copy (d, dst.offset, int_buf, (size_t)0, first+1);
+                                H5T__bit_copy (d, dst.offset, int_buf, (size_t)0, first+1);
                             else if(except_ret == H5T_CONV_HANDLED) {
                                 /*No need to reverse the order of destination because user handles it*/
                                 reverse = FALSE;
@@ -9084,12 +9084,12 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                             if(except_ret == H5T_CONV_UNHANDLED) { /*If this case ignored by user handler*/
                                 /*Convert to integer representation.  Equivalent to ~(value - 1).*/
-                                H5T_bit_dec(int_buf, (size_t)0, 8 * buf_size);
-                                H5T_bit_neg(int_buf, (size_t)0, 8 * buf_size);
+                                H5T__bit_dec(int_buf, (size_t)0, 8 * buf_size);
+                                H5T__bit_neg(int_buf, (size_t)0, 8 * buf_size);
 
                                 /*copy source value into destination*/
-                                H5T_bit_copy(d, dst.offset, int_buf, (size_t)0, dst.prec-1);
-                                H5T_bit_set(d, (dst.offset + dst.prec-1), (size_t)1, TRUE);
+                                H5T__bit_copy(d, dst.offset, int_buf, (size_t)0, dst.prec-1);
+                                H5T__bit_set(d, (dst.offset + dst.prec-1), (size_t)1, TRUE);
                             } else if(except_ret == H5T_CONV_ABORT)
                                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                             else if(except_ret == H5T_CONV_HANDLED) {
@@ -9109,7 +9109,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                             }
 
                             if(except_ret == H5T_CONV_UNHANDLED)
-                                H5T_bit_set(d, (dst.offset + dst.prec-1), (size_t)1, TRUE);
+                                H5T__bit_set(d, (dst.offset + dst.prec-1), (size_t)1, TRUE);
                             else if(except_ret == H5T_CONV_ABORT)
                                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                             else if(except_ret == H5T_CONV_HANDLED) {
@@ -9129,7 +9129,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                             }
 
                             if(except_ret == H5T_CONV_UNHANDLED)
-                                H5T_bit_set(d, dst.offset, dst.prec-1, TRUE);
+                                H5T__bit_set(d, dst.offset, dst.prec-1, TRUE);
                             else if(except_ret == H5T_CONV_ABORT)
                                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                             else if(except_ret == H5T_CONV_HANDLED) {
@@ -9147,7 +9147,7 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                             if(except_ret == H5T_CONV_UNHANDLED) {
                                 /*copy source value into it if case is ignored by user handler*/
-                                H5T_bit_copy (d, dst.offset, int_buf, (size_t)0, first+1);
+                                H5T__bit_copy (d, dst.offset, int_buf, (size_t)0, first+1);
                             } else if(except_ret == H5T_CONV_ABORT)
                                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCONVERT, FAIL, "can't handle conversion exception")
                             else if(except_ret == H5T_CONV_HANDLED) {
@@ -9165,11 +9165,11 @@ H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  */
                 if (dst.offset>0) {
                     assert (H5T_PAD_ZERO==dst.lsb_pad || H5T_PAD_ONE==dst.lsb_pad);
-                    H5T_bit_set(d, (size_t)0, dst.offset, (hbool_t)(H5T_PAD_ONE==dst.lsb_pad));
+                    H5T__bit_set(d, (size_t)0, dst.offset, (hbool_t)(H5T_PAD_ONE==dst.lsb_pad));
                 }
                 if (dst.offset+dst.prec!=8*dst_p->shared->size) {
                     assert (H5T_PAD_ZERO==dst.msb_pad || H5T_PAD_ONE==dst.msb_pad);
-                    H5T_bit_set(d, dst.offset+dst.prec,
+                    H5T__bit_set(d, dst.offset+dst.prec,
                                  8*dst_p->shared->size - (dst.offset+ dst.prec),
                                  (hbool_t)(H5T_PAD_ONE==dst.msb_pad));
                 }
@@ -9218,11 +9218,11 @@ done:
         H5MM_free(src_rev);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_f_i() */
+} /* end H5T__conv_f_i() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_conv_i_f
+ * Function:	H5T__conv_i_f
  *
  * Purpose:	Convert one integer type to a floating-point type.  This is
  *              the catch-all function for integer-float conversions and
@@ -9246,7 +9246,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
+H5T__conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     size_t buf_stride, size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
     hid_t dxpl_id)
 {
@@ -9282,7 +9282,7 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
     hbool_t             reverse;        /*if reverse the order of destination   */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     switch(cdata->command) {
         case H5T_CONV_INIT:
@@ -9399,28 +9399,28 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 }
 
                 /*zero-set all destination bits*/
-                H5T_bit_set (d, dst.offset, dst.prec, FALSE);
+                H5T__bit_set (d, dst.offset, dst.prec, FALSE);
 
                 /* Copy source into a temporary buffer */
-                H5T_bit_copy(int_buf, (size_t)0, s, src.offset, src.prec);
+                H5T__bit_copy(int_buf, (size_t)0, s, src.offset, src.prec);
 
                 /*
                  * Find the sign bit value of the source.
                  */
                 if(H5T_SGN_2 == src.u.i.sign)
-                    sign = (size_t)H5T_bit_get_d(int_buf, src.prec - 1, (size_t)1);
+                    sign = (size_t)H5T__bit_get_d(int_buf, src.prec - 1, (size_t)1);
 
                 /*
                  * What is the bit position(starting from 0 as first one) for the most significant
 		 * bit(MSB) of S which is set?
                  */
                 if(H5T_SGN_2 == src.u.i.sign) {
-                    sfirst = H5T_bit_find(int_buf, (size_t)0, src.prec - 1, H5T_BIT_MSB, TRUE);
+                    sfirst = H5T__bit_find(int_buf, (size_t)0, src.prec - 1, H5T_BIT_MSB, TRUE);
                     if(sign && sfirst < 0)
 			/* The case 0x80...00, which is negative with maximal value */
                         is_max_neg = 1;
                 } else if(H5T_SGN_NONE == src.u.i.sign)
-                    sfirst = H5T_bit_find(int_buf, (size_t)0, src.prec, H5T_BIT_MSB, TRUE);
+                    sfirst = H5T__bit_find(int_buf, (size_t)0, src.prec, H5T_BIT_MSB, TRUE);
 
                 /* Handle special cases here.  Integer is zero */
                 if(!sign && sfirst < 0)
@@ -9432,9 +9432,9 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 if(H5T_SGN_2 == src.u.i.sign && sign) {
                     if(!is_max_neg) {
                         /* Equivalent to ~(i - 1) */
-                        H5T_bit_dec(int_buf, (size_t)0, buf_size * 8);
-                        H5T_bit_neg(int_buf, (size_t)0, buf_size * 8);
-                        sfirst = H5T_bit_find(int_buf, (size_t)0, src.prec - 1, H5T_BIT_MSB, TRUE);
+                        H5T__bit_dec(int_buf, (size_t)0, buf_size * 8);
+                        H5T__bit_neg(int_buf, (size_t)0, buf_size * 8);
+                        sfirst = H5T__bit_find(int_buf, (size_t)0, src.prec - 1, H5T_BIT_MSB, TRUE);
                     } else {
 			/* If it's maximal negative number 0x80...000, treat it as if it overflowed
 			 * (create a carry) to help conversion.  i.e. a character type number 0x80
@@ -9449,10 +9449,10 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                     /* Sign bit has been negated if bit vector isn't 0x80...00.  Set all bits in front of
                      * sign bit to 0 in the temporary buffer because they're all negated from the previous
 		     * step. */
-                    H5T_bit_set(int_buf, src.prec, (buf_size * 8) - src.prec, 0);
+                    H5T__bit_set(int_buf, src.prec, (buf_size * 8) - src.prec, 0);
 
                     /* Set sign bit in destination */
-                    H5T_bit_set_d(d, dst.u.f.sign, (size_t)1, (hsize_t)sign);
+                    H5T__bit_set_d(d, dst.u.f.sign, (size_t)1, (hsize_t)sign);
                 } /* end if */
 
                 first = (size_t)sfirst;
@@ -9472,7 +9472,7 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 /* Handle mantissa part here */
                 if (H5T_NORM_IMPLIED==dst.u.f.norm) {
                     /* Imply first bit */
-                    H5T_bit_set(int_buf, first, (size_t)1, 0);
+                    H5T__bit_set(int_buf, first, (size_t)1, 0);
        		} else if (H5T_NORM_NONE==dst.u.f.norm) {
 		    first++;
 		}
@@ -9501,28 +9501,28 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 		     */
 
                     /* Check 1st dropoff bit, see if it's set. */
-                    if(H5T_bit_get_d(int_buf, ((first - dst.u.f.msize) - 1), (size_t)1)) {
+                    if(H5T__bit_get_d(int_buf, ((first - dst.u.f.msize) - 1), (size_t)1)) {
                     	/* Check all bits after 1st dropoff bit, see if any of them is set. */
-                        if(((first - dst.u.f.msize) - 1) > 0 && H5T_bit_get_d(int_buf, (size_t)0, ((first - dst.u.f.msize) - 1)))
+                        if(((first - dst.u.f.msize) - 1) > 0 && H5T__bit_get_d(int_buf, (size_t)0, ((first - dst.u.f.msize) - 1)))
                             do_round = 1;
                         else {  /* The .50...0 case */
                             /* Check if the least significant bit is odd. */
-                            if(H5T_bit_get_d(int_buf, (first - dst.u.f.msize), (size_t)1))
+                            if(H5T__bit_get_d(int_buf, (first - dst.u.f.msize), (size_t)1))
                                do_round = 1;
                         }
 		    }
 
                     /* Right shift to drop off extra bits */
-                    H5T_bit_shift(int_buf, (ssize_t)(dst.u.f.msize - first), (size_t)0, buf_size * 8);
+                    H5T__bit_shift(int_buf, (ssize_t)(dst.u.f.msize - first), (size_t)0, buf_size * 8);
 
                     if(do_round) {
-                        H5T_bit_inc(int_buf, (size_t)0, buf_size * 8);
+                        H5T__bit_inc(int_buf, (size_t)0, buf_size * 8);
                         do_round = 0;
 
 			/* If integer is like 0x0ff...fff and we need to round up the
 			 * last f, we get 0x100...000.  Treat this special case here.
 			 */
-                    	if(H5T_bit_get_d(int_buf, dst.u.f.msize, (size_t)1)) {
+                    	if(H5T__bit_get_d(int_buf, dst.u.f.msize, (size_t)1)) {
                 	    if (H5T_NORM_IMPLIED==dst.u.f.norm) {
 			        /* The bit at this 1's position was impled already, so this
 			         * number should be 0x200...000.  We need to increment the
@@ -9533,7 +9533,7 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 				/* Right shift 1 bit to let the carried 1 fit in the mantissa,
 				 * and increment exponent by 1.
 				 */
-                                H5T_bit_shift(int_buf, (ssize_t)-1, (size_t)0, buf_size * 8);
+                                H5T__bit_shift(int_buf, (ssize_t)-1, (size_t)0, buf_size * 8);
 			 	expo++;
 			    }
 			}
@@ -9541,7 +9541,7 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                 } else {
                     /* The bit sequence can fit mantissa part.  Left shift to fit in from high-order of
 		     * bit position. */
-                    H5T_bit_shift(int_buf, (ssize_t)(dst.u.f.msize - first), (size_t)0, dst.u.f.msize);
+                    H5T__bit_shift(int_buf, (ssize_t)(dst.u.f.msize - first), (size_t)0, dst.u.f.msize);
                 }
 
 
@@ -9570,10 +9570,10 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
 
                 if(except_ret == H5T_CONV_UNHANDLED) {
                     /* Set exponent in destination */
-                    H5T_bit_set_d(d, dst.u.f.epos, dst.u.f.esize, expo);
+                    H5T__bit_set_d(d, dst.u.f.epos, dst.u.f.esize, expo);
 
                     /* Copy mantissa into destination */
-                    H5T_bit_copy(d, dst.u.f.mpos, int_buf, (size_t)0, (buf_size * 8) > dst.u.f.msize ? dst.u.f.msize : buf_size * 8);
+                    H5T__bit_copy(d, dst.u.f.mpos, int_buf, (size_t)0, (buf_size * 8) > dst.u.f.msize ? dst.u.f.msize : buf_size * 8);
                 }
 
             padding:
@@ -9582,11 +9582,11 @@ H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
                  */
                 if(dst.offset > 0) {
                     HDassert(H5T_PAD_ZERO == dst.lsb_pad || H5T_PAD_ONE == dst.lsb_pad);
-                    H5T_bit_set(d, (size_t)0, dst.offset, (hbool_t)(H5T_PAD_ONE==dst.lsb_pad));
+                    H5T__bit_set(d, (size_t)0, dst.offset, (hbool_t)(H5T_PAD_ONE==dst.lsb_pad));
                 }
                 if(dst.offset + dst.prec != 8 * dst_p->shared->size) {
                     HDassert(H5T_PAD_ZERO == dst.msb_pad || H5T_PAD_ONE == dst.msb_pad);
-                    H5T_bit_set(d, dst.offset + dst.prec,
+                    H5T__bit_set(d, dst.offset + dst.prec,
                                  8 * dst_p->shared->size - (dst.offset + dst.prec),
                                  (hbool_t)(H5T_PAD_ONE == dst.msb_pad));
                 }
@@ -9648,7 +9648,7 @@ done:
         H5MM_free(src_rev);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_conv_i_f() */
+} /* end H5T__conv_i_f() */
 
 
 /*-------------------------------------------------------------------------
diff --git a/src/H5Tdbg.c b/src/H5Tdbg.c
index c161f9f..e5df7ff 100644
--- a/src/H5Tdbg.c
+++ b/src/H5Tdbg.c
@@ -76,7 +76,7 @@
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_print_stats
+ * Function:	H5T__print_stats
  *
  * Purpose:	Print statistics about a conversion path.  Statistics are
  *		printed only if all the following conditions are true:
@@ -102,14 +102,14 @@
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_print_stats(H5T_path_t UNUSED * path, int UNUSED * nprint/*in,out*/)
+H5T__print_stats(H5T_path_t UNUSED * path, int UNUSED * nprint/*in,out*/)
 {
 #ifdef H5T_DEBUG
     hsize_t	nbytes;
     char	bandwidth[32];
 #endif
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_PACKAGE_NOERR
 
 #ifdef H5T_DEBUG
     if(H5DEBUG(T) && path->stats.ncalls > 0) {
@@ -143,7 +143,7 @@ H5T_print_stats(H5T_path_t UNUSED * path, int UNUSED * nprint/*in,out*/)
     }
 #endif
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5T_print_stats() */
+} /* end H5T__print_stats() */
 
 
 /*-------------------------------------------------------------------------
diff --git a/src/H5Tenum.c b/src/H5Tenum.c
index 1e3d760..8e4e8a2 100644
--- a/src/H5Tenum.c
+++ b/src/H5Tenum.c
@@ -91,7 +91,7 @@ H5Tenum_create(hid_t parent_id)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an integer data type")
 
     /* Build new type */
-    if((dt=H5T_enum_create(parent))==NULL)
+    if(NULL == (dt = H5T__enum_create(parent)))
 	HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot create enum type")
     /* Atomize the type */
     if ((ret_value=H5I_register(H5I_DATATYPE, dt, TRUE))<0)
@@ -103,7 +103,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_enum_create
+ * Function:	H5T__enum_create
  *
  * Purpose:	Private function for H5Tenum_create.  Create a new
  *              enumeration data type based on the specified
@@ -121,16 +121,16 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_t *
-H5T_enum_create(const H5T_t *parent)
+H5T__enum_create(const H5T_t *parent)
 {
     H5T_t	*ret_value;		/*new enumeration data type	*/
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     assert(parent);
 
     /* Build new type */
-    if(NULL == (ret_value = H5T_alloc()))
+    if(NULL == (ret_value = H5T__alloc()))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
     ret_value->shared->type = H5T_ENUM;
     ret_value->shared->parent = H5T_copy(parent, H5T_COPY_ALL);
@@ -183,7 +183,7 @@ H5Tenum_insert(hid_t type, const char *name, const void *value)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value specified")
 
     /* Do work */
-    if (H5T_enum_insert(dt, name, value)<0)
+    if(H5T__enum_insert(dt, name, value) < 0)
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to insert new enumeration member")
 
 done:
@@ -192,7 +192,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_enum_insert
+ * Function:	H5T__enum_insert
  *
  * Purpose:	Insert a new member having a NAME and VALUE into an
  *		enumeration data TYPE.  The NAME and VALUE must both be
@@ -211,14 +211,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_enum_insert(const H5T_t *dt, const char *name, const void *value)
+H5T__enum_insert(const H5T_t *dt, const char *name, const void *value)
 {
     unsigned	i;
     char	**names=NULL;
     uint8_t	*values=NULL;
     herr_t      ret_value=SUCCEED;       /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     assert(dt);
     assert(name && *name);
@@ -292,7 +292,7 @@ H5Tget_member_value(hid_t type, unsigned membno, void *value/*out*/)
     if (!value)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "null value buffer")
 
-    if (H5T_get_member_value(dt, membno, value)<0)
+    if(H5T__get_member_value(dt, membno, value) < 0)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get member value")
 done:
     FUNC_LEAVE_API(ret_value)
@@ -300,9 +300,9 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_get_member_value
+ * Function:	H5T__get_member_value
  *
- * Purpose:	Private function for H5T_get_member_value.  Return the
+ * Purpose:	Private function for H5T__get_member_value.  Return the
  *              value for an enumeration data type member.
  *
  * Return:	Success:	non-negative with the member value copied
@@ -318,19 +318,16 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_get_member_value(const H5T_t *dt, unsigned membno, void *value/*out*/)
+H5T__get_member_value(const H5T_t *dt, unsigned membno, void *value/*out*/)
 {
-    herr_t      ret_value=SUCCEED;       /* Return value */
-
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE_NOERR
 
     assert(dt);
     assert(value);
 
     HDmemcpy(value, dt->shared->u.enumer.value + membno*dt->shared->size, dt->shared->size);
 
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
+    FUNC_LEAVE_NOAPI(SUCCEED)
 }
 
 
@@ -439,7 +436,7 @@ H5T_enum_nameof(const H5T_t *dt, const void *value, char *name/*out*/, size_t si
      * and search on the copied datatype to protect the original order. */
     if(NULL == (copied_dt = H5T_copy(dt, H5T_COPY_ALL)))
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "unable to copy data type")
-    if(H5T_sort_value(copied_dt, NULL) < 0)
+    if(H5T__sort_value(copied_dt, NULL) < 0)
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCOMPARE, NULL, "value sort failed")
 
     lt = 0;
@@ -578,7 +575,7 @@ H5T_enum_valueof(const H5T_t *dt, const char *name, void *value/*out*/)
      * and search on the copied datatype to protect the original order. */
     if (NULL==(copied_dt=H5T_copy(dt, H5T_COPY_ALL)))
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to copy data type");
-    if(H5T_sort_name(copied_dt, NULL)<0)
+    if(H5T__sort_name(copied_dt, NULL) < 0)
         HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOMPARE, FAIL, "value sort failed")
 
     lt = 0;
diff --git a/src/H5Tfields.c b/src/H5Tfields.c
index a208f75..163bab3 100644
--- a/src/H5Tfields.c
+++ b/src/H5Tfields.c
@@ -83,7 +83,7 @@ H5Tget_nmembers(hid_t type_id)
     H5TRACE1("Is", "i", type_id);
 
     /* Check args */
-    if(NULL == (dt = H5I_object_verify(type_id, H5I_DATATYPE)))
+    if(NULL == (dt = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
 
     if((ret_value = H5T_get_nmembers(dt)) < 0)
@@ -165,10 +165,10 @@ H5Tget_member_name(hid_t type_id, unsigned membno)
     FUNC_ENTER_API(NULL)
 
     /* Check args */
-    if (NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE)))
+    if (NULL == (dt = (H5T_t *)H5I_object_verify(type_id,H5I_DATATYPE)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a datatype")
 
-    if((ret_value = H5T_get_member_name(dt, membno))==NULL)
+    if(NULL == (ret_value = H5T__get_member_name(dt, membno)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "unable to get member name")
 
 done:
@@ -177,7 +177,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_get_member_name
+ * Function:	H5T__get_member_name
  *
  * Purpose:	Private function for H5Tget_member_name.  Returns the name
  *              of a member of a compound or enumeration datatype. Members
@@ -196,11 +196,11 @@ done:
  *-------------------------------------------------------------------------
  */
 char *
-H5T_get_member_name(H5T_t const *dt, unsigned membno)
+H5T__get_member_name(H5T_t const *dt, unsigned membno)
 {
     char	*ret_value;
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_PACKAGE
 
     assert(dt);
 
@@ -217,6 +217,17 @@ H5T_get_member_name(H5T_t const *dt, unsigned membno)
             ret_value = H5MM_xstrdup(dt->shared->u.enumer.name[membno]);
             break;
 
+        case H5T_NO_CLASS:
+        case H5T_INTEGER:
+        case H5T_FLOAT:
+        case H5T_TIME:
+        case H5T_STRING:
+        case H5T_BITFIELD:
+        case H5T_OPAQUE:
+        case H5T_REFERENCE:
+        case H5T_VLEN:
+        case H5T_ARRAY:
+        case H5T_NCLASSES:
         default:
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "operation not supported for type class")
     } /*lint !e788 All appropriate cases are covered */
@@ -255,35 +266,45 @@ H5Tget_member_index(hid_t type_id, const char *name)
     H5TRACE2("Is", "i*s", type_id, name);
 
     /* Check arguments */
-    assert(name);
-    if(NULL==(dt=H5I_object_verify(type_id,H5I_DATATYPE)))
+    HDassert(name);
+    if(NULL == (dt = (H5T_t*)H5I_object_verify(type_id, H5I_DATATYPE)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
 
     /* Locate member by name */
-    switch (dt->shared->type) {
+    switch(dt->shared->type) {
         case H5T_COMPOUND:
-            for(i=0; i< dt->shared->u.compnd.nmembs; i++) {
+            for(i = 0; i < dt->shared->u.compnd.nmembs; i++)
                 if(!HDstrcmp(dt->shared->u.compnd.memb[i].name, name))
                     HGOTO_DONE((int)i)
-            }
             break;
         case H5T_ENUM:
-            for(i=0; i< dt->shared->u.enumer.nmembs; i++) {
+            for(i = 0; i < dt->shared->u.enumer.nmembs; i++)
                 if(!HDstrcmp(dt->shared->u.enumer.name[i], name))
                     HGOTO_DONE((int)i)
-            }
             break;
+
+        case H5T_NO_CLASS:
+        case H5T_INTEGER:
+        case H5T_FLOAT:
+        case H5T_TIME:
+        case H5T_STRING:
+        case H5T_BITFIELD:
+        case H5T_OPAQUE:
+        case H5T_REFERENCE:
+        case H5T_VLEN:
+        case H5T_ARRAY:
+        case H5T_NCLASSES:
         default:
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "operation not supported for this type")
     } /*lint !e788 All appropriate cases are covered */
 
 done:
     FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Tget_member_index() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_sort_value
+ * Function:	H5T__sort_value
  *
  * Purpose:	Sorts the members of a compound datatype by their offsets;
  *		sorts the members of an enum type by their values. This even
@@ -299,7 +320,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_sort_value(const H5T_t *dt, int *map)
+H5T__sort_value(const H5T_t *dt, int *map)
 {
     unsigned	nmembs;                 /* Number of members for datatype */
     size_t	size;
@@ -308,7 +329,7 @@ H5T_sort_value(const H5T_t *dt, int *map)
     unsigned	i, j;                   /* Local index variables */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Check args */
     HDassert(dt);
@@ -381,13 +402,12 @@ H5T_sort_value(const H5T_t *dt, int *map)
 	} /* end if */
     } /* end else */
 
-done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_sort_value() */
+} /* end H5T__sort_value() */
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_sort_name
+ * Function:	H5T__sort_name
  *
  * Purpose:	Sorts members of a compound or enumeration datatype by their
  *		names. This even works for locked datatypes since it doesn't
@@ -405,15 +425,14 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_sort_name(const H5T_t *dt, int *map)
+H5T__sort_name(const H5T_t *dt, int *map)
 {
     unsigned	i, j, nmembs;
     size_t	size;
     hbool_t	swapped;
     uint8_t	tbuf[32];
-    herr_t ret_value=SUCCEED;   /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE_NOERR
 
     /* Check args */
     assert(dt);
@@ -488,7 +507,6 @@ H5T_sort_name(const H5T_t *dt, int *map)
 	}
     }
 
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
+    FUNC_LEAVE_NOAPI(SUCCEED)
 }
 
diff --git a/src/H5Tnative.c b/src/H5Tnative.c
index 50bb96e..b9192f9 100644
--- a/src/H5Tnative.c
+++ b/src/H5Tnative.c
@@ -290,7 +290,7 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                     if(NULL == (memb_type = H5T_get_member_type(dtype, u, H5T_COPY_TRANSIENT)))
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "member type retrieval failed")
 
-                    if(NULL == (comp_mname[u] = H5T_get_member_name(dtype, u)))
+                    if(NULL == (comp_mname[u] = H5T__get_member_name(dtype, u)))
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "member type retrieval failed")
 
                     if(NULL == (memb_list[u] = H5T_get_native_type(memb_type, direction, &children_st_align, &(memb_offset[u]), &children_size)))
@@ -305,12 +305,12 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                     children_size += children_st_align - (children_size % children_st_align);
 
                 /* Construct new compound type based on native type */
-                if(NULL == (new_type = H5T_create(H5T_COMPOUND, children_size)))
+                if(NULL == (new_type = H5T__create(H5T_COMPOUND, children_size)))
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot create a compound type")
 
                 /* Insert members for the new compound type */
                 for(u = 0; u < nmemb; u++)
-                    if(H5T_insert(new_type, comp_mname[u], memb_offset[u], memb_list[u]) < 0)
+                    if(H5T__insert(new_type, comp_mname[u], memb_offset[u], memb_list[u]) < 0)
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot insert member to compound datatype")
 
                 /* Update size, offset and compound alignment for parent in the case of
@@ -377,7 +377,7 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot allocate memory")
 
                 /* Construct new enum type based on native type */
-                if(NULL == (new_type=H5T_enum_create(nat_super_type)))
+                if(NULL == (new_type = H5T__enum_create(nat_super_type)))
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "unable to create enum type")
 
                 /* Retrieve member info and insert members into new enum type */
@@ -385,16 +385,16 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "enumerate data type doesn't have any member")
                 H5_ASSIGN_OVERFLOW(nmemb, snmemb, int, unsigned);
                 for(u = 0; u < nmemb; u++) {
-                    if(NULL == (memb_name = H5T_get_member_name(dtype, u)))
+                    if(NULL == (memb_name = H5T__get_member_name(dtype, u)))
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot get member name")
-                    if(H5T_get_member_value(dtype, u, tmp_memb_value) < 0)
+                    if(H5T__get_member_value(dtype, u, tmp_memb_value) < 0)
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot get member value")
                     HDmemcpy(memb_value, tmp_memb_value, H5T_get_size(super_type));
 
                     if(H5Tconvert(super_type_id, nat_super_type_id, (size_t)1, memb_value, NULL, H5P_DEFAULT) < 0)
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot get member value")
 
-                    if(H5T_enum_insert(new_type, memb_name, memb_value) < 0)
+                    if(H5T__enum_insert(new_type, memb_name, memb_value) < 0)
                         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot insert member")
                     memb_name = (char *)H5MM_xfree(memb_name);
                 }
@@ -422,12 +422,12 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                 size_t      super_align = 0;
 
                 /* Retrieve dimension information for array data type */
-                if((sarray_rank = H5T_get_array_ndims(dtype)) <= 0)
+                if((sarray_rank = H5T__get_array_ndims(dtype)) <= 0)
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot get dimension rank")
                 H5_ASSIGN_OVERFLOW(array_rank, sarray_rank, int, unsigned);
                 if(NULL == (dims = (hsize_t*)H5MM_malloc(array_rank * sizeof(hsize_t))))
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot allocate memory")
-                if(H5T_get_array_dims(dtype, dims) < 0)
+                if(H5T__get_array_dims(dtype, dims) < 0)
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot get dimension size")
 
                 /* Retrieve base type for array type */
@@ -442,7 +442,7 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                     HGOTO_ERROR(H5E_ARGS, H5E_CLOSEERROR, NULL, "cannot close datatype")
 
                 /* Create a new array type based on native type */
-                if(NULL == (new_type = H5T_array_create(nat_super_type, array_rank, dims)))
+                if(NULL == (new_type = H5T__array_create(nat_super_type, array_rank, dims)))
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "unable to create array type")
 
                 /* Close base type */
@@ -480,7 +480,7 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
                     HGOTO_ERROR(H5E_ARGS, H5E_CLOSEERROR, NULL, "cannot close datatype")
 
                 /* Create a new array type based on native type */
-                if(NULL == (new_type = H5T_vlen_create(nat_super_type)))
+                if(NULL == (new_type = H5T__vlen_create(nat_super_type)))
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "unable to create VL type")
 
                 /* Close base type */
diff --git a/src/H5Toh.c b/src/H5Toh.c
index be853f1..7961706 100644
--- a/src/H5Toh.c
+++ b/src/H5Toh.c
@@ -183,7 +183,7 @@ H5O_dtype_create(H5F_t *f, void *_crt_info, H5G_loc_t *obj_loc, hid_t dxpl_id)
     HDassert(obj_loc);
 
     /* Commit the type to the file */
-    if(H5T_commit(f, crt_info->dt, crt_info->tcpl_id, dxpl_id) < 0)
+    if(H5T__commit(f, crt_info->dt, crt_info->tcpl_id, dxpl_id) < 0)
 	HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "unable to commit datatype")
 
     /* Set up the new named datatype's location */
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index f25fb1e..b9364d6 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -46,9 +46,6 @@
 /* Other public headers needed by this file */
 #include "H5Spublic.h"		/* Dataspace functions			*/
 
-/* Number of reserved IDs in ID group */
-#define H5T_RESERVED_ATOMS 	8
-
 /* Length of debugging name buffer */
 #define H5T_NAMELEN		32
 
@@ -378,7 +375,7 @@ typedef struct H5T_shared_t {
     H5T_class_t		type;	/*which class of type is this?		     */
     size_t		size;	/*total size of an instance of this type     */
     unsigned            version;        /* Version of object header message to encode this object with */
-    hbool_t		force_conv;/* Set if this type always needs to be converted and H5T_conv_noop cannot be called */
+    hbool_t		force_conv;/* Set if this type always needs to be converted and H5T__conv_noop cannot be called */
     struct H5T_t	*parent;/*parent type for derived datatypes	     */
     union {
         H5T_atomic_t	atomic; /* an atomic datatype              */
@@ -511,899 +508,897 @@ H5FL_EXTERN(H5T_t);
 H5FL_EXTERN(H5T_shared_t);
 
 /* Common functions */
-H5_DLL H5T_t *H5T_create(H5T_class_t type, size_t size);
-H5_DLL herr_t H5T_commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id);
+H5_DLL H5T_t *H5T__create(H5T_class_t type, size_t size);
+H5_DLL herr_t H5T__commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id);
 H5_DLL herr_t H5T__commit_named(const H5G_loc_t *loc, const char *name,
     H5T_t *dt, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t dxpl_id);
-H5_DLL H5T_t *H5T_alloc(void);
-H5_DLL herr_t H5T_free(H5T_t *dt);
-H5_DLL herr_t H5T_visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op,
+H5_DLL H5T_t *H5T__alloc(void);
+H5_DLL herr_t H5T__free(H5T_t *dt);
+H5_DLL herr_t H5T__visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op,
     void *op_value);
-H5_DLL herr_t H5T_set_size(H5T_t *dt, size_t size);
-H5_DLL herr_t H5T_upgrade_version(H5T_t *dt, unsigned new_version);
+H5_DLL herr_t H5T__upgrade_version(H5T_t *dt, unsigned new_version);
 
 /* Conversion functions */
-H5_DLL herr_t H5T_conv_noop(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_noop(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
 
-H5_DLL herr_t H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
 			    size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *_buf, void *bkg,
                             hid_t dset_xfer_plist);
 
-H5_DLL herr_t H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+H5_DLL herr_t H5T__conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                             size_t nelmts, size_t buf_stride,
                             size_t bkg_stride, void *buf, void *bkg,
                             hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_int(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_uint(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_int(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_uint(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_long(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_ulong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_long(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_ulong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_llong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_llong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
 
-H5_DLL herr_t H5T_conv_short_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_schar(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_uchar(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_schar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_uchar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_ushort(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_short(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_int(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_uint(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_int(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_uint(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_long(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_ulong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_long(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_ulong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_llong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_llong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_ullong(hid_t src_id, hid_t dst_id,
 				      H5T_cdata_t *cdata, size_t nelmts,
 				      size_t buf_stride, size_t bkg_stride,
                                       void *buf, void *bkg,
                                       hid_t dset_xfer_plist);
 
-H5_DLL herr_t H5T_conv_int_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_schar(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_uchar(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_schar(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_uchar(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_short(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_ushort(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_short(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_ushort(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_uint(hid_t src_id, hid_t dst_id,
 				 H5T_cdata_t *cdata, size_t nelmts,
 				 size_t buf_stride, size_t bkg_stride,
                                  void *buf, void *bkg,
                                  hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_int(hid_t src_id, hid_t dst_id,
 				 H5T_cdata_t *cdata, size_t nelmts,
 				 size_t buf_stride, size_t bkg_stride,
                                  void *buf, void *bkg,
                                  hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_long(hid_t src_id, hid_t dst_id,
 				 H5T_cdata_t *cdata, size_t nelmts,
 				 size_t buf_stride, size_t bkg_stride,
                                  void *buf, void *bkg,
                                  hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_ulong(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_long(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_ulong(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_llong(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_ullong(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_llong(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_ullong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
 
-H5_DLL herr_t H5T_conv_long_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_schar(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_uchar(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_schar(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_uchar(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_short(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_ushort(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_short(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_ushort(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_int(hid_t src_id, hid_t dst_id,
 				 H5T_cdata_t *cdata, size_t nelmts,
 				 size_t buf_stride, size_t bkg_stride,
                                  void *buf, void *bkg,
                                  hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_uint(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_int(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_uint(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_ulong(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_long(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_llong(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_ullong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_llong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
 
-H5_DLL herr_t H5T_conv_llong_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_schar(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_uchar(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_schar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_uchar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_short(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_ushort(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_short(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_ushort(hid_t src_id, hid_t dst_id,
 				      H5T_cdata_t *cdata, size_t nelmts,
 				      size_t buf_stride, size_t bkg_stride,
                                       void *buf, void *bkg,
                                       hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_int(hid_t src_id, hid_t dst_id,
 				  H5T_cdata_t *cdata, size_t nelmts,
 				  size_t buf_stride, size_t bkg_stride,
                                   void *buf, void *bkg,
                                   hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_uint(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_int(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_uint(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_long(hid_t src_id, hid_t dst_id,
 				   H5T_cdata_t *cdata, size_t nelmts,
 				   size_t buf_stride, size_t bkg_stride,
                                    void *buf, void *bkg,
                                    hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_ulong(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_long(hid_t src_id, hid_t dst_id,
 				    H5T_cdata_t *cdata, size_t nelmts,
 				    size_t buf_stride, size_t bkg_stride,
                                     void *buf, void *bkg,
                                     hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_ulong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_llong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_schar_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_schar_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uchar_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uchar_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_short_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_short_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ushort_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ushort_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_int_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_int_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_uint_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_uint_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_long_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_long_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ulong_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ulong_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_llong_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_llong_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_float(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_float(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_double(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_double(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ullong_ldouble(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ullong_ldouble(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_schar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_uchar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_short(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_ushort(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_int(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_uint(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_long(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_ulong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_llong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_float_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_float_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_schar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_uchar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_short(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_ushort(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_int(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_uint(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_long(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_ulong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_llong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_double_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_double_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_schar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_schar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_uchar(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_uchar(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_short(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_short(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_ushort(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_ushort(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_int(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_int(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_uint(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_uint(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_long(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_long(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_ulong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_ulong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_llong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_llong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
-H5_DLL herr_t H5T_conv_ldouble_ullong(hid_t src_id, hid_t dst_id,
+H5_DLL herr_t H5T__conv_ldouble_ullong(hid_t src_id, hid_t dst_id,
 				     H5T_cdata_t *cdata, size_t nelmts,
 				     size_t buf_stride, size_t bkg_stride,
                                      void *buf, void *bkg,
                                      hid_t dset_xfer_plist);
 
 /* Bit twiddling functions */
-H5_DLL void H5T_bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
+H5_DLL void H5T__bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
 			  size_t src_offset, size_t size);
-H5_DLL herr_t H5T_bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size);
-H5_DLL void H5T_bit_set(uint8_t *buf, size_t offset, size_t size,
+H5_DLL herr_t H5T__bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size);
+H5_DLL void H5T__bit_set(uint8_t *buf, size_t offset, size_t size,
 			 hbool_t value);
-H5_DLL uint64_t H5T_bit_get_d(uint8_t *buf, size_t offset, size_t size);
-H5_DLL void H5T_bit_set_d(uint8_t *buf, size_t offset, size_t size,
+H5_DLL uint64_t H5T__bit_get_d(uint8_t *buf, size_t offset, size_t size);
+H5_DLL void H5T__bit_set_d(uint8_t *buf, size_t offset, size_t size,
 			   uint64_t val);
-H5_DLL ssize_t H5T_bit_find(uint8_t *buf, size_t offset, size_t size,
+H5_DLL ssize_t H5T__bit_find(uint8_t *buf, size_t offset, size_t size,
 			     H5T_sdir_t direction, hbool_t value);
-H5_DLL htri_t H5T_bit_inc(uint8_t *buf, size_t start, size_t size);
-H5_DLL htri_t H5T_bit_dec(uint8_t *buf, size_t start, size_t size);
-H5_DLL void H5T_bit_neg(uint8_t *buf, size_t start, size_t size);
+H5_DLL htri_t H5T__bit_inc(uint8_t *buf, size_t start, size_t size);
+H5_DLL htri_t H5T__bit_dec(uint8_t *buf, size_t start, size_t size);
+H5_DLL void H5T__bit_neg(uint8_t *buf, size_t start, size_t size);
 
 /* VL functions */
-H5_DLL H5T_t * H5T_vlen_create(const H5T_t *base);
-H5_DLL htri_t H5T_vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc);
+H5_DLL H5T_t * H5T__vlen_create(const H5T_t *base);
+H5_DLL htri_t H5T__vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc);
 
 /* Array functions */
-H5_DLL H5T_t *H5T_array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]);
-H5_DLL int    H5T_get_array_ndims(const H5T_t *dt);
-H5_DLL int    H5T_get_array_dims(const H5T_t *dt, hsize_t dims[]);
+H5_DLL H5T_t *H5T__array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]);
+H5_DLL int    H5T__get_array_ndims(const H5T_t *dt);
+H5_DLL int    H5T__get_array_dims(const H5T_t *dt, hsize_t dims[]);
 
 /* Compound functions */
-H5_DLL herr_t H5T_insert(H5T_t *parent, const char *name, size_t offset,
+H5_DLL herr_t H5T__insert(H5T_t *parent, const char *name, size_t offset,
         const H5T_t *member);
-H5_DLL size_t H5T_get_member_size(const H5T_t *dt, unsigned membno);
-H5_DLL htri_t H5T_is_packed(const H5T_t *dt);
-H5_DLL void H5T_update_packed(const H5T_t *dt);
-H5_DLL H5T_subset_info_t *H5T_conv_struct_subset(const H5T_cdata_t *cdata);
+H5_DLL size_t H5T__get_member_size(const H5T_t *dt, unsigned membno);
+H5_DLL void H5T__update_packed(const H5T_t *dt);
+H5_DLL H5T_subset_info_t *H5T__conv_struct_subset(const H5T_cdata_t *cdata);
 
 /* Enumerated type functions */
-H5_DLL H5T_t *H5T_enum_create(const H5T_t *parent);
-H5_DLL herr_t H5T_enum_insert(const H5T_t *dt, const char *name, const void *value);
-H5_DLL herr_t H5T_get_member_value(const H5T_t *dt, unsigned membno, void *value);
+H5_DLL H5T_t *H5T__enum_create(const H5T_t *parent);
+H5_DLL herr_t H5T__enum_insert(const H5T_t *dt, const char *name, const void *value);
+H5_DLL herr_t H5T__get_member_value(const H5T_t *dt, unsigned membno, void *value);
 
 /* Field functions (for both compound & enumerated types) */
-H5_DLL char  *H5T_get_member_name(H5T_t const *dt, unsigned membno);
-H5_DLL herr_t H5T_sort_value(const H5T_t *dt, int *map);
-H5_DLL herr_t H5T_sort_name(const H5T_t *dt, int *map);
+H5_DLL char  *H5T__get_member_name(H5T_t const *dt, unsigned membno);
+H5_DLL herr_t H5T__sort_value(const H5T_t *dt, int *map);
+H5_DLL herr_t H5T__sort_name(const H5T_t *dt, int *map);
 
 /* Debugging functions */
-H5_DLL herr_t H5T_print_stats(H5T_path_t *path, int *nprint/*in,out*/);
+H5_DLL herr_t H5T__print_stats(H5T_path_t *path, int *nprint/*in,out*/);
 
 #endif /* _H5Tpkg_H */
 
diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h
index 0c96896..345924c 100644
--- a/src/H5Tprivate.h
+++ b/src/H5Tprivate.h
@@ -106,7 +106,7 @@ H5_DLLVAR H5T_order_t H5T_native_order_g;
 /* Private functions */
 H5_DLL herr_t H5TN_init_interface(void);
 H5_DLL herr_t H5T_init(void);
-H5_DLL H5T_t *H5T_copy(const H5T_t *old_dt, H5T_copy_t method);
+H5_DLL H5T_t *H5T_copy(H5T_t *old_dt, H5T_copy_t method);
 H5_DLL herr_t H5T_lock(H5T_t *dt, hbool_t immutable);
 H5_DLL herr_t H5T_close(H5T_t *dt);
 H5_DLL H5T_t *H5T_get_super(const H5T_t *dt);
diff --git a/src/H5Tvisit.c b/src/H5Tvisit.c
index a1843ef..68cabda 100644
--- a/src/H5Tvisit.c
+++ b/src/H5Tvisit.c
@@ -83,7 +83,7 @@
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5T_visit
+ * Function:    H5T__visit
  *
  * Purpose:     Visit a datatype and all it's members and/or parents, making
  *              a callback for each.
@@ -96,12 +96,12 @@
  *-------------------------------------------------------------------------
  */
 herr_t
-H5T_visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op, void *op_value)
+H5T__visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op, void *op_value)
 {
     hbool_t is_complex;                 /* Flag indicating current datatype is "complex" */
     herr_t ret_value = SUCCEED;         /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_PACKAGE
 
     /* Sanity check */
     HDassert(dt);
@@ -123,7 +123,7 @@ H5T_visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op, void *op_value)
 
                 /* Visit each member of the compound datatype */
                 for(u = 0; u < dt->shared->u.compnd.nmembs; u++)
-                    if(H5T_visit(dt->shared->u.compnd.memb[u].type, visit_flags, op, op_value) < 0)
+                    if(H5T__visit(dt->shared->u.compnd.memb[u].type, visit_flags, op, op_value) < 0)
                         HGOTO_ERROR(H5E_DATATYPE, H5E_BADITER, FAIL, "can't visit member datatype")
             } /* end case */
             break;
@@ -132,7 +132,7 @@ H5T_visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op, void *op_value)
         case H5T_VLEN:
         case H5T_ENUM:
             /* Visit parent type */
-            if(H5T_visit(dt->shared->parent, visit_flags, op, op_value) < 0)
+            if(H5T__visit(dt->shared->parent, visit_flags, op, op_value) < 0)
                 HGOTO_ERROR(H5E_DATATYPE, H5E_BADITER, FAIL, "can't visit parent datatype")
             break;
 
@@ -151,5 +151,5 @@ H5T_visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op, void *op_value)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_visit() */
+} /* end H5T__visit() */
 
diff --git a/src/H5Tvlen.c b/src/H5Tvlen.c
index 267692c..f497d1e 100644
--- a/src/H5Tvlen.c
+++ b/src/H5Tvlen.c
@@ -117,7 +117,7 @@ H5Tvlen_create(hid_t base_id)
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype")
 
     /* Create up VL datatype */
-    if((dt = H5T_vlen_create(base)) == NULL)
+    if((dt = H5T__vlen_create(base)) == NULL)
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location")
 
     /* Atomize the type */
@@ -130,7 +130,7 @@ done:
 
 
 /*-------------------------------------------------------------------------
- * Function:	H5T_vlen_create
+ * Function:	H5T__vlen_create
  *
  * Purpose:	Create a new variable-length datatype based on the specified
  *		BASE_TYPE.
@@ -145,18 +145,18 @@ done:
  *-------------------------------------------------------------------------
  */
 H5T_t *
-H5T_vlen_create(const H5T_t *base)
+H5T__vlen_create(const H5T_t *base)
 {
     H5T_t	*dt = NULL;		/*new VL datatype	*/
     H5T_t	*ret_value;	/*return value			*/
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* Check args */
     HDassert(base);
 
     /* Build new type */
-    if(NULL == (dt = H5T_alloc()))
+    if(NULL == (dt = H5T__alloc()))
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTALLOC, NULL, "memory allocation failed")
     dt->shared->type = H5T_VLEN;
 
@@ -187,11 +187,11 @@ done:
             HDONE_ERROR(H5E_DATATYPE, H5E_CANTRELEASE, NULL, "unable to release datatype info")
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5T_vlen_create() */
+} /* end H5T__vlen_create() */
 
 
 /*-------------------------------------------------------------------------
- * Function: H5T_vlen_set_loc
+ * Function: H5T__vlen_set_loc
  *
  * Purpose:	Sets the location of a VL datatype to be either on disk or in memory
  *
@@ -207,11 +207,11 @@ done:
  *-------------------------------------------------------------------------
  */
 htri_t
-H5T_vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc)
+H5T__vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc)
 {
     htri_t ret_value = FALSE;   /* Indicate success, but no location change */
 
-    FUNC_ENTER_NOAPI_NOINIT
+    FUNC_ENTER_PACKAGE
 
     /* check parameters */
     HDassert(dt);
@@ -298,7 +298,7 @@ H5T_vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc)
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}   /* end H5T_vlen_set_loc() */
+}   /* end H5T__vlen_set_loc() */
 
 
 /*-------------------------------------------------------------------------
diff --git a/src/H5Zprivate.h b/src/H5Zprivate.h
index c2d6f7e..c1528b3 100644
--- a/src/H5Zprivate.h
+++ b/src/H5Zprivate.h
@@ -103,6 +103,6 @@ H5_DLL herr_t H5Z_xform_destroy(H5Z_data_xform_t *data_xform_prop);
 H5_DLL herr_t H5Z_xform_eval(H5Z_data_xform_t *data_xform_prop, void *array,
     size_t array_size, const H5T_t *buf_type);
 H5_DLL hbool_t H5Z_xform_noop(const H5Z_data_xform_t *data_xform_prop);
-H5_DLL char* H5Z_xform_extract_xform_str(const H5Z_data_xform_t *data_xform_prop);
+H5_DLL const char *H5Z_xform_extract_xform_str(const H5Z_data_xform_t *data_xform_prop);
 
 #endif
diff --git a/src/H5Zscaleoffset.c b/src/H5Zscaleoffset.c
index e6ae53e..1538765 100644
--- a/src/H5Zscaleoffset.c
+++ b/src/H5Zscaleoffset.c
@@ -45,7 +45,7 @@ static htri_t H5Z_can_apply_scaleoffset(hid_t dcpl_id, hid_t type_id, hid_t spac
 static enum H5Z_scaleoffset_t H5Z_scaleoffset_get_type(unsigned dtype_class,
     unsigned dtype_size, unsigned dtype_sign);
 static herr_t H5Z_scaleoffset_set_parms_fillval(H5P_genplist_t *dcpl_plist,
-    const H5T_t *type, enum H5Z_scaleoffset_t scale_type, unsigned cd_values[],
+    H5T_t *type, enum H5Z_scaleoffset_t scale_type, unsigned cd_values[],
     int need_convert, hid_t dxpl_id);
 static herr_t H5Z_set_local_scaleoffset(hid_t dcpl_id, hid_t type_id, hid_t space_id);
 static size_t H5Z_filter_scaleoffset(unsigned flags, size_t cd_nelmts,
@@ -804,7 +804,7 @@ done:
  */
 static herr_t
 H5Z_scaleoffset_set_parms_fillval(H5P_genplist_t *dcpl_plist,
-    const H5T_t *type, enum H5Z_scaleoffset_t scale_type,
+    H5T_t *type, enum H5Z_scaleoffset_t scale_type,
     unsigned cd_values[], int need_convert, hid_t dxpl_id)
 {
     herr_t ret_value = SUCCEED;          /* Return value */
@@ -861,7 +861,7 @@ static herr_t
 H5Z_set_local_scaleoffset(hid_t dcpl_id, hid_t type_id, hid_t space_id)
 {
     H5P_genplist_t *dcpl_plist;     /* Property list pointer */
-    const H5T_t	*type;              /* Datatype */
+    H5T_t	*type;              /* Datatype */
     const H5S_t	*ds;                /* Dataspace */
     unsigned flags;                 /* Filter flags */
     size_t cd_nelmts = H5Z_SCALEOFFSET_USER_NPARMS;  /* Number of filter parameters */
diff --git a/src/H5Ztrans.c b/src/H5Ztrans.c
index 48948a7..498db03 100644
--- a/src/H5Ztrans.c
+++ b/src/H5Ztrans.c
@@ -537,7 +537,7 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-void
+static void
 H5Z_xform_destroy_parse_tree(H5Z_node *tree)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -567,7 +567,7 @@ H5Z_xform_destroy_parse_tree(H5Z_node *tree)
  *
  *-------------------------------------------------------------------------
  */
-void *
+static void *
 H5Z_xform_parse(const char *expression, H5Z_datval_ptrs* dat_val_pointers)
 {
     H5Z_token tok;
@@ -1251,7 +1251,7 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-void *
+static void *
 H5Z_xform_copy_tree(H5Z_node* tree, H5Z_datval_ptrs* dat_val_pointers, H5Z_datval_ptrs* new_dat_val_pointers)
 {
     H5Z_node* ret_value=NULL;
@@ -1386,7 +1386,7 @@ H5Z_op_is_numbs2(H5Z_node* _tree)
  *
  *-------------------------------------------------------------------------
  */
-void
+static void
 H5Z_xform_reduce_tree(H5Z_node* tree)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -1516,7 +1516,7 @@ H5Z_xform_create(const char *expr)
      * we don't need to allocate any space since no array will have to be
      * stored */
     if(count > 0)
-	if(NULL == (data_xform_prop->dat_val_pointers->ptr_dat_val = (void *)H5MM_calloc(count * sizeof(void *))))
+	if(NULL == (data_xform_prop->dat_val_pointers->ptr_dat_val = (void **)H5MM_calloc(count * sizeof(void *))))
 	    HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate memory for pointers in transform array")
 
     /* Initialize the num_ptrs field, which will be used to keep track of the number of copies
@@ -1651,7 +1651,7 @@ H5Z_xform_copy(H5Z_data_xform_t **data_xform_prop)
 		count++;
 
 	if(count > 0)
-	    if(NULL == (new_data_xform_prop->dat_val_pointers->ptr_dat_val = (void *)H5MM_calloc(count * sizeof(void *))))
+	    if(NULL == (new_data_xform_prop->dat_val_pointers->ptr_dat_val = (void **)H5MM_calloc(count * sizeof(void *))))
 		HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory for pointers in transform array")
 
 	/* Zero out num_pointers prior to H5Z_xform_cop_tree call; that call will increment it to the right amount */
@@ -1732,11 +1732,9 @@ H5Z_xform_noop(const H5Z_data_xform_t *data_xform_prop)
  *
  *-------------------------------------------------------------------------
  */
-char *
+const char *
 H5Z_xform_extract_xform_str(const H5Z_data_xform_t *data_xform_prop)
 {
-    char* ret_value;
-
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* There should be no way that this can be NULL since the function
@@ -1744,8 +1742,6 @@ H5Z_xform_extract_xform_str(const H5Z_data_xform_t *data_xform_prop)
      * pasing them */
     assert(data_xform_prop);
 
-    ret_value = data_xform_prop->xform_exp;
-
-    FUNC_LEAVE_NOAPI(ret_value)
+    FUNC_LEAVE_NOAPI(data_xform_prop->xform_exp)
 } /* H5Z_xform_extract_xform_str() */
 
diff --git a/src/H5config.h.in b/src/H5config.h.in
index 5603476..6de4d37 100644
--- a/src/H5config.h.in
+++ b/src/H5config.h.in
@@ -1,4 +1,4 @@
-/* src/H5config.h.in.  Generated from configure.in by autoheader.  */
+/* src/H5config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Define if building universal (internal helper macro) */
 #undef AC_APPLE_UNIVERSAL_BUILD
@@ -221,6 +221,9 @@
 /* Define to 1 if you have the `sz' library (-lsz). */
 #undef HAVE_LIBSZ
 
+/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
+#undef HAVE_LIBWS2_32
+
 /* Define to 1 if you have the `z' library (-lz). */
 #undef HAVE_LIBZ
 
@@ -409,8 +412,8 @@
 /* Define if your system has window style path name. */
 #undef HAVE_WINDOW_PATH
 
-/* Define to 1 if you have the <winsock.h> header file. */
-#undef HAVE_WINSOCK_H
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
 
 /* Define to 1 if you have the <zlib.h> header file. */
 #undef HAVE_ZLIB_H
diff --git a/src/H5detect.c b/src/H5detect.c
index 98fd6ae..87a4fd5 100644
--- a/src/H5detect.c
+++ b/src/H5detect.c
@@ -648,7 +648,7 @@ H5TN_init_interface(void)\n\
 
 	/* The part common to fixed and floating types */
 	printf("\
-    if(NULL == (dt = H5T_alloc()))\n\
+    if(NULL == (dt = H5T__alloc()))\n\
         HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, \"datatype allocation failed\")\n\
     dt->shared->state = H5T_STATE_IMMUTABLE;\n\
     dt->shared->type = H5T_%s;\n\
diff --git a/src/H5private.h b/src/H5private.h
index 7d67dec..ffabac8 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -94,13 +94,13 @@
 
 /*
  * If a program may include both `time.h' and `sys/time.h' then
- * TIME_WITH_SYS_TIME is defined (see AC_HEADER_TIME in configure.in).
+ * TIME_WITH_SYS_TIME is defined (see AC_HEADER_TIME in configure.ac).
  * On some older systems, `sys/time.h' includes `time.h' but `time.h' is not
  * protected against multiple inclusion, so programs should not explicitly
  * include both files. This macro is useful in programs that use, for example,
  * `struct timeval' or `struct timezone' as well as `struct tm'.  It is best
  * used in conjunction with `HAVE_SYS_TIME_H', whose existence is checked
- * by `AC_CHECK_HEADERS(sys/time.h)' in configure.in.
+ * by `AC_CHECK_HEADERS(sys/time.h)' in configure.ac.
  */
 #if defined(H5_TIME_WITH_SYS_TIME)
 #   include <sys/time.h>
@@ -155,7 +155,7 @@
 #define WIN32_LEAN_AND_MEAN    /* Exclude rarely-used stuff from Windows headers */
 #define NOGDI                  /* Exclude Graphic Display Interface macros */
 
-#ifdef H5_HAVE_WINSOCK_H
+#ifdef H5_HAVE_WINSOCK2_H
 #include <winsock2.h>
 #endif
 
@@ -1899,15 +1899,15 @@ static herr_t    H5_INTERFACE_INIT_FUNC(void);
     H5_PUSH_FUNC                                                              \
     {
 
-/* Use the following macro as replacement for the FUNC_ENTER_PACKAGE
- * macro when the function needs to set up a metadata tag. */
-#define FUNC_ENTER_PACKAGE_TAG(dxpl_id, tag, err) {                           \
-    haddr_t prev_tag = HADDR_UNDEF;                                           \
-    hid_t tag_dxpl_id = dxpl_id;                                              \
-                                                                              \
+/* Use this macro for all "normal" staticly-scoped functions */
+#define FUNC_ENTER_STATIC {                                                   \
     FUNC_ENTER_COMMON(H5_IS_PKG(FUNC));                                       \
-    if(H5AC_tag(tag_dxpl_id, tag, &prev_tag) < 0)                             \
-        HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, err, "unable to apply metadata tag") \
+    H5_PUSH_FUNC                                                              \
+    {
+
+/* Use this macro for staticly-scoped functions which propgate errors, but don't issue them */
+#define FUNC_ENTER_STATIC_NOERR {                                             \
+    FUNC_ENTER_COMMON_NOERR(H5_IS_PKG(FUNC));                                 \
     H5_PUSH_FUNC                                                              \
     {
 
diff --git a/src/H5public.h b/src/H5public.h
index bb5895d..4844702 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -75,10 +75,10 @@ extern "C" {
 /* Version numbers */
 #define H5_VERS_MAJOR	1	/* For major interface/format changes  	     */
 #define H5_VERS_MINOR	8	/* For minor interface/format changes  	     */
-#define H5_VERS_RELEASE	9	/* For tweaks, bug-fixes, or development     */
+#define H5_VERS_RELEASE	10	/* For tweaks, bug-fixes, or development     */
 #define H5_VERS_SUBRELEASE ""	/* For pre-releases like snap0       */
 				/* Empty string for real releases.           */
-#define H5_VERS_INFO    "HDF5 library version: 1.8.9"      /* Full version string */
+#define H5_VERS_INFO    "HDF5 library version: 1.8.10"      /* Full version string */
 
 #define H5check()	H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR,	      \
 				        H5_VERS_RELEASE)
diff --git a/src/H5system.c b/src/H5system.c
index bb1d2f1..c0baee1 100644
--- a/src/H5system.c
+++ b/src/H5system.c
@@ -639,7 +639,7 @@ Wgettimeofday(struct timeval *tv, struct timezone *tz)
   return 0;
 }
 
-#ifdef H5_HAVE_WINSOCK_H
+#ifdef H5_HAVE_WINSOCK2_H
 #pragma comment(lib, "advapi32.lib")
 #endif
 
@@ -650,12 +650,12 @@ char*
 Wgetlogin()
 {
 
-#ifdef H5_HAVE_WINSOCK_H
+#ifdef H5_HAVE_WINSOCK2_H
     long bufferCount = WloginBuffer_count;
     if (GetUserName(Wlogin_buffer, &bufferCount) == 0)
         return (Wlogin_buffer);
     else
-#endif /* H5_HAVE_WINSOCK_H */
+#endif /* H5_HAVE_WINSOCK2_H */
         return NULL;
 }
 
diff --git a/src/H5trace.c b/src/H5trace.c
index ec2ac33..9d0fd5b 100644
--- a/src/H5trace.c
+++ b/src/H5trace.c
@@ -212,6 +212,7 @@ H5_trace(const double *returning, const char *func, const char *type, ...)
 	if('[' == *type) {
 	    if('a' == type[1]) {
 		asize_idx = (int)HDstrtol(type + 2, &rest, 10);
+                HDassert(0 <= asize_idx && asize_idx < (int) NELMTS(asize));
 		HDassert(']'==*rest);
 		type = rest + 1;
 	    } else {
@@ -534,6 +535,60 @@ H5_trace(const double *returning, const char *func, const char *type, ...)
                         } /* end else */
                         break;
 
+                    case 'n':
+                        if(ptr) {
+                            if(vp)
+                                fprintf(out, "0x%lx", (unsigned long)vp);
+                            else
+                                fprintf(out, "NULL");
+                        } /* end if */
+                        else {
+                            H5D_mpio_no_collective_cause_t nocol_cause_mode = (H5D_mpio_no_collective_cause_t)va_arg(ap, int);
+
+                            switch(nocol_cause_mode) {
+                                case H5D_MPIO_COLLECTIVE:
+                                    fprintf(out, "H5D_MPIO_COLLECTIVE");
+                                    break;
+
+                                case H5D_MPIO_SET_INDEPENDENT:
+                                    fprintf(out, "H5D_MPIO_SET_INDEPENDENT");
+                                    break;
+
+                                case H5D_MPIO_DATATYPE_CONVERSION:
+                                    fprintf(out, "H5D_MPIO_DATATYPE_CONVERSION");
+                                    break;
+
+                                case H5D_MPIO_DATA_TRANSFORMS:
+                                    fprintf(out, "H5D_MPIO_DATA_TRANSFORMS");
+                                    break;
+
+                                case H5D_MPIO_SET_MPIPOSIX:
+                                    fprintf(out, "H5D_MPIO_SET_MPIPOSIX");
+                                    break;
+
+                                case H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES:
+                                    fprintf(out, "H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES");
+                                    break;
+
+                                case H5D_MPIO_POINT_SELECTIONS:
+                                    fprintf(out, "H5D_MPIO_POINT_SELECTIONS");
+                                    break;
+
+                                case H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET:
+                                    fprintf(out, "H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET");
+                                    break;
+
+                                case H5D_MPIO_FILTERS:
+                                    fprintf(out, "H5D_MPIO_FILTERS");
+                                    break;
+
+                                default:
+                                    fprintf(out, "%ld", (long)nocol_cause_mode);
+                                    break;
+                            } /* end switch */
+                        } /* end else */
+                        break;
+
                     case 'o':
                         if(ptr) {
                             if(vp)
diff --git a/src/Makefile.in b/src/Makefile.in
index 161e54f..b49b344 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -36,6 +35,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,14 +72,16 @@ build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(include_HEADERS) $(srcdir)/H5config.h.in \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/libhdf5.settings.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/libhdf5.settings.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am \
 	$(top_srcdir)/config/lt_vers.am COPYING
 noinst_PROGRAMS = H5detect$(EXEEXT) H5make_libsettings$(EXEEXT)
 TESTS =
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -91,6 +109,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(settingsdir)" \
 	"$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -144,9 +168,10 @@ am_libhdf5_la_OBJECTS = H5.lo H5checksum.lo H5dbg.lo H5system.lo \
 	H5Znbit.lo H5Zshuffle.lo H5Zszip.lo H5Zscaleoffset.lo \
 	H5Ztrans.lo
 libhdf5_la_OBJECTS = $(am_libhdf5_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libhdf5_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(libhdf5_la_LDFLAGS) $(LDFLAGS) -o $@
@@ -160,6 +185,18 @@ H5detect_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 H5make_libsettings_SOURCES = H5make_libsettings.c
 H5make_libsettings_OBJECTS = H5make_libsettings.$(OBJEXT)
 H5make_libsettings_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -170,32 +207,35 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libhdf5_la_SOURCES) H5detect.c H5make_libsettings.c
 DIST_SOURCES = $(libhdf5_la_SOURCES) H5detect.c H5make_libsettings.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(settings_DATA)
 HEADERS = $(include_HEADERS)
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -213,12 +253,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -480,7 +517,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 7
-LT_VERS_REVISION = 3
+LT_VERS_REVISION = 4
 LT_VERS_AGE = 0
 H5detect_CFLAGS = -g $(AM_CFLAGS)
 
@@ -586,6 +623,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -616,6 +657,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -627,10 +669,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 H5config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
+	@if test ! -f $@; then rm -f stamp-h1; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/H5config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -646,7 +686,6 @@ libhdf5.settings: $(top_builddir)/config.status $(srcdir)/libhdf5.settings.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -654,6 +693,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -669,13 +710,15 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libhdf5.la: $(libhdf5_la_OBJECTS) $(libhdf5_la_DEPENDENCIES) 
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libhdf5.la: $(libhdf5_la_OBJECTS) $(libhdf5_la_DEPENDENCIES) $(EXTRA_libhdf5_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(libhdf5_la_LINK) -rpath $(libdir) $(libhdf5_la_OBJECTS) $(libhdf5_la_LIBADD) $(LIBS)
 
 clean-noinstPROGRAMS:
@@ -686,10 +729,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-H5detect$(EXEEXT): $(H5detect_OBJECTS) $(H5detect_DEPENDENCIES) 
+H5detect$(EXEEXT): $(H5detect_OBJECTS) $(H5detect_DEPENDENCIES) $(EXTRA_H5detect_DEPENDENCIES) 
 	@rm -f H5detect$(EXEEXT)
 	$(AM_V_CCLD)$(H5detect_LINK) $(H5detect_OBJECTS) $(H5detect_LDADD) $(LIBS)
-H5make_libsettings$(EXEEXT): $(H5make_libsettings_OBJECTS) $(H5make_libsettings_DEPENDENCIES) 
+H5make_libsettings$(EXEEXT): $(H5make_libsettings_OBJECTS) $(H5make_libsettings_DEPENDENCIES) $(EXTRA_H5make_libsettings_DEPENDENCIES) 
 	@rm -f H5make_libsettings$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(H5make_libsettings_OBJECTS) $(H5make_libsettings_LDADD) $(LIBS)
 
@@ -944,42 +987,37 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 H5detect-H5detect.o: H5detect.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -MT H5detect-H5detect.o -MD -MP -MF $(DEPDIR)/H5detect-H5detect.Tpo -c -o H5detect-H5detect.o `test -f 'H5detect.c' || echo '$(srcdir)/'`H5detect.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/H5detect-H5detect.Tpo $(DEPDIR)/H5detect-H5detect.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='H5detect.c' object='H5detect-H5detect.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='H5detect.c' object='H5detect-H5detect.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -c -o H5detect-H5detect.o `test -f 'H5detect.c' || echo '$(srcdir)/'`H5detect.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -c -o H5detect-H5detect.o `test -f 'H5detect.c' || echo '$(srcdir)/'`H5detect.c
 
 H5detect-H5detect.obj: H5detect.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -MT H5detect-H5detect.obj -MD -MP -MF $(DEPDIR)/H5detect-H5detect.Tpo -c -o H5detect-H5detect.obj `if test -f 'H5detect.c'; then $(CYGPATH_W) 'H5detect.c'; else $(CYGPATH_W) '$(srcdir)/H5detect.c'; fi`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/H5detect-H5detect.Tpo $(DEPDIR)/H5detect-H5detect.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='H5detect.c' object='H5detect-H5detect.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='H5detect.c' object='H5detect-H5detect.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -c -o H5detect-H5detect.obj `if test -f 'H5detect.c'; then $(CYGPATH_W) 'H5detect.c'; else $(CYGPATH_W) '$(srcdir)/H5detect.c'; fi`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -c -o H5detect-H5detect.obj `if test -f 'H5detect.c'; then $(CYGPATH_W) 'H5detect.c'; else $(CYGPATH_W) '$(srcdir)/H5detect.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -988,8 +1026,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-settingsDATA: $(settings_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(settingsdir)" || $(MKDIR_P) "$(DESTDIR)$(settingsdir)"
 	@list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(settingsdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(settingsdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -1003,13 +1044,14 @@ uninstall-settingsDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(settingsdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(settingsdir)" && rm -f $$files
+	dir='$(DESTDIR)$(settingsdir)'; $(am__uninstall_files_from_dir)
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -1023,9 +1065,7 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -1076,6 +1116,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -1128,10 +1182,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -1221,19 +1280,20 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-generic clean-libLTLIBRARIES clean-libtool \
-	clean-noinstPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-hdr distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-includeHEADERS install-info \
-	install-info-am install-libLTLIBRARIES install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-settingsDATA \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+	clean-noinstPROGRAMS cscopelist ctags distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am \
+	install-includeHEADERS install-info install-info-am \
+	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-settingsDATA install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-includeHEADERS uninstall-libLTLIBRARIES \
 	uninstall-settingsDATA
 
 
@@ -1323,7 +1383,7 @@ trace: $(libhdf5_la_SOURCES)
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -1349,7 +1409,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -1373,7 +1433,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -1383,7 +1443,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1473,7 +1533,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1503,7 +1563,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 36d6ca4..d6ffe42 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_TEST)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
 SET (TEST_LIB_SRCS
diff --git a/test/Makefile.am b/test/Makefile.am
index e2ad3fa..5a4e390 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -108,11 +108,11 @@ CHECK_CLEANFILES+=accum.h5 cmpd_dset.h5 compact_dataset.h5 dataset.h5 dset_offse
     max_compact_dataset.h5 simple.h5 set_local.h5 random_chunks.h5 \
     huge_chunks.h5 chunk_cache.h5 big_chunk.h5 chunk_expand.h5 \
     copy_dcpl_newfile.h5 extend.h5 istore.h5 extlinks*.h5 frspace.h5 links*.h5 \
-    sys_file1 tfile[1-5].h5 th5s[1-4].h5 lheap.h5 fheap.h5 ohdr.h5 \
+    sys_file1 tfile[1-6].h5 th5s[1-4].h5 lheap.h5 fheap.h5 ohdr.h5 \
     stab.h5 extern_[1-3].h5 extern_[1-4][ab].raw gheap[0-4].h5 \
     dt_arith[1-2] links.h5 links[0-6]*.h5 extlinks[0-15].h5 tmp \
     big.data big[0-9][0-9][0-9][0-9][0-9].h5  \
-    stdio.h5 sec2.h5 dtypes[0-9].h5 dt_arith[1-2].h5 tattr.h5        \
+    stdio.h5 sec2.h5 dtypes[0-9].h5 dtypes1[0].h5 dt_arith[1-2].h5 tattr.h5 \
     tselect.h5 mtime.h5 unlink.h5 unicode.h5 coord.h5 \
     fillval_[0-9].h5 fillval.raw mount_[0-9].h5 testmeta.h5 ttime.h5 \
     trefer[1-3].h5 tvltypes.h5 tvlstr.h5 tvlstr2.h5 flush.h5         \
@@ -126,7 +126,9 @@ CHECK_CLEANFILES+=accum.h5 cmpd_dset.h5 compact_dataset.h5 dataset.h5 dset_offse
     unlink_chunked.h5 btree2.h5 objcopy_src.h5 objcopy_dst.h5        \
     objcopy_ext.dat trefer1.h5 trefer2.h5 app_ref.h5 tcheck_version_*.out \
     tcheck_version_*.err efc[0-5].h5 log_vfd_out.log \
-    new_multi_file_v16-r.h5 new_multi_file_v16-s.h5
+    new_multi_file_v16-r.h5 new_multi_file_v16-s.h5 \
+    split_get_file_image_test-m.h5 split_get_file_image_test-r.h5    \
+    file_image_core_test.h5.copy
 
 # Sources for testhdf5 executable
 testhdf5_SOURCES=testhdf5.c tarray.c tattr.c tchecksum.c tconfig.c tfile.c \
diff --git a/test/Makefile.in b/test/Makefile.in
index 736b61d..a2a1df9 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -34,6 +33,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,16 +71,18 @@ host_triplet = @host@
 DIST_COMMON = $(srcdir)/H5srcdir_str.h.in $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/testcheck_version.sh.in \
 	$(srcdir)/testerror.sh.in $(srcdir)/testlibinfo.sh.in \
-	$(srcdir)/testlinks_env.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/testlinks_env.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 check_PROGRAMS = $(am__EXEEXT_1) error_test$(EXEEXT) \
 	err_compat$(EXEEXT) tcheck_version$(EXEEXT) testmeta$(EXEEXT) \
 	links_env$(EXEEXT)
 @BUILD_ALL_CONDITIONAL_TRUE at noinst_PROGRAMS = $(am__EXEEXT_2)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -76,9 +94,10 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
 libh5test_la_LIBADD =
 am_libh5test_la_OBJECTS = h5test.lo testframe.lo cache_common.lo
 libh5test_la_OBJECTS = $(am_libh5test_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 am__EXEEXT_1 = testhdf5$(EXEEXT) lheap$(EXEEXT) ohdr$(EXEEXT) \
 	stab$(EXEEXT) gheap$(EXEEXT) cache$(EXEEXT) cache_api$(EXEEXT) \
 	pool$(EXEEXT) accum$(EXEEXT) hyperslab$(EXEEXT) \
@@ -380,6 +399,18 @@ vfd_SOURCES = vfd.c
 vfd_OBJECTS = vfd.$(OBJEXT)
 vfd_LDADD = $(LDADD)
 vfd_DEPENDENCIES = libh5test.la $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -390,22 +421,18 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libh5test_la_SOURCES) accum.c app_ref.c big.c bittests.c \
 	btree2.c cache.c cache_api.c cmpd_dset.c cross_read.c dangle.c \
 	dsets.c dt_arith.c dtransform.c dtypes.c efc.c enum.c \
@@ -434,12 +461,19 @@ DIST_SOURCES = $(libh5test_la_SOURCES) accum.c app_ref.c big.c \
 	ntypes.c objcopy.c ohdr.c pool.c reserved.c set_extent.c \
 	space_overflow.c stab.c tcheck_version.c $(testhdf5_SOURCES) \
 	testmeta.c $(ttsafe_SOURCES) unlink.c vfd.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -457,12 +491,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -730,26 +761,28 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog accum.h5 cmpd_dset.h5 \
 	max_compact_dataset.h5 simple.h5 set_local.h5 random_chunks.h5 \
 	huge_chunks.h5 chunk_cache.h5 big_chunk.h5 chunk_expand.h5 \
 	copy_dcpl_newfile.h5 extend.h5 istore.h5 extlinks*.h5 \
-	frspace.h5 links*.h5 sys_file1 tfile[1-5].h5 th5s[1-4].h5 \
+	frspace.h5 links*.h5 sys_file1 tfile[1-6].h5 th5s[1-4].h5 \
 	lheap.h5 fheap.h5 ohdr.h5 stab.h5 extern_[1-3].h5 \
 	extern_[1-4][ab].raw gheap[0-4].h5 dt_arith[1-2] links.h5 \
 	links[0-6]*.h5 extlinks[0-15].h5 tmp big.data \
 	big[0-9][0-9][0-9][0-9][0-9].h5 stdio.h5 sec2.h5 \
-	dtypes[0-9].h5 dt_arith[1-2].h5 tattr.h5 tselect.h5 mtime.h5 \
-	unlink.h5 unicode.h5 coord.h5 fillval_[0-9].h5 fillval.raw \
-	mount_[0-9].h5 testmeta.h5 ttime.h5 trefer[1-3].h5 tvltypes.h5 \
-	tvlstr.h5 tvlstr2.h5 flush.h5 enum1.h5 titerate.h5 ttsafe.h5 \
-	tarray1.h5 tgenprop.h5 tmisc[0-9]*.h5 set_extent[1-5].h5 \
-	ext[12].bin getname.h5 getname[1-3].h5 sec2_file.h5 \
-	direct_file.h5 family_file000[0-3][0-9].h5 \
-	new_family_v16_000[0-3][0-9].h5 multi_file-[rs].h5 core_file \
-	new_move_[ab].h5 ntypes.h5 dangle.h5 error_test.h5 \
-	err_compat.h5 dtransform.h5 test_filters.h5 get_file_name.h5 \
-	tstint[1-2].h5 unlink_chunked.h5 btree2.h5 objcopy_src.h5 \
-	objcopy_dst.h5 objcopy_ext.dat trefer1.h5 trefer2.h5 \
-	app_ref.h5 tcheck_version_*.out tcheck_version_*.err \
-	efc[0-5].h5 log_vfd_out.log new_multi_file_v16-r.h5 \
-	new_multi_file_v16-s.h5
+	dtypes[0-9].h5 dtypes1[0].h5 dt_arith[1-2].h5 tattr.h5 \
+	tselect.h5 mtime.h5 unlink.h5 unicode.h5 coord.h5 \
+	fillval_[0-9].h5 fillval.raw mount_[0-9].h5 testmeta.h5 \
+	ttime.h5 trefer[1-3].h5 tvltypes.h5 tvlstr.h5 tvlstr2.h5 \
+	flush.h5 enum1.h5 titerate.h5 ttsafe.h5 tarray1.h5 tgenprop.h5 \
+	tmisc[0-9]*.h5 set_extent[1-5].h5 ext[12].bin getname.h5 \
+	getname[1-3].h5 sec2_file.h5 direct_file.h5 \
+	family_file000[0-3][0-9].h5 new_family_v16_000[0-3][0-9].h5 \
+	multi_file-[rs].h5 core_file new_move_[ab].h5 ntypes.h5 \
+	dangle.h5 error_test.h5 err_compat.h5 dtransform.h5 \
+	test_filters.h5 get_file_name.h5 tstint[1-2].h5 \
+	unlink_chunked.h5 btree2.h5 objcopy_src.h5 objcopy_dst.h5 \
+	objcopy_ext.dat trefer1.h5 trefer2.h5 app_ref.h5 \
+	tcheck_version_*.out tcheck_version_*.err efc[0-5].h5 \
+	log_vfd_out.log new_multi_file_v16-r.h5 \
+	new_multi_file_v16-s.h5 split_get_file_image_test-m.h5 \
+	split_get_file_image_test-r.h5 file_image_core_test.h5.copy
 INCLUDES = -I$(top_srcdir)/src -I$(top_builddir)/src
 
 # Test script for error_test and err_compat
@@ -821,6 +854,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -850,6 +887,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -872,13 +910,15 @@ testlinks_env.sh: $(top_builddir)/config.status $(srcdir)/testlinks_env.sh.in
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libh5test.la: $(libh5test_la_OBJECTS) $(libh5test_la_DEPENDENCIES) 
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libh5test.la: $(libh5test_la_OBJECTS) $(libh5test_la_DEPENDENCIES) $(EXTRA_libh5test_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK)  $(libh5test_la_OBJECTS) $(libh5test_la_LIBADD) $(LIBS)
 
 clean-checkPROGRAMS:
@@ -898,205 +938,205 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-accum$(EXEEXT): $(accum_OBJECTS) $(accum_DEPENDENCIES) 
+accum$(EXEEXT): $(accum_OBJECTS) $(accum_DEPENDENCIES) $(EXTRA_accum_DEPENDENCIES) 
 	@rm -f accum$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(accum_OBJECTS) $(accum_LDADD) $(LIBS)
-app_ref$(EXEEXT): $(app_ref_OBJECTS) $(app_ref_DEPENDENCIES) 
+app_ref$(EXEEXT): $(app_ref_OBJECTS) $(app_ref_DEPENDENCIES) $(EXTRA_app_ref_DEPENDENCIES) 
 	@rm -f app_ref$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(app_ref_OBJECTS) $(app_ref_LDADD) $(LIBS)
-big$(EXEEXT): $(big_OBJECTS) $(big_DEPENDENCIES) 
+big$(EXEEXT): $(big_OBJECTS) $(big_DEPENDENCIES) $(EXTRA_big_DEPENDENCIES) 
 	@rm -f big$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(big_OBJECTS) $(big_LDADD) $(LIBS)
-bittests$(EXEEXT): $(bittests_OBJECTS) $(bittests_DEPENDENCIES) 
+bittests$(EXEEXT): $(bittests_OBJECTS) $(bittests_DEPENDENCIES) $(EXTRA_bittests_DEPENDENCIES) 
 	@rm -f bittests$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(bittests_OBJECTS) $(bittests_LDADD) $(LIBS)
-btree2$(EXEEXT): $(btree2_OBJECTS) $(btree2_DEPENDENCIES) 
+btree2$(EXEEXT): $(btree2_OBJECTS) $(btree2_DEPENDENCIES) $(EXTRA_btree2_DEPENDENCIES) 
 	@rm -f btree2$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(btree2_OBJECTS) $(btree2_LDADD) $(LIBS)
-cache$(EXEEXT): $(cache_OBJECTS) $(cache_DEPENDENCIES) 
+cache$(EXEEXT): $(cache_OBJECTS) $(cache_DEPENDENCIES) $(EXTRA_cache_DEPENDENCIES) 
 	@rm -f cache$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(cache_OBJECTS) $(cache_LDADD) $(LIBS)
-cache_api$(EXEEXT): $(cache_api_OBJECTS) $(cache_api_DEPENDENCIES) 
+cache_api$(EXEEXT): $(cache_api_OBJECTS) $(cache_api_DEPENDENCIES) $(EXTRA_cache_api_DEPENDENCIES) 
 	@rm -f cache_api$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(cache_api_OBJECTS) $(cache_api_LDADD) $(LIBS)
-cmpd_dset$(EXEEXT): $(cmpd_dset_OBJECTS) $(cmpd_dset_DEPENDENCIES) 
+cmpd_dset$(EXEEXT): $(cmpd_dset_OBJECTS) $(cmpd_dset_DEPENDENCIES) $(EXTRA_cmpd_dset_DEPENDENCIES) 
 	@rm -f cmpd_dset$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(cmpd_dset_OBJECTS) $(cmpd_dset_LDADD) $(LIBS)
-cross_read$(EXEEXT): $(cross_read_OBJECTS) $(cross_read_DEPENDENCIES) 
+cross_read$(EXEEXT): $(cross_read_OBJECTS) $(cross_read_DEPENDENCIES) $(EXTRA_cross_read_DEPENDENCIES) 
 	@rm -f cross_read$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(cross_read_OBJECTS) $(cross_read_LDADD) $(LIBS)
-dangle$(EXEEXT): $(dangle_OBJECTS) $(dangle_DEPENDENCIES) 
+dangle$(EXEEXT): $(dangle_OBJECTS) $(dangle_DEPENDENCIES) $(EXTRA_dangle_DEPENDENCIES) 
 	@rm -f dangle$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dangle_OBJECTS) $(dangle_LDADD) $(LIBS)
-dsets$(EXEEXT): $(dsets_OBJECTS) $(dsets_DEPENDENCIES) 
+dsets$(EXEEXT): $(dsets_OBJECTS) $(dsets_DEPENDENCIES) $(EXTRA_dsets_DEPENDENCIES) 
 	@rm -f dsets$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dsets_OBJECTS) $(dsets_LDADD) $(LIBS)
-dt_arith$(EXEEXT): $(dt_arith_OBJECTS) $(dt_arith_DEPENDENCIES) 
+dt_arith$(EXEEXT): $(dt_arith_OBJECTS) $(dt_arith_DEPENDENCIES) $(EXTRA_dt_arith_DEPENDENCIES) 
 	@rm -f dt_arith$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dt_arith_OBJECTS) $(dt_arith_LDADD) $(LIBS)
-dtransform$(EXEEXT): $(dtransform_OBJECTS) $(dtransform_DEPENDENCIES) 
+dtransform$(EXEEXT): $(dtransform_OBJECTS) $(dtransform_DEPENDENCIES) $(EXTRA_dtransform_DEPENDENCIES) 
 	@rm -f dtransform$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dtransform_OBJECTS) $(dtransform_LDADD) $(LIBS)
-dtypes$(EXEEXT): $(dtypes_OBJECTS) $(dtypes_DEPENDENCIES) 
+dtypes$(EXEEXT): $(dtypes_OBJECTS) $(dtypes_DEPENDENCIES) $(EXTRA_dtypes_DEPENDENCIES) 
 	@rm -f dtypes$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dtypes_OBJECTS) $(dtypes_LDADD) $(LIBS)
-efc$(EXEEXT): $(efc_OBJECTS) $(efc_DEPENDENCIES) 
+efc$(EXEEXT): $(efc_OBJECTS) $(efc_DEPENDENCIES) $(EXTRA_efc_DEPENDENCIES) 
 	@rm -f efc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(efc_OBJECTS) $(efc_LDADD) $(LIBS)
-enum$(EXEEXT): $(enum_OBJECTS) $(enum_DEPENDENCIES) 
+enum$(EXEEXT): $(enum_OBJECTS) $(enum_DEPENDENCIES) $(EXTRA_enum_DEPENDENCIES) 
 	@rm -f enum$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(enum_OBJECTS) $(enum_LDADD) $(LIBS)
-err_compat$(EXEEXT): $(err_compat_OBJECTS) $(err_compat_DEPENDENCIES) 
+err_compat$(EXEEXT): $(err_compat_OBJECTS) $(err_compat_DEPENDENCIES) $(EXTRA_err_compat_DEPENDENCIES) 
 	@rm -f err_compat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(err_compat_OBJECTS) $(err_compat_LDADD) $(LIBS)
-error_test$(EXEEXT): $(error_test_OBJECTS) $(error_test_DEPENDENCIES) 
+error_test$(EXEEXT): $(error_test_OBJECTS) $(error_test_DEPENDENCIES) $(EXTRA_error_test_DEPENDENCIES) 
 	@rm -f error_test$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(error_test_OBJECTS) $(error_test_LDADD) $(LIBS)
-extend$(EXEEXT): $(extend_OBJECTS) $(extend_DEPENDENCIES) 
+extend$(EXEEXT): $(extend_OBJECTS) $(extend_DEPENDENCIES) $(EXTRA_extend_DEPENDENCIES) 
 	@rm -f extend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(extend_OBJECTS) $(extend_LDADD) $(LIBS)
-external$(EXEEXT): $(external_OBJECTS) $(external_DEPENDENCIES) 
+external$(EXEEXT): $(external_OBJECTS) $(external_DEPENDENCIES) $(EXTRA_external_DEPENDENCIES) 
 	@rm -f external$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(external_OBJECTS) $(external_LDADD) $(LIBS)
-fheap$(EXEEXT): $(fheap_OBJECTS) $(fheap_DEPENDENCIES) 
+fheap$(EXEEXT): $(fheap_OBJECTS) $(fheap_DEPENDENCIES) $(EXTRA_fheap_DEPENDENCIES) 
 	@rm -f fheap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fheap_OBJECTS) $(fheap_LDADD) $(LIBS)
-file_image$(EXEEXT): $(file_image_OBJECTS) $(file_image_DEPENDENCIES) 
+file_image$(EXEEXT): $(file_image_OBJECTS) $(file_image_DEPENDENCIES) $(EXTRA_file_image_DEPENDENCIES) 
 	@rm -f file_image$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(file_image_OBJECTS) $(file_image_LDADD) $(LIBS)
-fillval$(EXEEXT): $(fillval_OBJECTS) $(fillval_DEPENDENCIES) 
+fillval$(EXEEXT): $(fillval_OBJECTS) $(fillval_DEPENDENCIES) $(EXTRA_fillval_DEPENDENCIES) 
 	@rm -f fillval$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fillval_OBJECTS) $(fillval_LDADD) $(LIBS)
-filter_fail$(EXEEXT): $(filter_fail_OBJECTS) $(filter_fail_DEPENDENCIES) 
+filter_fail$(EXEEXT): $(filter_fail_OBJECTS) $(filter_fail_DEPENDENCIES) $(EXTRA_filter_fail_DEPENDENCIES) 
 	@rm -f filter_fail$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(filter_fail_OBJECTS) $(filter_fail_LDADD) $(LIBS)
-flush1$(EXEEXT): $(flush1_OBJECTS) $(flush1_DEPENDENCIES) 
+flush1$(EXEEXT): $(flush1_OBJECTS) $(flush1_DEPENDENCIES) $(EXTRA_flush1_DEPENDENCIES) 
 	@rm -f flush1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(flush1_OBJECTS) $(flush1_LDADD) $(LIBS)
-flush2$(EXEEXT): $(flush2_OBJECTS) $(flush2_DEPENDENCIES) 
+flush2$(EXEEXT): $(flush2_OBJECTS) $(flush2_DEPENDENCIES) $(EXTRA_flush2_DEPENDENCIES) 
 	@rm -f flush2$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(flush2_OBJECTS) $(flush2_LDADD) $(LIBS)
-freespace$(EXEEXT): $(freespace_OBJECTS) $(freespace_DEPENDENCIES) 
+freespace$(EXEEXT): $(freespace_OBJECTS) $(freespace_DEPENDENCIES) $(EXTRA_freespace_DEPENDENCIES) 
 	@rm -f freespace$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(freespace_OBJECTS) $(freespace_LDADD) $(LIBS)
-gen_bad_ohdr$(EXEEXT): $(gen_bad_ohdr_OBJECTS) $(gen_bad_ohdr_DEPENDENCIES) 
+gen_bad_ohdr$(EXEEXT): $(gen_bad_ohdr_OBJECTS) $(gen_bad_ohdr_DEPENDENCIES) $(EXTRA_gen_bad_ohdr_DEPENDENCIES) 
 	@rm -f gen_bad_ohdr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_bad_ohdr_OBJECTS) $(gen_bad_ohdr_LDADD) $(LIBS)
-gen_bogus$(EXEEXT): $(gen_bogus_OBJECTS) $(gen_bogus_DEPENDENCIES) 
+gen_bogus$(EXEEXT): $(gen_bogus_OBJECTS) $(gen_bogus_DEPENDENCIES) $(EXTRA_gen_bogus_DEPENDENCIES) 
 	@rm -f gen_bogus$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_bogus_OBJECTS) $(gen_bogus_LDADD) $(LIBS)
-gen_cross$(EXEEXT): $(gen_cross_OBJECTS) $(gen_cross_DEPENDENCIES) 
+gen_cross$(EXEEXT): $(gen_cross_OBJECTS) $(gen_cross_DEPENDENCIES) $(EXTRA_gen_cross_DEPENDENCIES) 
 	@rm -f gen_cross$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_cross_OBJECTS) $(gen_cross_LDADD) $(LIBS)
-gen_deflate$(EXEEXT): $(gen_deflate_OBJECTS) $(gen_deflate_DEPENDENCIES) 
+gen_deflate$(EXEEXT): $(gen_deflate_OBJECTS) $(gen_deflate_DEPENDENCIES) $(EXTRA_gen_deflate_DEPENDENCIES) 
 	@rm -f gen_deflate$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_deflate_OBJECTS) $(gen_deflate_LDADD) $(LIBS)
-gen_file_image$(EXEEXT): $(gen_file_image_OBJECTS) $(gen_file_image_DEPENDENCIES) 
+gen_file_image$(EXEEXT): $(gen_file_image_OBJECTS) $(gen_file_image_DEPENDENCIES) $(EXTRA_gen_file_image_DEPENDENCIES) 
 	@rm -f gen_file_image$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_file_image_OBJECTS) $(gen_file_image_LDADD) $(LIBS)
-gen_filters$(EXEEXT): $(gen_filters_OBJECTS) $(gen_filters_DEPENDENCIES) 
+gen_filters$(EXEEXT): $(gen_filters_OBJECTS) $(gen_filters_DEPENDENCIES) $(EXTRA_gen_filters_DEPENDENCIES) 
 	@rm -f gen_filters$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_filters_OBJECTS) $(gen_filters_LDADD) $(LIBS)
-gen_idx$(EXEEXT): $(gen_idx_OBJECTS) $(gen_idx_DEPENDENCIES) 
+gen_idx$(EXEEXT): $(gen_idx_OBJECTS) $(gen_idx_DEPENDENCIES) $(EXTRA_gen_idx_DEPENDENCIES) 
 	@rm -f gen_idx$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_idx_OBJECTS) $(gen_idx_LDADD) $(LIBS)
-gen_new_array$(EXEEXT): $(gen_new_array_OBJECTS) $(gen_new_array_DEPENDENCIES) 
+gen_new_array$(EXEEXT): $(gen_new_array_OBJECTS) $(gen_new_array_DEPENDENCIES) $(EXTRA_gen_new_array_DEPENDENCIES) 
 	@rm -f gen_new_array$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_new_array_OBJECTS) $(gen_new_array_LDADD) $(LIBS)
-gen_new_fill$(EXEEXT): $(gen_new_fill_OBJECTS) $(gen_new_fill_DEPENDENCIES) 
+gen_new_fill$(EXEEXT): $(gen_new_fill_OBJECTS) $(gen_new_fill_DEPENDENCIES) $(EXTRA_gen_new_fill_DEPENDENCIES) 
 	@rm -f gen_new_fill$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_new_fill_OBJECTS) $(gen_new_fill_LDADD) $(LIBS)
-gen_new_group$(EXEEXT): $(gen_new_group_OBJECTS) $(gen_new_group_DEPENDENCIES) 
+gen_new_group$(EXEEXT): $(gen_new_group_OBJECTS) $(gen_new_group_DEPENDENCIES) $(EXTRA_gen_new_group_DEPENDENCIES) 
 	@rm -f gen_new_group$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_new_group_OBJECTS) $(gen_new_group_LDADD) $(LIBS)
-gen_new_mtime$(EXEEXT): $(gen_new_mtime_OBJECTS) $(gen_new_mtime_DEPENDENCIES) 
+gen_new_mtime$(EXEEXT): $(gen_new_mtime_OBJECTS) $(gen_new_mtime_DEPENDENCIES) $(EXTRA_gen_new_mtime_DEPENDENCIES) 
 	@rm -f gen_new_mtime$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_new_mtime_OBJECTS) $(gen_new_mtime_LDADD) $(LIBS)
-gen_new_super$(EXEEXT): $(gen_new_super_OBJECTS) $(gen_new_super_DEPENDENCIES) 
+gen_new_super$(EXEEXT): $(gen_new_super_OBJECTS) $(gen_new_super_DEPENDENCIES) $(EXTRA_gen_new_super_DEPENDENCIES) 
 	@rm -f gen_new_super$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_new_super_OBJECTS) $(gen_new_super_LDADD) $(LIBS)
-gen_noencoder$(EXEEXT): $(gen_noencoder_OBJECTS) $(gen_noencoder_DEPENDENCIES) 
+gen_noencoder$(EXEEXT): $(gen_noencoder_OBJECTS) $(gen_noencoder_DEPENDENCIES) $(EXTRA_gen_noencoder_DEPENDENCIES) 
 	@rm -f gen_noencoder$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_noencoder_OBJECTS) $(gen_noencoder_LDADD) $(LIBS)
-gen_nullspace$(EXEEXT): $(gen_nullspace_OBJECTS) $(gen_nullspace_DEPENDENCIES) 
+gen_nullspace$(EXEEXT): $(gen_nullspace_OBJECTS) $(gen_nullspace_DEPENDENCIES) $(EXTRA_gen_nullspace_DEPENDENCIES) 
 	@rm -f gen_nullspace$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_nullspace_OBJECTS) $(gen_nullspace_LDADD) $(LIBS)
-gen_sizes_lheap$(EXEEXT): $(gen_sizes_lheap_OBJECTS) $(gen_sizes_lheap_DEPENDENCIES) 
+gen_sizes_lheap$(EXEEXT): $(gen_sizes_lheap_OBJECTS) $(gen_sizes_lheap_DEPENDENCIES) $(EXTRA_gen_sizes_lheap_DEPENDENCIES) 
 	@rm -f gen_sizes_lheap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_sizes_lheap_OBJECTS) $(gen_sizes_lheap_LDADD) $(LIBS)
-gen_udlinks$(EXEEXT): $(gen_udlinks_OBJECTS) $(gen_udlinks_DEPENDENCIES) 
+gen_udlinks$(EXEEXT): $(gen_udlinks_OBJECTS) $(gen_udlinks_DEPENDENCIES) $(EXTRA_gen_udlinks_DEPENDENCIES) 
 	@rm -f gen_udlinks$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gen_udlinks_OBJECTS) $(gen_udlinks_LDADD) $(LIBS)
-getname$(EXEEXT): $(getname_OBJECTS) $(getname_DEPENDENCIES) 
+getname$(EXEEXT): $(getname_OBJECTS) $(getname_DEPENDENCIES) $(EXTRA_getname_DEPENDENCIES) 
 	@rm -f getname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getname_OBJECTS) $(getname_LDADD) $(LIBS)
-gheap$(EXEEXT): $(gheap_OBJECTS) $(gheap_DEPENDENCIES) 
+gheap$(EXEEXT): $(gheap_OBJECTS) $(gheap_DEPENDENCIES) $(EXTRA_gheap_DEPENDENCIES) 
 	@rm -f gheap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gheap_OBJECTS) $(gheap_LDADD) $(LIBS)
-hyperslab$(EXEEXT): $(hyperslab_OBJECTS) $(hyperslab_DEPENDENCIES) 
+hyperslab$(EXEEXT): $(hyperslab_OBJECTS) $(hyperslab_DEPENDENCIES) $(EXTRA_hyperslab_DEPENDENCIES) 
 	@rm -f hyperslab$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(hyperslab_OBJECTS) $(hyperslab_LDADD) $(LIBS)
-istore$(EXEEXT): $(istore_OBJECTS) $(istore_DEPENDENCIES) 
+istore$(EXEEXT): $(istore_OBJECTS) $(istore_DEPENDENCIES) $(EXTRA_istore_DEPENDENCIES) 
 	@rm -f istore$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(istore_OBJECTS) $(istore_LDADD) $(LIBS)
-lheap$(EXEEXT): $(lheap_OBJECTS) $(lheap_DEPENDENCIES) 
+lheap$(EXEEXT): $(lheap_OBJECTS) $(lheap_DEPENDENCIES) $(EXTRA_lheap_DEPENDENCIES) 
 	@rm -f lheap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lheap_OBJECTS) $(lheap_LDADD) $(LIBS)
-links$(EXEEXT): $(links_OBJECTS) $(links_DEPENDENCIES) 
+links$(EXEEXT): $(links_OBJECTS) $(links_DEPENDENCIES) $(EXTRA_links_DEPENDENCIES) 
 	@rm -f links$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(links_OBJECTS) $(links_LDADD) $(LIBS)
-links_env$(EXEEXT): $(links_env_OBJECTS) $(links_env_DEPENDENCIES) 
+links_env$(EXEEXT): $(links_env_OBJECTS) $(links_env_DEPENDENCIES) $(EXTRA_links_env_DEPENDENCIES) 
 	@rm -f links_env$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(links_env_OBJECTS) $(links_env_LDADD) $(LIBS)
-mf$(EXEEXT): $(mf_OBJECTS) $(mf_DEPENDENCIES) 
+mf$(EXEEXT): $(mf_OBJECTS) $(mf_DEPENDENCIES) $(EXTRA_mf_DEPENDENCIES) 
 	@rm -f mf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mf_OBJECTS) $(mf_LDADD) $(LIBS)
-mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) 
+mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) $(EXTRA_mount_DEPENDENCIES) 
 	@rm -f mount$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mount_OBJECTS) $(mount_LDADD) $(LIBS)
-mtime$(EXEEXT): $(mtime_OBJECTS) $(mtime_DEPENDENCIES) 
+mtime$(EXEEXT): $(mtime_OBJECTS) $(mtime_DEPENDENCIES) $(EXTRA_mtime_DEPENDENCIES) 
 	@rm -f mtime$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mtime_OBJECTS) $(mtime_LDADD) $(LIBS)
-ntypes$(EXEEXT): $(ntypes_OBJECTS) $(ntypes_DEPENDENCIES) 
+ntypes$(EXEEXT): $(ntypes_OBJECTS) $(ntypes_DEPENDENCIES) $(EXTRA_ntypes_DEPENDENCIES) 
 	@rm -f ntypes$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ntypes_OBJECTS) $(ntypes_LDADD) $(LIBS)
-objcopy$(EXEEXT): $(objcopy_OBJECTS) $(objcopy_DEPENDENCIES) 
+objcopy$(EXEEXT): $(objcopy_OBJECTS) $(objcopy_DEPENDENCIES) $(EXTRA_objcopy_DEPENDENCIES) 
 	@rm -f objcopy$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(objcopy_OBJECTS) $(objcopy_LDADD) $(LIBS)
-ohdr$(EXEEXT): $(ohdr_OBJECTS) $(ohdr_DEPENDENCIES) 
+ohdr$(EXEEXT): $(ohdr_OBJECTS) $(ohdr_DEPENDENCIES) $(EXTRA_ohdr_DEPENDENCIES) 
 	@rm -f ohdr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ohdr_OBJECTS) $(ohdr_LDADD) $(LIBS)
-pool$(EXEEXT): $(pool_OBJECTS) $(pool_DEPENDENCIES) 
+pool$(EXEEXT): $(pool_OBJECTS) $(pool_DEPENDENCIES) $(EXTRA_pool_DEPENDENCIES) 
 	@rm -f pool$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pool_OBJECTS) $(pool_LDADD) $(LIBS)
-reserved$(EXEEXT): $(reserved_OBJECTS) $(reserved_DEPENDENCIES) 
+reserved$(EXEEXT): $(reserved_OBJECTS) $(reserved_DEPENDENCIES) $(EXTRA_reserved_DEPENDENCIES) 
 	@rm -f reserved$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(reserved_OBJECTS) $(reserved_LDADD) $(LIBS)
-set_extent$(EXEEXT): $(set_extent_OBJECTS) $(set_extent_DEPENDENCIES) 
+set_extent$(EXEEXT): $(set_extent_OBJECTS) $(set_extent_DEPENDENCIES) $(EXTRA_set_extent_DEPENDENCIES) 
 	@rm -f set_extent$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(set_extent_OBJECTS) $(set_extent_LDADD) $(LIBS)
-space_overflow$(EXEEXT): $(space_overflow_OBJECTS) $(space_overflow_DEPENDENCIES) 
+space_overflow$(EXEEXT): $(space_overflow_OBJECTS) $(space_overflow_DEPENDENCIES) $(EXTRA_space_overflow_DEPENDENCIES) 
 	@rm -f space_overflow$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(space_overflow_OBJECTS) $(space_overflow_LDADD) $(LIBS)
-stab$(EXEEXT): $(stab_OBJECTS) $(stab_DEPENDENCIES) 
+stab$(EXEEXT): $(stab_OBJECTS) $(stab_DEPENDENCIES) $(EXTRA_stab_DEPENDENCIES) 
 	@rm -f stab$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stab_OBJECTS) $(stab_LDADD) $(LIBS)
-tcheck_version$(EXEEXT): $(tcheck_version_OBJECTS) $(tcheck_version_DEPENDENCIES) 
+tcheck_version$(EXEEXT): $(tcheck_version_OBJECTS) $(tcheck_version_DEPENDENCIES) $(EXTRA_tcheck_version_DEPENDENCIES) 
 	@rm -f tcheck_version$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(tcheck_version_OBJECTS) $(tcheck_version_LDADD) $(LIBS)
-testhdf5$(EXEEXT): $(testhdf5_OBJECTS) $(testhdf5_DEPENDENCIES) 
+testhdf5$(EXEEXT): $(testhdf5_OBJECTS) $(testhdf5_DEPENDENCIES) $(EXTRA_testhdf5_DEPENDENCIES) 
 	@rm -f testhdf5$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testhdf5_OBJECTS) $(testhdf5_LDADD) $(LIBS)
-testmeta$(EXEEXT): $(testmeta_OBJECTS) $(testmeta_DEPENDENCIES) 
+testmeta$(EXEEXT): $(testmeta_OBJECTS) $(testmeta_DEPENDENCIES) $(EXTRA_testmeta_DEPENDENCIES) 
 	@rm -f testmeta$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testmeta_OBJECTS) $(testmeta_LDADD) $(LIBS)
-ttsafe$(EXEEXT): $(ttsafe_OBJECTS) $(ttsafe_DEPENDENCIES) 
+ttsafe$(EXEEXT): $(ttsafe_OBJECTS) $(ttsafe_DEPENDENCIES) $(EXTRA_ttsafe_DEPENDENCIES) 
 	@rm -f ttsafe$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ttsafe_OBJECTS) $(ttsafe_LDADD) $(LIBS)
-unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES) 
+unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES) $(EXTRA_unlink_DEPENDENCIES) 
 	@rm -f unlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS)
-vfd$(EXEEXT): $(vfd_OBJECTS) $(vfd_DEPENDENCIES) 
+vfd$(EXEEXT): $(vfd_OBJECTS) $(vfd_DEPENDENCIES) $(EXTRA_vfd_DEPENDENCIES) 
 	@rm -f vfd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(vfd_OBJECTS) $(vfd_LDADD) $(LIBS)
 
@@ -1208,26 +1248,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1284,6 +1321,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -1333,10 +1384,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -1424,18 +1480,18 @@ uninstall-am:
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am
+	clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -1465,7 +1521,7 @@ flush2.chkexe_: flush1.chkexe_
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -1491,7 +1547,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -1515,7 +1571,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -1525,7 +1581,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1615,7 +1671,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1645,7 +1701,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/test/accum.c b/test/accum.c
index c5f6610..e4c1bd8 100644
--- a/test/accum.c
+++ b/test/accum.c
@@ -1793,15 +1793,17 @@ accum_printf(void)
         printf("=====================================================\n");
     } else {
         printf("=====================================================\n");
-        printf(" accumulator allocated size == %lu\n", (unsigned long)accum->alloc_size);
-        printf(" accumulated data size      == %lu\n", (unsigned long)accum->size);
-        printf(" accumulator dirty?         == %d\n", accum->dirty);
+        printf(" accumulator allocated size == %zu\n", accum->alloc_size);
+        printf(" accumulated data size      == %zu\n", accum->size);
+        HDfprintf(stdout, " accumulator dirty?         == %t\n", accum->dirty);
         printf("=====================================================\n");
-        printf(" start of accumulated data, loc = %llu\n", accum->loc);
-        if (accum->dirty) printf(" start of dirty region, loc = %llu\n", accum->loc + accum->dirty_off);
-        if (accum->dirty) printf(" end of dirty region,   loc = %llu\n", accum->loc + accum->dirty_off + accum->dirty_len);
-        printf(" end of accumulated data,   loc = %llu\n", accum->loc + accum->size);
-        printf(" end of accumulator allocation,   loc = %llu\n", accum->loc + accum->alloc_size);
+        HDfprintf(stdout, " start of accumulated data, loc = %a\n", accum->loc);
+        if(accum->dirty) {
+            HDfprintf(stdout, " start of dirty region, loc = %a\n", (haddr_t)(accum->loc + accum->dirty_off));
+            HDfprintf(stdout, " end of dirty region,   loc = %a\n", (haddr_t)(accum->loc + accum->dirty_off + accum->dirty_len));
+        } /* end if */
+        HDfprintf(stdout, " end of accumulated data,   loc = %a\n", (haddr_t)(accum->loc + accum->size));
+        HDfprintf(stdout, " end of accumulator allocation,   loc = %a\n", (haddr_t)(accum->loc + accum->alloc_size));
         printf("=====================================================\n");
     }
     printf("\n\n");
diff --git a/test/bittests.c b/test/bittests.c
index f063cee..c527bb8 100644
--- a/test/bittests.c
+++ b/test/bittests.c
@@ -56,13 +56,13 @@ test_find (void)
 
     /* The zero length buffer */
     HDmemset(v1, 0xaa, sizeof v1);
-    n = H5T_bit_find(v1, (size_t)0, (size_t)0, H5T_BIT_LSB, TRUE);
+    n = H5T__bit_find(v1, (size_t)0, (size_t)0, H5T_BIT_LSB, TRUE);
     if(-1 != n) {
 	H5_FAILED();
 	puts ("    Zero length test failed (lsb)!");
 	goto failed;
     }
-    n = H5T_bit_find(v1, (size_t)0, (size_t)0, H5T_BIT_MSB, TRUE);
+    n = H5T__bit_find(v1, (size_t)0, (size_t)0, H5T_BIT_MSB, TRUE);
     if(-1 != n) {
 	H5_FAILED();
 	puts ("    Zero length test failed (msb)!");
@@ -72,13 +72,13 @@ test_find (void)
 
     /* The zero buffer */
     HDmemset(v1, 0, sizeof v1);
-    n = H5T_bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_LSB, TRUE);
+    n = H5T__bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_LSB, TRUE);
     if(-1 != n) {
 	H5_FAILED();
 	puts ("    Zero buffer test failed (lsb)!");
 	goto failed;
     }
-    n = H5T_bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_MSB, TRUE);
+    n = H5T__bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_MSB, TRUE);
     if(-1 != n) {
 	H5_FAILED();
 	puts ("    Zero buffer test failed (msb)!");
@@ -89,13 +89,13 @@ test_find (void)
     for(i = 0; i < 8 * (int)sizeof(v1); i++) {
 	HDmemset(v1, 0, sizeof v1);
 	v1[i / 8] = 1 << (i % 8);
-	n = H5T_bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_LSB, TRUE);
+	n = H5T__bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_LSB, TRUE);
 	if((ssize_t)i != n) {
 	    H5_FAILED();
 	    printf ("    Test for set bit %d failed (lsb)!\n", i);
 	    goto failed;
 	}
-	n = H5T_bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_MSB, TRUE);
+	n = H5T__bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_MSB, TRUE);
 	if((ssize_t)i != n) {
 	    H5_FAILED();
 	    printf ("    Test for set bit %d failed (msb)!\n", i);
@@ -105,13 +105,13 @@ test_find (void)
 
     /* The one buffer */
     HDmemset(v1, 0xff, sizeof v1);
-    n = H5T_bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_LSB, FALSE);
+    n = H5T__bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_LSB, FALSE);
     if(-1 != n) {
 	H5_FAILED();
 	puts ("    One buffer test failed (lsb)!");
 	goto failed;
     }
-    n = H5T_bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_MSB, FALSE);
+    n = H5T__bit_find(v1, (size_t)0, 8 * sizeof(v1), H5T_BIT_MSB, FALSE);
     if(-1 != n) {
 	H5_FAILED();
 	puts ("    One buffer test failed (msb)!");
@@ -122,13 +122,13 @@ test_find (void)
     for (i=0; i<8*(int)sizeof(v1); i++) {
 	memset (v1, 0xff, sizeof v1);
 	v1[i/8] &= ~(1<<(i%8));
-	n = H5T_bit_find (v1, (size_t)0, 8*sizeof(v1), H5T_BIT_LSB, FALSE);
+	n = H5T__bit_find (v1, (size_t)0, 8*sizeof(v1), H5T_BIT_LSB, FALSE);
 	if ((ssize_t)i!=n) {
 	    H5_FAILED();
 	    printf ("    Test for clear bit %d failed (lsb)!\n", i);
 	    goto failed;
 	}
-	n = H5T_bit_find (v1, (size_t)0, 8*sizeof(v1), H5T_BIT_MSB, FALSE);
+	n = H5T__bit_find (v1, (size_t)0, 8*sizeof(v1), H5T_BIT_MSB, FALSE);
 	if ((ssize_t)i!=n) {
 	    H5_FAILED();
 	    printf ("    Test for clear bit %d failed (lsb)!\n", i);
@@ -183,7 +183,7 @@ test_copy (void)
 	memset (v2, 0x00, sizeof v2);
 
 	/* Copy some bits to v2 and make sure something was copied */
-	H5T_bit_copy (v2, d_offset, v1, s_offset, size);
+	H5T__bit_copy (v2, d_offset, v1, s_offset, size);
 	for (j=0; j<(int)sizeof(v2); j++) if (v2[j]) break;
 	if (size>0 && j>=(int)sizeof(v2)) {
 	    H5_FAILED();
@@ -198,7 +198,7 @@ test_copy (void)
 
 
 	/* Look for the zeros and ones */
-	n = H5T_bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_LSB, 1);
 	if (size>0 && n!=(ssize_t)d_offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find first copied bit in destination "
@@ -210,7 +210,7 @@ test_copy (void)
 	    puts ("    Found copied bits and shouldn't have!");
 	    goto failed;
 	}
-	n = H5T_bit_find (v2, d_offset, 8*sizeof(v2)-d_offset, H5T_BIT_LSB, 0);
+	n = H5T__bit_find (v2, d_offset, 8*sizeof(v2)-d_offset, H5T_BIT_LSB, 0);
 	if (d_offset+size<8*sizeof(v2) && n!=(ssize_t)size) {
 	    H5_FAILED();
 	    printf ("    Unable to find last copied bit in destination "
@@ -227,7 +227,7 @@ test_copy (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_MSB, 1);
 	if (size>0 && (size_t)(n+1)!=d_offset+size) {
 	    H5_FAILED();
 	    printf ("    Unable to find last copied bit in destination "
@@ -239,7 +239,7 @@ test_copy (void)
 	    puts ("    Found copied bits but shouldn't have (reverse)!");
 	    goto failed;
 	}
-	n = H5T_bit_find (v2, (size_t)0, d_offset+size, H5T_BIT_MSB, 0);
+	n = H5T__bit_find (v2, (size_t)0, d_offset+size, H5T_BIT_MSB, 0);
 	if (d_offset>0 && n+1!=(ssize_t)d_offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find beginning of copied data "
@@ -305,12 +305,12 @@ test_shift (void)
 
 	/*-------- LEFT-shift some bits and make sure something was shifted --------*/
 	memset (vector, 0x00, sizeof vector);
-        H5T_bit_set (vector, offset, size, 1);
+        H5T__bit_set (vector, offset, size, 1);
 
-        H5T_bit_shift (vector, shift_dist, offset, size);
+        H5T__bit_shift (vector, shift_dist, offset, size);
 
 	/* Look for the ones */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if ((size_t)n!=offset+shift_dist) {
 	    H5_FAILED();
 	    printf ("    Unable to find first bit in destination "
@@ -322,7 +322,7 @@ test_shift (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (n!=(ssize_t)(offset+size-1)) {
 	    H5_FAILED();
 	    printf ("    Unable to find last bit in destination "
@@ -332,12 +332,12 @@ test_shift (void)
 
 	/*-------- RIGHT-shift some bits and make sure something was shifted --------*/
 	memset (vector, 0x00, sizeof vector);
-        H5T_bit_set (vector, offset, size, 1);
+        H5T__bit_set (vector, offset, size, 1);
 
-        H5T_bit_shift (vector, -shift_dist, offset, size);
+        H5T__bit_shift (vector, -shift_dist, offset, size);
 
 	/* Look for the ones */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if ((size_t)n!=offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find first bit in destination "
@@ -349,7 +349,7 @@ test_shift (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (n!=(ssize_t)(offset+size-shift_dist-1)) {
 	    H5_FAILED();
 	    printf ("    Unable to find last bit in destination "
@@ -367,12 +367,12 @@ test_shift (void)
             shift_dist = -((ssize_t)size);
 
 	memset (vector, 0x00, sizeof vector);
-        H5T_bit_set (vector, offset, size, 1);
+        H5T__bit_set (vector, offset, size, 1);
 
-        H5T_bit_shift (vector, shift_dist, offset, size);
+        H5T__bit_shift (vector, shift_dist, offset, size);
 
 	/* Supposed to fail to find any ones */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if (n >= 0) {
 	    H5_FAILED();
 	    printf ("    Unable to verify all bits are zero in destination(LSB) "
@@ -381,7 +381,7 @@ test_shift (void)
 	}
 
         /* Look from the other direction */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (n >= 0) {
 	    H5_FAILED();
 	    printf ("    Unable to verify all bits are zero in destination(MSB) "
@@ -437,15 +437,15 @@ test_increment (void)
 
 	memset (vector, 0x00, sizeof vector);
         if(size>1)  /* if size=6, make a sequence like 011111 */
-            H5T_bit_set (vector, offset, size-1, 1);
+            H5T__bit_set (vector, offset, size-1, 1);
         else  /* if size=1, just set this one bit to 1 */
-            H5T_bit_set (vector, offset, size, 1);
+            H5T__bit_set (vector, offset, size, 1);
 
 	/* Increment the sequence by one */
-        H5T_bit_inc (vector, offset, size);
+        H5T__bit_inc (vector, offset, size);
 
 	/* Look for the one */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if (size!=1 && (size_t)n!=offset+size-1) {
 	    H5_FAILED();
 	    printf ("    Unable to find first bit in destination "
@@ -463,7 +463,7 @@ test_increment (void)
 	 * Look for one in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (size!=1 && n!=(ssize_t)(offset+size-1)) {
 	    H5_FAILED();
 	    printf ("    Unable to find last bit in destination "
@@ -526,10 +526,10 @@ test_decrement (void)
 	memset (vector, 0x00, sizeof vector);
 
 	/* decrement the sequence by one */
-        H5T_bit_dec (vector, offset, size);
+        H5T__bit_dec (vector, offset, size);
 
 	/* Look for the ones */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if ((size_t)n!=offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find first bit in destination "
@@ -541,7 +541,7 @@ test_decrement (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (n!=(ssize_t)(offset+size-1)) {
 	    H5_FAILED();
 	    printf ("    Unable to find last bit in destination "
@@ -598,10 +598,10 @@ test_negate (void)
 	memset (vector, 0x00, sizeof vector);
 
 	/* negate the sequence */
-        H5T_bit_neg (vector, offset, size);
+        H5T__bit_neg (vector, offset, size);
 
 	/* Look for the ones */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if ((size_t)n!=offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find first bit in destination "
@@ -613,7 +613,7 @@ test_negate (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (n!=(ssize_t)(offset+size-1)) {
 	    H5_FAILED();
 	    printf ("    Unable to find last bit in destination "
@@ -623,13 +623,13 @@ test_negate (void)
 
         /* All-one sequence will become 000000(size=6) after negating */
 	memset (vector, 0x00, sizeof vector);
-        H5T_bit_set (vector, offset, size, 1);
+        H5T__bit_set (vector, offset, size, 1);
 
 	/* negate the sequence */
-        H5T_bit_neg (vector, offset, size);
+        H5T__bit_neg (vector, offset, size);
 
 	/* Look for the ones */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_LSB, 1);
 	if (n>=0) {
 	    H5_FAILED();
 	    printf ("    Unable to verify all-zero bits in destination "
@@ -641,7 +641,7 @@ test_negate (void)
 	 * Look for ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (vector, (size_t)0, 8*sizeof(vector), H5T_BIT_MSB, 1);
 	if (n>=0) {
 	    H5_FAILED();
 	    printf ("    Unable to verify all-zero bits in destination "
@@ -695,7 +695,7 @@ test_set (void)
 	memset (v2, 0x00, sizeof v2);
 
 	/* Set some bits in v2 */
-	H5T_bit_set (v2, d_offset, size, TRUE);
+	H5T__bit_set (v2, d_offset, size, TRUE);
 	for (j=0; j<(int)sizeof(v2); j++) if (v2[j]) break;
 	if (size>0 && j>=(int)sizeof(v2)) {
 	    H5_FAILED();
@@ -710,7 +710,7 @@ test_set (void)
 
 
 	/* Look for the zeros and ones */
-	n = H5T_bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_LSB, 1);
+	n = H5T__bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_LSB, 1);
 	if (size>0 && n!=(ssize_t)d_offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find first set bit in destination "
@@ -722,7 +722,7 @@ test_set (void)
 	    puts ("    Found set bits and shouldn't have!");
 	    goto failed;
 	}
-	n = H5T_bit_find (v2, d_offset, 8*sizeof(v2)-d_offset, H5T_BIT_LSB, 0);
+	n = H5T__bit_find (v2, d_offset, 8*sizeof(v2)-d_offset, H5T_BIT_LSB, 0);
 	if (d_offset+size<8*sizeof(v2) && n!=(ssize_t)size) {
 	    H5_FAILED();
 	    printf ("    Unable to find last set bit in destination "
@@ -739,7 +739,7 @@ test_set (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_MSB, 1);
+	n = H5T__bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_MSB, 1);
 	if (size>0 && (size_t)(n+1)!=d_offset+size) {
 	    H5_FAILED();
 	    printf ("    Unable to find last set bit in destination "
@@ -751,7 +751,7 @@ test_set (void)
 	    puts ("    Found set bits but shouldn't have (reverse)!");
 	    goto failed;
 	}
-	n = H5T_bit_find (v2, (size_t)0, d_offset+size, H5T_BIT_MSB, 0);
+	n = H5T__bit_find (v2, (size_t)0, d_offset+size, H5T_BIT_MSB, 0);
 	if (d_offset>0 && n+1!=(ssize_t)d_offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find beginning of set bit region "
@@ -812,7 +812,7 @@ test_clear (void)
 	memset (v2, 0xff, sizeof v2);
 
 	/* Clear some bits in v2 */
-	H5T_bit_set (v2, d_offset, size, FALSE);
+	H5T__bit_set (v2, d_offset, size, FALSE);
 	for (j=0; j<(int)sizeof(v2); j++) if (0xff!=v2[j]) break;
 	if (size>0 && j>=(int)sizeof(v2)) {
 	    H5_FAILED();
@@ -827,7 +827,7 @@ test_clear (void)
 
 
 	/* Look for the zeros and ones */
-	n = H5T_bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_LSB, 0);
+	n = H5T__bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_LSB, 0);
 	if (size>0 && n!=(ssize_t)d_offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find first cleared bit in destination "
@@ -839,7 +839,7 @@ test_clear (void)
 	    puts ("    Found cleared bits and shouldn't have!");
 	    goto failed;
 	}
-	n = H5T_bit_find (v2, d_offset, 8*sizeof(v2)-d_offset, H5T_BIT_LSB, 1);
+	n = H5T__bit_find (v2, d_offset, 8*sizeof(v2)-d_offset, H5T_BIT_LSB, 1);
 	if (d_offset+size<8*sizeof(v2) && n!=(ssize_t)size) {
 	    H5_FAILED();
 	    printf ("    Unable to find last cleared bit in destination "
@@ -856,7 +856,7 @@ test_clear (void)
 	 * Look for zeros and ones in reverse order.  This is only to test
 	 * that reverse searches work as expected.
 	 */
-	n = H5T_bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_MSB, 0);
+	n = H5T__bit_find (v2, (size_t)0, 8*sizeof(v2), H5T_BIT_MSB, 0);
 	if (size>0 && (size_t)(n+1)!=d_offset+size) {
 	    H5_FAILED();
 	    printf ("    Unable to find last cleared bit in destination "
@@ -868,7 +868,7 @@ test_clear (void)
 	    puts ("    Found cleared bits but shouldn't have (reverse)!");
 	    goto failed;
 	}
-	n = H5T_bit_find (v2, (size_t)0, d_offset+size, H5T_BIT_MSB, 1);
+	n = H5T__bit_find (v2, (size_t)0, d_offset+size, H5T_BIT_MSB, 1);
 	if (d_offset>0 && n+1!=(ssize_t)d_offset) {
 	    H5_FAILED();
 	    printf ("    Unable to find beginning of cleared bit region "
diff --git a/test/cache_common.c b/test/cache_common.c
index c2c0b12..f41e6af 100644
--- a/test/cache_common.c
+++ b/test/cache_common.c
@@ -1879,7 +1879,7 @@ verify_entry_status(H5C_t * cache_ptr,
 		    int num_entries,
 		    struct expected_entry_status expected[])
 {
-    static char    msg[128];
+    static char    msg[256];
     hbool_t        in_cache = FALSE; /* will set to TRUE if necessary */
     int            i;
     test_entry_t * entry_ptr;
diff --git a/test/cmpd_dset.c b/test/cmpd_dset.c
index d7f7842..433c488 100644
--- a/test/cmpd_dset.c
+++ b/test/cmpd_dset.c
@@ -2183,7 +2183,7 @@ main (int argc, char *argv[])
 	    fprintf(stderr, "usage: %s [--noopt]\n", argv[0]);
 	    exit(1);
 	}
-	H5Tunregister(H5T_PERS_DONTCARE, NULL, -1, -1, H5T_conv_struct_opt);
+	H5Tunregister(H5T_PERS_DONTCARE, NULL, -1, -1, H5T__conv_struct_opt);
     }
 
     /* Create the file */
diff --git a/test/dsets.c b/test/dsets.c
index 043c44a..3b0d25d 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -1004,8 +1004,8 @@ test_conv_buffer(hid_t fid)
     herr_t       status = -1;
     int          j, k, l;
 
-    CmpField     *cf;
-    CmpFieldR    *cfrR;
+    CmpField     *cf = NULL;
+    CmpFieldR    *cfrR = NULL;
 
     hid_t       dataset = -1; /* dataset ID             */
     hid_t       space   = -1; /* data space ID          */
@@ -1019,7 +1019,7 @@ test_conv_buffer(hid_t fid)
 
     TESTING("data type conversion buffer size");
 
-    cf = (CmpField *)HDcalloc((size_t)1, sizeof(CmpField));
+    if ((cf = (CmpField *)HDcalloc((size_t)1, sizeof(CmpField))) == 0) goto error;
 
     /* Populate the data members */
     for(j = 0; j < DIM1; j++)
@@ -1068,7 +1068,7 @@ test_conv_buffer(hid_t fid)
   if(H5Tinsert(ctype2, "C", HOFFSET(CmpFieldR, c), arr_type5) < 0) goto error;
 
   /* Read should succeed since library will set conversion buffer big enough */
-  cfrR = (CmpFieldR *)HDcalloc((size_t)1, sizeof(CmpFieldR));
+  if ((cfrR = (CmpFieldR *)HDcalloc((size_t)1, sizeof(CmpFieldR))) == 0) goto error;
   if(H5Dread(dataset, ctype2, H5S_ALL, H5S_ALL, H5P_DEFAULT, cfrR) < 0) goto error;
 
   /* Read should fail since conversion buffer isn't big enough */
@@ -1105,10 +1105,8 @@ test_conv_buffer(hid_t fid)
   if(H5Tclose(arr_type5) < 0) goto error;
   if(H5Dclose(dataset) < 0) goto error;
 
-  if(cf)
-    HDfree(cf);
-  if(cfrR)
-    HDfree(cfrR);
+  HDfree(cf);
+  HDfree(cfrR);
   puts(" PASSED");
   return(0);
 
diff --git a/test/dt_arith.c b/test/dt_arith.c
index 7948c65..e85e355 100644
--- a/test/dt_arith.c
+++ b/test/dt_arith.c
@@ -306,9 +306,9 @@ static int without_hardware_g = 0;
      *00000111,..., until 11111111.*/                                                           \
     memset(tmp1, 0, SRC_SIZE);                                                                  \
     memset(tmp2, 0, SRC_SIZE);                                                                  \
-    H5T_bit_set (tmp2, SRC_PREC-1, (size_t)1, TRUE);       /*the negative value*/                       \
+    H5T__bit_set (tmp2, SRC_PREC-1, (size_t)1, TRUE);       /*the negative value*/                       \
     for(n=0; n<SRC_MANT_DIG-1; n++) {                                                           \
-        H5T_bit_set (tmp1, n, (size_t)1, TRUE);            /*turn on 1 bit each time*/                  \
+        H5T__bit_set (tmp1, n, (size_t)1, TRUE);            /*turn on 1 bit each time*/                  \
         CHANGE_ORDER(tmp1, SRC_ORDR, SRC_SIZE);    /*change order for big endian*/              \
         memcpy(buf_p, tmp1, SRC_SIZE);                                                          \
         memcpy(saved_p, tmp1, SRC_SIZE);                                                        \
@@ -317,7 +317,7 @@ static int without_hardware_g = 0;
         saved_p += SRC_SIZE;                                                                    \
                                                                                                 \
         /*negative values*/                                                                     \
-        H5T_bit_set (tmp2, n, (size_t)1, TRUE);                                                         \
+        H5T__bit_set (tmp2, n, (size_t)1, TRUE);                                                         \
         CHANGE_ORDER(tmp2, SRC_ORDR, SRC_SIZE);                                                 \
         memcpy(buf_p, tmp2, SRC_SIZE);                                                          \
         memcpy(saved_p, tmp2, SRC_SIZE);                                                        \
@@ -353,7 +353,7 @@ static int without_hardware_g = 0;
     buf_p = BUF;                                                                                \
                                                                                                 \
     /* +0 */                                                                                    \
-    H5T_bit_set(value, (size_t)0, SRC_PREC, FALSE);                                                     \
+    H5T__bit_set(value, (size_t)0, SRC_PREC, FALSE);                                                     \
     memcpy(buf_p, value, SRC_SIZE*sizeof(unsigned char));                                       \
     buf_p += SRC_SIZE;                                                                          \
                                                                                                 \
@@ -361,7 +361,7 @@ static int without_hardware_g = 0;
         if(n==1) {                                                                              \
             memset(value, 0, SRC_SIZE*sizeof(unsigned char));                                   \
             /* -0 */                                                                            \
-            H5T_bit_set(value, (size_t)(SRC_PREC - 1), (size_t)1, TRUE);                                            \
+            H5T__bit_set(value, (size_t)(SRC_PREC - 1), (size_t)1, TRUE);                                            \
             CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);/*change order for big endian*/             \
             HDmemcpy(buf_p, value, SRC_SIZE*sizeof(unsigned char));                               \
             CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);/*change back the order for bit operation*/ \
@@ -369,21 +369,21 @@ static int without_hardware_g = 0;
         }                                                                                       \
                                                                                                 \
         /* +/-infinity */                                                                       \
-        H5T_bit_set(value, (size_t)(SRC_MANT_DIG - 1), SRC_PREC-SRC_MANT_DIG, TRUE);                        \
+        H5T__bit_set(value, (size_t)(SRC_MANT_DIG - 1), SRC_PREC-SRC_MANT_DIG, TRUE);                        \
         CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);    /*change order for big endian*/             \
         HDmemcpy(buf_p, value, SRC_SIZE*sizeof(unsigned char));                                   \
         CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);    /*change back the order for bit operation*/ \
         buf_p += SRC_SIZE;                                                                      \
                                                                                                 \
         /* +/-SNaN */                                                                           \
-        H5T_bit_set(value, (size_t)0, (size_t)1, TRUE);                                                         \
+        H5T__bit_set(value, (size_t)0, (size_t)1, TRUE);                                                         \
         CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);    /*change order for big endian*/             \
         HDmemcpy(buf_p, value, SRC_SIZE * sizeof(unsigned char));                                   \
         CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);    /*change back the order for bit operation*/ \
         buf_p += SRC_SIZE;                                                                      \
                                                                                                 \
         /* +/-QNaN */                                                                           \
-        H5T_bit_set(value, (size_t)(SRC_MANT_DIG - 2), (size_t)1, TRUE);                                            \
+        H5T__bit_set(value, (size_t)(SRC_MANT_DIG - 2), (size_t)1, TRUE);                                            \
         CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);    /*change order for big endian*/             \
         HDmemcpy(buf_p, value, SRC_SIZE*sizeof(unsigned char));                                   \
         CHANGE_ORDER(value, SRC_ORDR, SRC_SIZE);    /*change back the order for bit operation*/ \
@@ -634,7 +634,7 @@ test_hard_query(void)
 
     /* Unregister the hard conversion from int to float.  Verify the conversion
      * is a soft conversion. */
-    H5Tunregister(H5T_PERS_HARD, NULL, H5T_NATIVE_INT, H5T_NATIVE_FLOAT, H5T_conv_int_float);
+    H5Tunregister(H5T_PERS_HARD, NULL, H5T_NATIVE_INT, H5T_NATIVE_FLOAT, H5T__conv_int_float);
     if(H5Tcompiler_conv(H5T_NATIVE_INT, H5T_NATIVE_FLOAT) != FALSE) {
         H5_FAILED();
         printf("Can't query conversion function\n");
@@ -643,7 +643,7 @@ test_hard_query(void)
 
     /* Register the hard conversion from int to float.  Verify the conversion
      * is a hard conversion. */
-    H5Tregister(H5T_PERS_HARD, "int_flt", H5T_NATIVE_INT, H5T_NATIVE_FLOAT, H5T_conv_int_float);
+    H5Tregister(H5T_PERS_HARD, "int_flt", H5T_NATIVE_INT, H5T_NATIVE_FLOAT, H5T__conv_int_float);
     if(H5Tcompiler_conv(H5T_NATIVE_INT, H5T_NATIVE_FLOAT) != TRUE) {
         H5_FAILED();
         printf("Can't query conversion function\n");
@@ -1105,9 +1105,9 @@ test_derived_flt(void)
     }
 
     fails_this_test = 0;
-    if(buf) free(buf);
-    if(saved_buf) free(saved_buf);
-    if(aligned) free(aligned);
+    free(buf);
+    free(saved_buf);
+    free(aligned);
     buf = NULL;
     saved_buf = NULL;
     aligned = NULL;
@@ -2337,92 +2337,92 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
          */
         if (H5T_SGN_2==src_sign && H5T_SGN_2==dst_sign) {
             if (src_nbits>dst_nbits) {
-                if(0==H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
-                        H5T_bit_find(src_bits, dst_nbits-1, (src_nbits-dst_nbits),
+                if(0==H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
+                        H5T__bit_find(src_bits, dst_nbits-1, (src_nbits-dst_nbits),
                             H5T_BIT_MSB, 1)>=0) {
                     /*
                      * Source is positive and the magnitude is too large for
                      * the destination.  The destination should be set to the
                      * maximum possible value: 0x7f...f
                      */
-                    if (0==H5T_bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
-                            H5T_bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 0) < 0)
+                    if (0==H5T__bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
+                            H5T__bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 0) < 0)
                         continue; /*no error*/
-                } else if (1==H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
-                       H5T_bit_find(src_bits, (size_t)0, src_nbits-1, H5T_BIT_MSB,
+                } else if (1==H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
+                       H5T__bit_find(src_bits, (size_t)0, src_nbits-1, H5T_BIT_MSB,
                             0)+1>=(ssize_t)dst_nbits) {
                     /*
                      * Source is negative but the magnitude is too large for
                      * the destination. The destination should be set to the
                      * smallest possible value: 0x80...0
                      */
-                    if (1==H5T_bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
-                            H5T_bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 1) < 0)
+                    if (1==H5T__bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
+                            H5T__bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 1) < 0)
                         continue; /*no error*/
                 }
             } else if(src_nbits<dst_nbits) {
                 /* Source is smaller than the destination */
-                if(0==H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1)) {
+                if(0==H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1)) {
                     /*
                      * Source is positive, so the excess bits in the
                      * destination should be set to 0's.
                      */
-                    if (0==H5T_bit_get_d(dst_bits, src_nbits-1, (size_t)1) &&
-                            H5T_bit_find(dst_bits, src_nbits, dst_nbits-src_nbits, H5T_BIT_LSB, 1) < 0)
+                    if (0==H5T__bit_get_d(dst_bits, src_nbits-1, (size_t)1) &&
+                            H5T__bit_find(dst_bits, src_nbits, dst_nbits-src_nbits, H5T_BIT_LSB, 1) < 0)
                         continue; /*no error*/
                 } else {
                     /*
                      * Source is negative, so the excess bits in the
                      * destination should be set to 1's.
                      */
-                    if (1==H5T_bit_get_d(dst_bits, src_nbits-1, (size_t)1) &&
-                            H5T_bit_find(dst_bits, src_nbits, dst_nbits-src_nbits, H5T_BIT_LSB, 0) < 0)
+                    if (1==H5T__bit_get_d(dst_bits, src_nbits-1, (size_t)1) &&
+                            H5T__bit_find(dst_bits, src_nbits, dst_nbits-src_nbits, H5T_BIT_LSB, 0) < 0)
                         continue; /*no error*/
                 }
             }
         } else if (H5T_SGN_2==src_sign && H5T_SGN_NONE==dst_sign) {
-            if (H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1)) {
+            if (H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1)) {
                 /*
                  * The source is negative so the result should be zero.
                  * The source is negative if the most significant bit is
                  * set.  The destination is zero if all bits are zero.
                  */
-                if (H5T_bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 1) < 0)
+                if (H5T__bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 1) < 0)
                     continue; /*no error*/
             } else if (src_nbits>dst_nbits &&
-                   H5T_bit_find(src_bits, dst_nbits-1,
+                   H5T__bit_find(src_bits, dst_nbits-1,
                         src_nbits-dst_nbits, H5T_BIT_LSB, 1)>=0) {
                 /*
                  * The source is a value with a magnitude too large for
                  * the destination.  The destination should be the
                  * largest possible value: 0xff...f
                  */
-                if (H5T_bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 0) < 0)
+                if (H5T__bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 0) < 0)
                     continue; /*no error*/
             }
         } else if (H5T_SGN_NONE==src_sign && H5T_SGN_2==dst_sign) {
             if (src_nbits>=dst_nbits &&
-                    H5T_bit_find(src_bits, dst_nbits-1, (src_nbits-dst_nbits)+1,
+                    H5T__bit_find(src_bits, dst_nbits-1, (src_nbits-dst_nbits)+1,
                         H5T_BIT_LSB, 1)>=0) {
                 /*
                  * The source value has a magnitude that is larger than
                  * the destination can handle.  The destination should be
                  * set to the largest possible positive value: 0x7f...f
                  */
-                if (0==H5T_bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
-                        H5T_bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 0) < 0)
+                if (0==H5T__bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
+                        H5T__bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 0) < 0)
                     continue; /*no error*/
             }
         } else {
             if (src_nbits>dst_nbits &&
-                    H5T_bit_find(src_bits, dst_nbits, src_nbits-dst_nbits,
+                    H5T__bit_find(src_bits, dst_nbits, src_nbits-dst_nbits,
                          H5T_BIT_LSB, 1)>=0) {
                 /*
                  * The unsigned source has a value which is too large for
                  * the unsigned destination.  The destination should be
                  * set to the largest possible value: 0xff...f
                  */
-                if (H5T_bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 0) < 0)
+                if (H5T__bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 0) < 0)
                     continue; /*no error*/
             }
         }
@@ -2610,8 +2610,8 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_conv_int_2
  *
- * Purpose:	Tests overlap calculates in H5T_conv_i_i(), which should be
- *		the same as for H5T_conv_f_f() and H5T_conv_s_s().
+ * Purpose:	Tests overlap calculates in H5T__conv_i_i(), which should be
+ *		the same as for H5T__conv_f_f() and H5T__conv_s_s().
  *
  * Return:	Success:	0
  *
@@ -2648,7 +2648,7 @@ test_conv_int_2(void)
 
 	    /*
 	     * Conversion. If overlap calculations aren't right then an
-	     * assertion will fail in H5T_conv_i_i()
+	     * assertion will fail in H5T__conv_i_i()
 	     */
 	    H5Tconvert(src_type, dst_type, (size_t)100, buf, NULL, H5P_DEFAULT);
 	    H5Tclose(src_type);
@@ -2788,8 +2788,8 @@ my_isinf(int endian, unsigned char *val, size_t size,
         bits[size-(i+1)] = *(val + ENDIAN(size, i, endian));
 #endif /*H5_VMS*/
 
-    if(H5T_bit_find(bits, mpos, msize, H5T_BIT_LSB, 1) < 0 &&
-            H5T_bit_find(bits, epos, esize, H5T_BIT_LSB, 0) < 0)
+    if(H5T__bit_find(bits, mpos, msize, H5T_BIT_LSB, 1) < 0 &&
+            H5T__bit_find(bits, epos, esize, H5T_BIT_LSB, 0) < 0)
         retval = 1;
 
     free(bits);
@@ -3321,7 +3321,7 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
                 }
             }
 
-            expo = H5T_bit_get_d(tmp, src_epos, src_esize);
+            expo = H5T__bit_get_d(tmp, src_epos, src_esize);
             if(expo==0)
                 continue;   /* Denormalized floating-point value detected */
             else {
@@ -3341,7 +3341,7 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
                     }
                 }
 
-                expo = H5T_bit_get_d(tmp, dst_epos, dst_esize);
+                expo = H5T__bit_get_d(tmp, dst_epos, dst_esize);
                 if(expo==0)
                     continue;   /* Denormalized floating-point value detected */
                 else {
@@ -4348,7 +4348,7 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
                     )
                 && (INT_SCHAR==dst_type || INT_SHORT==dst_type || INT_INT==dst_type
                 || INT_LONG==dst_type || INT_LLONG==dst_type)) {
-            if(0==H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
+            if(0==H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
                     overflows(src_bits, src, dst_nbits-1)) {
                 /*
                  * Source is positive and the magnitude is too large for
@@ -4356,15 +4356,15 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
                  * maximum possible value: 0x7f...f
                  */
                 if(!except_set) {
-                    if (0==H5T_bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
-                            H5T_bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 0) < 0)
+                    if (0==H5T__bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
+                            H5T__bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 0) < 0)
                         continue; /*no error*/
                 } else {
                     /* fill_value is small so we know only the 1st byte is set */
                     if (dst_bits[0] == fill_value)
                         continue; /*no error*/
                 }
-            } else if (1==H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
+            } else if (1==H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1) &&
                     overflows(src_bits, src, dst_nbits-1)) {
                 /*
                  * Source is negative but the magnitude is too large for
@@ -4372,8 +4372,8 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
                  * smallest possible value: 0x80...0
                  */
                 if(!except_set) {
-                    if (1==H5T_bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
-                            H5T_bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 1) < 0)
+                    if (1==H5T__bit_get_d(dst_bits, dst_nbits-1, (size_t)1) &&
+                            H5T__bit_find(dst_bits, (size_t)0, dst_nbits-1, H5T_BIT_LSB, 1) < 0)
                         continue; /*no error*/
                 } else {
                     if (dst_bits[0] == fill_value)
@@ -4389,14 +4389,14 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
                 )
                 && (INT_UCHAR==dst_type || INT_USHORT==dst_type || INT_UINT==dst_type
                 || INT_ULONG==dst_type || INT_ULLONG==dst_type)) {
-            if (H5T_bit_get_d(src_bits, src_nbits-1, (size_t)1)) {
+            if (H5T__bit_get_d(src_bits, src_nbits-1, (size_t)1)) {
                 /*
                  * The source is negative so the result should be zero.
                  * The source is negative if the most significant bit is
                  * set.  The destination is zero if all bits are zero.
                  */
                 if(!except_set) {
-                    if (H5T_bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 1) < 0)
+                    if (H5T__bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 1) < 0)
                         continue; /*no error*/
                 } else {
                     if (dst_bits[0] == fill_value)
@@ -4409,7 +4409,7 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
                  * largest possible value: 0xff...f
                  */
                 if(!except_set) {
-                    if (H5T_bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 0) < 0)
+                    if (H5T__bit_find(dst_bits, (size_t)0, dst_nbits, H5T_BIT_LSB, 0) < 0)
                         continue; /*no error*/
                 } else {
                     if (dst_bits[0] == fill_value)
@@ -4757,13 +4757,13 @@ overflows(unsigned char *origin_bits, hid_t src_id, size_t dst_num_bits)
     HDmemcpy(bits, origin_bits, src_prec/8+1);
 
     /*Check for special cases: +Inf, -Inf*/
-    if (H5T_bit_find (bits, mpos, mant_digits, H5T_BIT_LSB, TRUE) < 0) {
-        if (H5T_bit_find (bits, epos, expt_digits, H5T_BIT_LSB, FALSE) < 0) {
+    if (H5T__bit_find (bits, mpos, mant_digits, H5T_BIT_LSB, TRUE) < 0) {
+        if (H5T__bit_find (bits, epos, expt_digits, H5T_BIT_LSB, FALSE) < 0) {
             ret_value=TRUE;
             goto done;
         }
-    } else if (H5T_NORM_NONE==norm && H5T_bit_find (bits, mpos, mant_digits-1,
-        H5T_BIT_LSB, TRUE) < 0 && H5T_bit_find (bits, epos, expt_digits,
+    } else if (H5T_NORM_NONE==norm && H5T__bit_find (bits, mpos, mant_digits-1,
+        H5T_BIT_LSB, TRUE) < 0 && H5T__bit_find (bits, epos, expt_digits,
         H5T_BIT_LSB, FALSE) < 0) {
         /*This is a special case for the source of no implied mantissa bit.
          *If the exponent bits are all 1s and only the 1st bit of mantissa
@@ -4773,7 +4773,7 @@ overflows(unsigned char *origin_bits, hid_t src_id, size_t dst_num_bits)
     }
 
     /* get exponent */
-    expt = H5T_bit_get_d(bits, mant_digits, expt_digits) - bias;
+    expt = H5T__bit_get_d(bits, mant_digits, expt_digits) - bias;
 
     if(expt>=(dst_num_bits-1)) {
        ret_value=TRUE;
@@ -4781,19 +4781,19 @@ overflows(unsigned char *origin_bits, hid_t src_id, size_t dst_num_bits)
     }
 
     /* get significand */
-    H5T_bit_copy (mant_bits, (size_t)0, bits, (size_t)0, mant_digits);
+    H5T__bit_copy (mant_bits, (size_t)0, bits, (size_t)0, mant_digits);
 
 
     /* restore implicit bit if normalization is implied*/
     if(norm == H5T_NORM_IMPLIED) {
-        H5T_bit_inc(mant_bits, mant_digits, (size_t)1);
+        H5T__bit_inc(mant_bits, mant_digits, (size_t)1);
         mant_digits++;
     }
 
     /* shift significand */
-    H5T_bit_shift (mant_bits, (ssize_t)(expt-expt_digits), (size_t)0, (size_t)(32 * 8));
+    H5T__bit_shift (mant_bits, (ssize_t)(expt-expt_digits), (size_t)0, (size_t)(32 * 8));
 
-    indx = H5T_bit_find(mant_bits, (size_t)0, (size_t)(32 * 8), H5T_BIT_MSB, 1);
+    indx = H5T__bit_find(mant_bits, (size_t)0, (size_t)(32 * 8), H5T_BIT_MSB, 1);
 
     if((size_t)indx>=dst_num_bits)
         ret_value=TRUE;
diff --git a/test/dtypes.c b/test/dtypes.c
index f1ff4ea..dca7eec 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -1127,10 +1127,8 @@ test_compound_5(void)
     }
 
     /* Free memory buffers */
-    if(buf)
-        HDfree(buf);
-    if(bkg)
-        HDfree(bkg);
+    HDfree(buf);
+    HDfree(bkg);
     return retval;
 }
 
@@ -3965,6 +3963,9 @@ test_str_create(void)
     if((query_size = H5Tget_size(fixed_str2)) == 0) goto error;
     if(query_size != str_size) goto error;
 
+    if(H5Tclose(fixed_str1) < 0) goto error;
+    if(H5Tclose(fixed_str2) < 0) goto error;
+
     /* Create variable-length string in two ways and make sure they are the same */
     if((vlen_str1 = mkstr((size_t)H5T_VARIABLE, H5T_STR_NULLTERM)) < 0) goto error;
 
@@ -3979,6 +3980,8 @@ test_str_create(void)
     if((is_vl_str = H5Tis_variable_str(vlen_str2)) < 0) goto error;
     if(!is_vl_str) goto error; 
 
+    if(H5Tclose(vlen_str1) < 0) goto error;
+    if(H5Tclose(vlen_str2) < 0) goto error;
 
     PASSED();
     return 0;
@@ -4694,11 +4697,12 @@ test_bitfield_funcs(void)
 {
     hid_t		type=-1, ntype=-1, super=-1;
     int                 size;
-    char*               tag;
+    char*               tag=0;
     H5T_pad_t           inpad;
     H5T_cset_t          cset;
     H5T_str_t           strpad;
     herr_t              ret;
+    int                 retval=-1;
 
     TESTING("some type functions for bitfield");
 
@@ -4782,16 +4786,18 @@ test_bitfield_funcs(void)
         goto error;
     } /* end if */
 
-    H5Tclose(type);
-    H5Tclose(ntype);
-    PASSED();
-    reset_hdf5();
-    return 0;
+    retval = 0;
 
  error:
+
+    if (retval == -1) retval = 1;
+
+    HDfree(tag);
+    H5Tclose(ntype);
     H5Tclose(type);
+    if (retval == 0) PASSED();
     reset_hdf5();
-    return 1;
+    return retval;
 }
 
 
@@ -7045,11 +7051,13 @@ error:
  */
 int test_utf_ascii_conv(void)
 {
-    hid_t fid;
-    hid_t did;
-    hid_t utf8_vtid, ascii_vtid;
-    hid_t utf8_tid, ascii_tid;
-    hid_t sid;
+    hid_t fid = -1;
+    hid_t did = -1;
+    hid_t utf8_vtid = -1;
+    hid_t ascii_vtid = -1;
+    hid_t utf8_tid = -1;
+    hid_t ascii_tid = -1;
+    hid_t sid = -1;
     const char *utf8_w = "foo!";
     char *ascii_r = NULL;
     const char *ascii_w = "bar!";
diff --git a/test/external.c b/test/external.c
index df72263..7e535c3 100644
--- a/test/external.c
+++ b/test/external.c
@@ -111,6 +111,7 @@ test_1a(hid_t file)
     char	name[256];		/*external file name		*/
     off_t	file_offset;		/*external file offset		*/
     hsize_t	file_size;		/*sizeof external file segment	*/
+    haddr_t     dset_addr;              /*address of dataset            */
 
     TESTING("fixed-size data space, exact storage");
 
@@ -130,7 +131,10 @@ test_1a(hid_t file)
     if((dset = H5Dopen2(file, "dset1", H5P_DEFAULT)) < 0) goto error;
 
     /* Test dataset address.  Should be undefined. */
-    if(H5Dget_offset(dset) != HADDR_UNDEF) goto error;
+    H5E_BEGIN_TRY {
+        dset_addr = H5Dget_offset(dset);
+    } H5E_END_TRY;
+    if(dset_addr != HADDR_UNDEF) goto error;
 
     if((dcpl = H5Dget_create_plist(dset)) < 0) goto error;
     if((n = H5Pget_external_count(dcpl)) < 0) goto error;
diff --git a/test/file_image.c b/test/file_image.c
index a846a3c..c734db8 100644
--- a/test/file_image.c
+++ b/test/file_image.c
@@ -86,15 +86,16 @@ typedef struct {
 static int
 test_properties(void)
 {
-    hid_t   fapl_1;
-    hid_t   fapl_2;
-    char    *buffer;
+    hid_t   fapl_1 = -1;
+    hid_t   fapl_2 = -1;
+    char    *buffer = 0;
     int     count = 10; 
-    void    *temp;
-    char    *temp2;
+    void    *temp = 0;
+    char    *temp2 = 0;
     int     i;   
     size_t  size;
     size_t  temp_size;
+    int     retval = 1;
 
     TESTING("File image property list functions");
     
@@ -145,20 +146,24 @@ test_properties(void)
     VERIFY(temp2 != temp, "Retrieved buffer is the same as previously retrieved buffer");
     VERIFY(0 == HDmemcmp(temp2, buffer, size),"Buffers contain different data");
 
+    retval = 0;
+
+error:
+
     /* Close everything */
-    if(H5Pclose(fapl_1) < 0) FAIL_STACK_ERROR
-    if(H5Pclose(fapl_2) < 0) FAIL_STACK_ERROR
+    if(H5Pclose(fapl_1) < 0) retval = 1;
+    if(H5Pclose(fapl_2) < 0) retval = 1;
     HDfree(buffer);
     HDfree(temp);
     HDfree(temp2);
 
-    PASSED();
-    return 0;
+    if(retval == 0)
+        PASSED();
 
-error:
-    return 1; 
+    return retval;
 } /* end test_properties() */
 
+
 /******************************************************************************
  * Function:    malloc_cb
  *
@@ -181,6 +186,7 @@ malloc_cb(size_t size, H5FD_file_image_op_t op, void *udata)
     return HDmalloc(size);
 }
 
+
 /******************************************************************************
  * Function:    memcpy_cb
  *
@@ -203,6 +209,7 @@ memcpy_cb(void *dest, const void *src, size_t size, H5FD_file_image_op_t op, voi
     return HDmemcpy(dest, src, size);
 }
 
+
 /******************************************************************************
  * Function:    realloc_cb
  *
@@ -225,6 +232,7 @@ realloc_cb(void *ptr, size_t size, H5FD_file_image_op_t op, void *udata)
     return HDrealloc(ptr,size);
 }
 
+
 /******************************************************************************
  * Function:    free_cb
  *
@@ -246,6 +254,7 @@ free_cb(void *ptr, H5FD_file_image_op_t op, void *udata)
     return(SUCCEED);
 }
 
+
 /******************************************************************************
  * Function:    udata_copy_cb
  *
@@ -269,6 +278,7 @@ udata_copy_cb(void *udata)
     return udata;
 }
 
+
 /******************************************************************************
  * Function:    udata_free_cb
  *
@@ -292,6 +302,7 @@ udata_free_cb(void *udata)
     return(SUCCEED);
 }
 
+
 /******************************************************************************
  * Function:    reset_udata
  *
@@ -310,6 +321,7 @@ reset_udata(udata_t *u)
     u->malloc_src = u->memcpy_src = u->realloc_src = u->free_src = H5FD_FILE_IMAGE_OP_NO_OP;
 }
 
+
 /******************************************************************************
  * Function:    test_callbacks
  *
@@ -498,6 +510,7 @@ error:
     return 1;
 } /* test_callbacks() */
 
+
 /******************************************************************************
  * Function:    test_core
  *
@@ -519,7 +532,7 @@ test_core(void)
     udata_t *udata;
     unsigned char *file_image;
     char    filename[1024];
-    char    src_dir_filename[1024];
+    char    copied_filename[1024];
     const char *tmp = NULL;
     size_t  size;
     hsize_t dims[2];
@@ -542,16 +555,15 @@ test_core(void)
     tmp = h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
     VERIFY(tmp != NULL, "h5_fixname failed");
 
-    /* convert file name to srcdir file name.  Make a copy as 
-     * H5_get_srcdir_filename() simply sets up the file name in its
-     * own buffer each time it is called -- overwriting the previous
-     * value.
-     */
-    tmp = H5_get_srcdir_filename(filename);
-    VERIFY(tmp != NULL, "H5_get_srcdir_filename failed");
-    VERIFY(strlen(tmp) < 1023, "srcdir file name too long.");
-    HDstrncpy(src_dir_filename, tmp, 1023);
-    src_dir_filename[1023] = '\0';
+    /* Append ".copy" to the filename from the source directory */
+    VERIFY(HDstrlen(filename) < (1023 - 5), "file name too long.");
+    HDstrncpy(copied_filename, filename, 1023);
+    copied_filename[1023] = '\0';
+    HDstrcat(copied_filename, ".copy");
+
+    /* Make a copy of the data file from svn. */
+    ret = h5_make_local_copy(filename, copied_filename);
+    VERIFY(ret >= 0, "h5_make_local_copy");
 
     /* Allocate and initialize udata */
     udata = (udata_t *)HDmalloc(sizeof(udata_t));
@@ -566,7 +578,7 @@ test_core(void)
 
     /* Test open (no file image) */
     reset_udata(udata);
-    file = H5Fopen(src_dir_filename, H5F_ACC_RDWR, fapl);
+    file = H5Fopen(copied_filename, H5F_ACC_RDONLY, fapl);
     VERIFY(file >= 0, "H5Fopen failed");
     VERIFY(udata->used_callbacks == MALLOC, "opening a core file used the wrong callbacks");
     VERIFY(udata->malloc_src == H5FD_FILE_IMAGE_OP_FILE_OPEN, "Malloc callback came from wrong sourc in core open");
@@ -579,7 +591,7 @@ test_core(void)
     VERIFY(udata->free_src == H5FD_FILE_IMAGE_OP_FILE_CLOSE, "Free callback came from wrong sourc in core close");
 
     /* Reopen file */
-    file = H5Fopen(src_dir_filename, H5F_ACC_RDWR, fapl);
+    file = H5Fopen(copied_filename, H5F_ACC_RDWR, fapl);
     VERIFY(file >= 0, "H5Fopen failed");
 
     /* Set up a new dset */
@@ -613,7 +625,7 @@ test_core(void)
     VERIFY(udata->free_src == H5FD_FILE_IMAGE_OP_FILE_CLOSE, "Free callback came from wrong sourc in core close");
 
     /* Create file image buffer */
-    fd = HDopen(src_dir_filename, O_RDONLY, 0666);
+    fd = HDopen(copied_filename, O_RDONLY, 0666);
     VERIFY(fd > 0, "open failed");
     ret = HDfstat(fd, &sb);
     VERIFY(ret == 0, "fstat failed");
@@ -627,13 +639,14 @@ test_core(void)
     if(H5Pset_file_image(fapl, file_image, size) < 0) FAIL_STACK_ERROR
 
     /* Test open with file image */
-    if((file = H5Fopen("dne.h5", H5F_ACC_RDWR, fapl)) < 0) FAIL_STACK_ERROR
+    if((file = H5Fopen("dne.h5", H5F_ACC_RDONLY, fapl)) < 0) FAIL_STACK_ERROR
     if(H5Fclose(file) < 0) FAIL_STACK_ERROR
 
     /* Release resources */
     h5_cleanup(FILENAME, fapl); 
     HDfree(udata);
     HDfree(file_image);
+    HDremove(copied_filename);
     
     PASSED();
 
@@ -643,6 +656,7 @@ error:
     return 1;
 } /* end test_core() */
 
+
 /******************************************************************************
  * Function:    test_get_file_image
  *
@@ -895,6 +909,7 @@ error:
     return 1;
 } /* end test_get_file_image() */
 
+
 /******************************************************************************
  * Function:    test_get_file_image_error_rejection
  *
@@ -1278,7 +1293,7 @@ main(void)
 
     /* test H5Fget_file_image() with sec2 driver */
     fapl = H5Pcreate(H5P_FILE_ACCESS);
-    if(0 > H5Pset_fapl_sec2(fapl))
+    if(H5Pset_fapl_sec2(fapl) < 0)
         errors++;
     else
         errors += test_get_file_image("H5Fget_file_image() with sec2 driver",
@@ -1286,7 +1301,7 @@ main(void)
 
     /* test H5Fget_file_image() with stdio driver */
     fapl = H5Pcreate(H5P_FILE_ACCESS);
-    if(0 > H5Pset_fapl_stdio(fapl))
+    if(H5Pset_fapl_stdio(fapl) < 0)
         errors++;
     else
         errors += test_get_file_image("H5Fget_file_image() with stdio driver",
@@ -1294,7 +1309,7 @@ main(void)
 
     /* test H5Fget_file_image() with core driver */
     fapl = H5Pcreate(H5P_FILE_ACCESS);
-    if(0 > H5Pset_fapl_core(fapl, (size_t)(64 *1024), TRUE))
+    if(H5Pset_fapl_core(fapl, (size_t)(64 *1024), TRUE) < 0)
         errors++;
     else
         errors += test_get_file_image("H5Fget_file_image() with core driver",
diff --git a/test/freespace.c b/test/freespace.c
index 6960e6d..c0df4c8 100644
--- a/test/freespace.c
+++ b/test/freespace.c
@@ -1522,8 +1522,10 @@ test_fs_sect_merge(hid_t fapl)
     /* Free the section node(s) */
     if(TEST_sect_free((H5FS_section_info_t *)sect_node1) < 0)
 	TEST_ERROR
+    sect_node1 = NULL;
     if(TEST_sect_free((H5FS_section_info_t *)sect_node2) < 0)
 	TEST_ERROR
+    sect_node2 = NULL;
 
     /* Close the free space manager */
     if(H5FS_close(f, H5P_DATASET_XFER_DEFAULT, frsp) < 0)
diff --git a/test/h5test.c b/test/h5test.c
index 7faba81..91497e3 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -408,7 +408,7 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
 
             if (!fullname[0])
                 /* We didn't append the prefix yet */
-                HDstrncpy(fullname, prefix, MIN(strlen(prefix), size));
+                HDstrncpy(fullname, prefix, MIN(HDstrlen(prefix), size));
 
             if (HDstrlen(fullname) + HDstrlen(base_name) + 1 < size) {
                 /*
@@ -735,6 +735,8 @@ h5_set_info_object(void)
 
         valp = envp = next = HDstrdup(envp);
 
+        if (!valp) return 0;
+
         /* create an INFO object if not created yet */
         if (h5_io_info_g == MPI_INFO_NULL)
             MPI_Info_create(&h5_io_info_g);
@@ -749,7 +751,7 @@ h5_set_info_object(void)
             /* copy key/value pair into temporary buffer */
             len = strcspn(valp, ";");
             next = &valp[len];
-            key_val = calloc(1, len + 1);
+            key_val = (char *)calloc(1, len + 1);
 
             /* increment the next pointer past the terminating semicolon */
             if (*next == ';')
@@ -761,8 +763,10 @@ h5_set_info_object(void)
             while (*namep && (*namep == ' ' || *namep == '\t'))
                 namep++;
 
+            if (!*namep) continue; /* was all white space, so move to next k/v pair */
+
             /* eat up any ending white spaces */
-            endp = &namep[strlen(namep) - 1];
+            endp = &namep[HDstrlen(namep) - 1];
 
             while (endp && (*endp == ' ' || *endp == '\t'))
                 *endp-- = '\0';
@@ -1057,7 +1061,7 @@ getenv_all(MPI_Comm comm, int root, const char* name)
   if(mpi_rank == root) {
       env = HDgetenv(name);
       if(env) {
-    len = HDstrlen(env);
+    len = (int)HDstrlen(env);
     MPI_Bcast(&len, 1, MPI_INT, root, comm);
     MPI_Bcast(env, len, MPI_CHAR, root, comm);
       }
@@ -1071,9 +1075,9 @@ getenv_all(MPI_Comm comm, int root, const char* name)
       MPI_Bcast(&len, 1, MPI_INT, root, comm);
       if(len >= 0) {
     if(env == NULL)
-        env = (char*) HDmalloc(len+1);
-    else if(strlen(env) < len)
-        env = (char*) HDrealloc(env, len+1);
+        env = (char*) HDmalloc((size_t)len+1);
+    else if(HDstrlen(env) < (size_t)len)
+        env = (char*) HDrealloc(env, (size_t)len+1);
 
     MPI_Bcast(env, len, MPI_CHAR, root, comm);
     env[len] = '\0';
@@ -1125,7 +1129,11 @@ h5_make_local_copy(const char *origfilename, const char *local_copy_name)
 #ifdef H5_VMS 
     HDstrcat(filename, origfilename);
 #else
-    char * srcdir = HDgetenv("srcdir"); /* The source directory */
+    const char * srcdir = HDgetenv("srcdir"); /* The source directory */
+
+    /* Check for using the srcdir from configure time */
+    if(NULL == srcdir)
+        srcdir = config_srcdir;
 
     if(srcdir && ((HDstrlen(srcdir) +
                    HDstrlen(origfilename) + 6) < FILENAME_BUF_SIZE)) {
diff --git a/test/h5test.h b/test/h5test.h
index 3afe1a5..90e4cad 100644
--- a/test/h5test.h
+++ b/test/h5test.h
@@ -175,7 +175,7 @@ H5TEST_DLL void ParseTestVerbosity(char *argv);
 H5TEST_DLL int  GetTestNumErrs(void);
 H5TEST_DLL void  IncTestNumErrs(void);
 H5TEST_DLL const void *GetTestParameters(void);
-H5TEST_DLL int  TestErrPrintf(const char *format, ...);
+H5TEST_DLL int  TestErrPrintf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
 H5TEST_DLL void SetTest(const char *testname, int action);
 H5TEST_DLL void TestAlarmOn(void);
 H5TEST_DLL void TestAlarmOff(void);
diff --git a/test/mf.c b/test/mf.c
index 005e5a0..38d8378 100644
--- a/test/mf.c
+++ b/test/mf.c
@@ -108,12 +108,19 @@ static unsigned test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t
 
 /*
  * Verify statistics for the free-space manager
+ *
+ *  Modifications:
+ *      Vailin Choi; July 2012
+ *      To ensure "f" and "frsp" are valid pointers 
  */
 static int
 check_stats(const H5F_t *f, const H5FS_t *frsp, frspace_state_t *state)
 {
     H5FS_stat_t frspace_stats;             /* Statistics about the heap */
 
+    HDassert(f);
+    HDassert(frsp);
+
     /* Get statistics for free-space and verify they are correct */
     if(H5FS_stat_info(f, frsp, &frspace_stats) < 0)
         FAIL_STACK_ERROR
@@ -1052,6 +1059,10 @@ error:
  *	The block is allocated from file allocation
  *	Deallocate the block which will be returned to free-space manager
  *	(the space is shrunk and freed since it is at end of file)
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Initialize the new field "allow_eoa_shrink_only" for user data.
  */
 static unsigned
 test_mf_fs_alloc_free(hid_t fapl)
@@ -1117,6 +1128,7 @@ test_mf_fs_alloc_free(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space manager */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1203,6 +1215,7 @@ test_mf_fs_alloc_free(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space manager */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1287,6 +1300,7 @@ test_mf_fs_alloc_free(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space manager */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1402,6 +1416,10 @@ error:
  * 	Try to extend the allocated block by 50 from the free-space_manager:
  *	Fail: section A does not adjoin section B (70+20 != address of section B) even though
  *	      the requested-size (50) equal to size of section B (50)
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Initialize the new field "allow_eoa_shrink_only" for user data.
  */
 static unsigned
 test_mf_fs_extend(hid_t fapl)
@@ -1468,6 +1486,7 @@ test_mf_fs_extend(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space manager */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node1, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1585,6 +1604,7 @@ test_mf_fs_extend(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node1, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1697,6 +1717,7 @@ test_mf_fs_extend(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node1, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1809,6 +1830,7 @@ test_mf_fs_extend(hid_t fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A of size=20 to free-space */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node1, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -1938,6 +1960,10 @@ error:
  *			which will absorb meta_aggr to the section:
  *			  section size + remaining size of aggregator is > aggr->alloc_size,
  *			  section is allowed to absorb an aggregator (allow_sect_absorb is true)
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Initialize the new field "allow_eoa_shrink_only" for user data.
  */
 static unsigned
 test_mf_fs_absorb(const char *env_h5_drvr, hid_t fapl)
@@ -2001,6 +2027,7 @@ test_mf_fs_absorb(const char *env_h5_drvr, hid_t fapl)
         udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
         udata.alloc_type = type;
         udata.allow_sect_absorb = TRUE;
+	udata.allow_eoa_shrink_only = FALSE;
 
         /* When adding, meta_aggr is absorbed onto the beginning of the section */
         if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -2073,6 +2100,7 @@ test_mf_fs_absorb(const char *env_h5_drvr, hid_t fapl)
         udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
         udata.alloc_type = type;
         udata.allow_sect_absorb = TRUE;
+        udata.allow_eoa_shrink_only = FALSE;
 
         /* When adding, meta_aggr is absorbed onto the end of the section */
         if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -3114,7 +3142,7 @@ test_mf_aggr_alloc7(const char *env_h5_drvr, hid_t fapl)
 
         /* sdata_aggr info is reset to 0 */
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
-        if (sdata_addr != 0) TEST_ERROR
+        if (sdata_addr != HADDR_UNDEF) TEST_ERROR
         if (sdata_size != 0) TEST_ERROR
 
         /* Verify that meta_aggr's unused space of 1968 is freed to free-space */
@@ -3165,8 +3193,13 @@ error:
  * To verify that a block can be extended from the aggregator
  *
  *	Test 1: Allocate block A from meta_aggr which is at end of file
- *		Try to extend a block which adjoins the aggregator
- *		H5MF_try_extend() succeeds: meta_aggr is extended by extended-request and meta_aggr's info is updated
+ *		Try to extend the block which adjoins the aggregator that is at end of file
+ *		  a. block size < (% * aggr->alloc_size)
+ *		     The block is allocated from the aggregator
+ *		  b. block size > (% * aggr->alloc_size) but block size < aggr->alloc_size
+ *		     The block is extended by aggr->alloc_size and the block is allocated from the aggregator
+ *		  c. block size > (% * aggr->alloc_size) but block size > aggr->alloc_size
+ *		     The block is extended by extended-request and the block is allocated from the aggregator
  *
  *	Test 2: Allocate block A from meta_aggr
  *		Allocate block B from sdata_aggr so that meta_aggr is not at end of file
@@ -3233,7 +3266,7 @@ test_mf_aggr_extend(const char *env_h5_drvr, hid_t fapl)
 
         new_addr = addr - 10;
 
-        /* Try to extend the block */
+        /* Try to extend the block by an amount < (% * aggr->alloc_size) */
         extended = H5MF_try_extend(f, H5P_DATASET_XFER_DEFAULT, type, (haddr_t)new_addr, (hsize_t)10, (hsize_t)(TEST_BLOCK_SIZE50));
 
         /* should succeed */
@@ -3244,15 +3277,42 @@ test_mf_aggr_extend(const char *env_h5_drvr, hid_t fapl)
 
         if (new_ma_addr != (addr+TEST_BLOCK_SIZE50))
             TEST_ERROR
-        if (new_ma_size != f->shared->meta_aggr.alloc_size) TEST_ERROR
+        if (new_ma_size != (f->shared->meta_aggr.alloc_size - TEST_BLOCK_SIZE50)) TEST_ERROR
 
-        /* Restore info for meta_aggr */
-        f->shared->meta_aggr.addr = ma_addr;
-        f->shared->meta_aggr.size = ma_size;
+        /* Free the allocated blocks */
+        H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr, (hsize_t)TEST_BLOCK_SIZE50);
+
+        /* Try to extend the block by an amount > (% * aggr->alloc_size) but amount < aggr->alloc_size */
+        extended = H5MF_try_extend(f, H5P_DATASET_XFER_DEFAULT, type, (haddr_t)new_addr, (hsize_t)10, (hsize_t)(TEST_BLOCK_SIZE700));
+
+        /* should succeed */
+        if(!extended)
+            TEST_ERROR
+
+        H5MF_aggr_query(f, &(f->shared->meta_aggr), &new_ma_addr, &new_ma_size);
+
+        if (new_ma_addr != (addr + TEST_BLOCK_SIZE700))
+            TEST_ERROR
+        if (new_ma_size != (f->shared->meta_aggr.alloc_size * 2 - TEST_BLOCK_SIZE700)) TEST_ERROR
 
         /* Free the allocated blocks */
-        H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr, (hsize_t)TEST_BLOCK_SIZE30);
-        H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, (ma_addr+ma_size), (hsize_t)TEST_BLOCK_SIZE50);
+        H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr, (hsize_t)TEST_BLOCK_SIZE700);
+
+        /* Try to extend the block by an amount > (% * aggr->alloc_size) but amount > aggr->alloc_size */
+        extended = H5MF_try_extend(f, H5P_DATASET_XFER_DEFAULT, type, (haddr_t)new_addr, (hsize_t)10, (hsize_t)(TEST_BLOCK_SIZE2058));
+
+        /* should succeed */
+        if(!extended)
+            TEST_ERROR
+
+        H5MF_aggr_query(f, &(f->shared->meta_aggr), &new_ma_addr, &new_ma_size);
+
+        if (new_ma_addr != (addr + TEST_BLOCK_SIZE2058))
+            TEST_ERROR
+        if (new_ma_size != f->shared->meta_aggr.size) TEST_ERROR
+
+        /* Free the allocated blocks */
+        H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr, (hsize_t)TEST_BLOCK_SIZE2058);
 
         if(H5Fclose(file) < 0)
             FAIL_STACK_ERROR
@@ -3430,15 +3490,18 @@ error:
  *
  *	Test 2: H5MF_alloc() block A from meta_aggr
  *		H5MF_alloc() block B from sdata_aggr
- *		H5MF_try_shrink() block B should merge it onto the end of meta_aggr
- *			because H5F_FS_MERGE_METADATA|H5F_FS_MERGE_RAWDATA is on for
- *			sec2 driver's FLMAP_SINGLE
+ *		H5MF_try_shrink() block B should merge it back to the end of sdata_aggr
+ *			because sec2 driver is FLMAP_DICHOTOMY by default
  *
  *	Test 3: H5MF_alloc() block A from meta_aggr
  *		H5MF_alloc() block B from meta_aggr
  *		H5MF_alloc() block C from meta_aggr
  *		H5MF_try_shrink() block B should fail since it does not adjoin the
  *			beginning nor the end of meta_aggr
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Changes due to the switch to H5FD_FLMAP_DICHOTOMY
  */
 static unsigned
 test_mf_aggr_absorb(const char *env_h5_drvr, hid_t fapl)
@@ -3450,7 +3513,7 @@ test_mf_aggr_absorb(const char *env_h5_drvr, hid_t fapl)
     H5FD_mem_t 		type, stype;
     haddr_t		addr1, addr2, addr3, saddr1;
     haddr_t 		ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF;
-    haddr_t 		sdata_addr=HADDR_UNDEF, new_sdata_addr=HADDR_UNDEF;
+    haddr_t 		new_sdata_addr=HADDR_UNDEF;
     hsize_t 		ma_size=0, new_ma_size=0;
     hsize_t 		sdata_size=0, new_sdata_size=0;
     hbool_t             contig_addr_vfd;        /* Whether VFD used has a contigous address space */
@@ -3542,20 +3605,20 @@ test_mf_aggr_absorb(const char *env_h5_drvr, hid_t fapl)
         stype = H5FD_MEM_DRAW;
         saddr1 = H5MF_alloc(f, stype, H5P_DATASET_XFER_DEFAULT, (hsize_t)TEST_BLOCK_SIZE50);
 
-        H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
+        H5MF_aggr_query(f, &(f->shared->sdata_aggr), NULL, &sdata_size);
 
         /* should succeed */
         if(H5MF_try_shrink(f, stype, H5P_DATASET_XFER_DEFAULT, saddr1, (hsize_t)TEST_BLOCK_SIZE50) <= 0)
             TEST_ERROR
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &new_sdata_addr, &new_sdata_size);
-        if (new_sdata_addr != sdata_addr) TEST_ERROR
-        if (new_sdata_size != sdata_size) TEST_ERROR
+        if (new_sdata_addr != saddr1) TEST_ERROR
+        if (new_sdata_size != sdata_size + TEST_BLOCK_SIZE50) TEST_ERROR
 
         /* meta_aggr info should be updated because the block is absorbed into the meta_aggr */
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &new_ma_addr, &new_ma_size);
         if (new_ma_addr != ma_addr) TEST_ERROR
-        if (new_ma_size != (ma_size+TEST_BLOCK_SIZE50)) TEST_ERROR
+        if (new_ma_size != (ma_size)) TEST_ERROR
 
         H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr1, (hsize_t)TEST_BLOCK_SIZE30);
 
@@ -3953,6 +4016,10 @@ error:
  *	Allocate a block of size=40
  *	The free-space manager is unable to fulfill the request
  *	The block is allocated from file allocation and should be aligned
+ *
+ * Modifications:
+ * 	Vailin Choi; July 2012
+ *	Initialize the new field "allow_eoa_shrink_only" for user data.
  */
 static unsigned
 test_mf_align_fs(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
@@ -4012,6 +4079,7 @@ test_mf_align_fs(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space manager */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -4081,6 +4149,7 @@ test_mf_align_fs(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
     udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
     udata.alloc_type = type;
     udata.allow_sect_absorb = TRUE;
+    udata.allow_eoa_shrink_only = FALSE;
 
     /* Add section A to free-space manager */
     if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -4170,6 +4239,7 @@ test_mf_align_fs(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
         udata.dxpl_id = H5P_DATASET_XFER_DEFAULT;
         udata.alloc_type = type;
         udata.allow_sect_absorb = TRUE;
+	udata.allow_eoa_shrink_only = FALSE;
 
         /* Add section A to free-space manager */
         if (H5FS_sect_add(f, H5P_DATASET_XFER_DEFAULT, f->shared->fs_man[type], (H5FS_section_info_t *)sect_node, H5FS_ADD_RETURNED_SPACE, &udata))
@@ -4551,8 +4621,7 @@ error:
  *		request-size < aggr->alloc_size
  *		fragment size > (aggr->alloc_size - request-size)
  *	Result:
- *		A block of aggr->alloc_size + (fragment size - (aggr->alloc_size - request-size))
- *			is extended from file allocation for the aggregator
+ *		A block of (fragment size  + request-size) is extended from file allocation for the aggregator
  *		The second block of 50 is allocated from the aggregator and should be aligned
  *		Fragment from alignment of aggregator allocation is freed to free-space:[4126, 4066]
  *		There is space of 2018 left in meta_aggr
@@ -4577,12 +4646,14 @@ error:
  *	Result:
  *		A block of meta_aggr->alloc_size is allocated from file allocation for the aggregator
  *		Fragment from alignment of file allocation is freed to free-space:[14336, 2048]
- *		Since this fragment adjoins sdata_aggr and fulfills "absorb" condition,
- *		  the space left in sdata_aggr is absorbed into the fragment and freed to free-space: [12318, 2018]
- *		other_aggr is reset to 0
+ *		other_aggr is [12318, 2018]
  *		The third block of 80 is allocated from the aggregator and should be aligned
  *		There is space of 1968 left in meta_aggr
  *		EOA is at 18432
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Changes due to the switch to H5FD_FLMAP_DICHOTOMY
  */
 static unsigned
 test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
@@ -4593,7 +4664,7 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
     h5_stat_size_t      file_size;              /* File size */
     H5FD_mem_t 		type, stype;
     haddr_t		addr1, addr2, addr3, saddr1;
-    frspace_state_t 	state;
+    frspace_state_t 	state[H5FD_MEM_NTYPES];
     haddr_t 		ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
     hsize_t 		ma_size=0, sdata_size=0, mis_align=0;
     hsize_t		alignment=0, tmp=0;
@@ -4646,11 +4717,11 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
         if (addr1 % alignment) TEST_ERROR
 
         /* fragment for alignment of block 30 is freed to free-space */
-        HDmemset(&state, 0, sizeof(frspace_state_t));
+        HDmemset(&state, 0, sizeof(frspace_state_t) * H5FD_MEM_NTYPES);
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -4670,9 +4741,9 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 50 is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -4703,9 +4774,9 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 30 for sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         /* Verify that the allocated block is aligned */
@@ -4722,12 +4793,13 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
          * For alignment = 1024, alloc_size = 2048:
          * 	fragment for unused space in meta_aggr is freed to free-space
          * For alignment = 4096, alloc_size = 2048:
-         * 	fragment from alignment of file allocation absorbs sdata_aggr's remaining space
+         * 	fragment from alignment of ma_addr is freed
+         *	block 30 is allocated from ma_addr
          */
         mis_align = 0;
         if ((alignment == TEST_ALIGN1024) && (tmp = (ma_addr % alignment)))
             mis_align = alignment - tmp;
-        else if ((alignment == TEST_ALIGN4096) && (tmp = (sdata_addr % alignment)))
+        else if ((alignment == TEST_ALIGN4096) && (tmp = ((sdata_addr + sdata_size) % alignment)))
             mis_align = alignment - tmp;
 
         /* Allocate a block of 80 from meta_aggr */
@@ -4738,9 +4810,9 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 80 is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -4749,8 +4821,15 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
             TEST_ERROR
 
         /* Verify total size of free space after all the allocations */
-        if(check_stats(f, f->shared->fs_man[type], &state))
-            TEST_ERROR
+	if(f->shared->fs_man[type]) {
+	    if(check_stats(f, f->shared->fs_man[type], &(state[type])))
+		TEST_ERROR
+	}
+
+	if(f->shared->fs_man[stype]) {
+	    if(check_stats(f, f->shared->fs_man[stype], &(state[stype])))
+		TEST_ERROR
+	}
 
         H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr1, (hsize_t)TEST_BLOCK_SIZE30);
         H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr2, (hsize_t)TEST_BLOCK_SIZE50);
@@ -4910,6 +4989,11 @@ error:
  *		The meta_aggr is updated to point to the new space
  *		The block of 1034 is allocated from the new block and should be aligned
  *		There is space of 1014 left in meta_aggr
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Changes due to the switch to H5FD_FLMAP_DICHOTOMY
+ *
  */
 static unsigned
 test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
@@ -4921,7 +5005,7 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
     H5FD_mem_t 		type, stype;
     haddr_t		addr1, addr2, addr3;
     haddr_t		saddr1, saddr2, saddr3;
-    frspace_state_t 	state;
+    frspace_state_t 	state[H5FD_MEM_NTYPES];
     haddr_t 		ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
     hsize_t 		ma_size=0, sdata_size=0, mis_align=0;
     hsize_t		alignment=0, tmp=0;
@@ -4975,11 +5059,11 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
         if (addr1 % alignment) TEST_ERROR
 
         /* fragment for alignment of block 30 is freed to free-space */
-        HDmemset(&state, 0, sizeof(frspace_state_t));
+        HDmemset(&state, 0, sizeof(frspace_state_t) * H5FD_MEM_NTYPES);
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -4999,9 +5083,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 50 is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -5034,9 +5118,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 30 for sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5055,9 +5139,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 50 for sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5076,9 +5160,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 80 for sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5098,9 +5182,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 1034 for meta_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         /* calculate unused space in meta_aggr that is freed to free-space after block 1034 */
@@ -5110,9 +5194,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for unused space in meta_aggr after block 1034 is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -5121,8 +5205,15 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
             TEST_ERROR
 
         /* Verify total size of free space after all allocations */
-        if(check_stats(f, f->shared->fs_man[type], &state))
-            TEST_ERROR
+	if(f->shared->fs_man[type]) {
+	    if(check_stats(f, f->shared->fs_man[type], &(state[type])))
+		TEST_ERROR
+	}
+
+	if(f->shared->fs_man[stype]) {
+	    if(check_stats(f, f->shared->fs_man[stype], &(state[stype])))
+		TEST_ERROR
+	}
 
         if(H5Fclose(file) < 0)
             FAIL_STACK_ERROR
@@ -5326,8 +5417,10 @@ test_mf_align_alloc4(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
         if (addr3 % alignment) TEST_ERROR
 
         /* Verify total size of free space after all allocations */
-        if(check_stats(f, f->shared->fs_man[type], &state))
-            TEST_ERROR
+	if(f->shared->fs_man[type]) {
+	    if(check_stats(f, f->shared->fs_man[type], &state))
+		TEST_ERROR
+	}
 
         if(H5Fclose(file) < 0)
             FAIL_STACK_ERROR
@@ -5413,6 +5506,10 @@ error:
  *		sdata_aggr is reset to 0
  *		EOA is 14346
  *		meta_aggr and sdata_aggr are all 0
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Changes due to the switch to H5FD_FLMAP_DICHOTOMY
  */
 static unsigned
 test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
@@ -5423,7 +5520,7 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
     h5_stat_size_t      file_size;
     H5FD_mem_t 		type, stype;
     haddr_t		addr1, addr2, saddr1;
-    frspace_state_t 	state;
+    frspace_state_t 	state[H5FD_MEM_NTYPES];
     haddr_t 		ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF;
     haddr_t 		sdata_addr=HADDR_UNDEF, new_sdata_addr=HADDR_UNDEF;
     hsize_t 		ma_size=0, new_ma_size=0, sdata_size=0, new_sdata_size=0;
@@ -5482,18 +5579,16 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
         if ((addr1 + TEST_BLOCK_SIZE30) != ma_addr) TEST_ERROR
 
         /* fragment for alignment of block 30 is freed to free-space */
-        HDmemset(&state, 0, sizeof(frspace_state_t));
+        HDmemset(&state, 0, sizeof(frspace_state_t) * H5FD_MEM_NTYPES);
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         /* calculate fragment for alignment of block 30 from sdata_aggr */
         mis_align = 0;
-        if ((alignment == TEST_ALIGN1024) && (tmp = (ma_addr + ma_size) % alignment))
-            mis_align = alignment - tmp;
-        else if ((alignment == TEST_ALIGN4096) && (tmp = (ma_addr % alignment)))
+        if ((tmp = (ma_addr + ma_size) % alignment))
             mis_align = alignment - tmp;
 
         /* Allocate a block of 30 from sdata_aggr */
@@ -5505,9 +5600,9 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment of alignment for block 30 in sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5515,9 +5610,7 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* calculate fragment for alignment of block 2058 from meta_aggr */
         mis_align = 0;
-        if ((alignment == TEST_ALIGN1024) && (tmp = (sdata_addr + sdata_size) % alignment))
-            mis_align = alignment - tmp;
-        else if ((alignment == TEST_ALIGN4096) && (tmp = (sdata_addr % alignment)))
+        if ((tmp = (sdata_addr + sdata_size) % alignment))
             mis_align = alignment - tmp;
 
         /* Allocate a block of 2058 from meta_aggr */
@@ -5528,27 +5621,30 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 2058 is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         /* Verify total size of free space after all allocations */
-        if(check_stats(f, f->shared->fs_man[type], &state))
-            TEST_ERROR
+	if(f->shared->fs_man[type]) {
+	    if(check_stats(f, f->shared->fs_man[type], &(state[type])))
+		TEST_ERROR
+	}
+
+	if(f->shared->fs_man[stype]) {
+	    if(check_stats(f, f->shared->fs_man[stype], &(state[stype])))
+		TEST_ERROR
+	}
 
         /* nothing is changed in meta_aggr */
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &new_ma_addr, &new_ma_size);
-        if (alignment == TEST_ALIGN1024 && (new_ma_addr != ma_addr || new_ma_size != ma_size))
-            TEST_ERROR
-        else if (alignment == TEST_ALIGN4096 && (new_ma_addr != 0 || new_ma_size != 0))
+        if (new_ma_addr != ma_addr || new_ma_size != ma_size)
             TEST_ERROR
 
         /* nothing is changed in sdata_aggr */
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &new_sdata_addr, &new_sdata_size);
-        if (alignment == TEST_ALIGN1024 && (new_sdata_addr != sdata_addr || new_sdata_size != sdata_size))
-            TEST_ERROR
-        else if (alignment == TEST_ALIGN4096 && ((new_sdata_addr != 0 || new_sdata_size != 0)))
+        if (new_sdata_addr != sdata_addr || new_sdata_size != sdata_size)
             TEST_ERROR
 
         if(H5Fclose(file) < 0)
@@ -5640,21 +5736,16 @@ error:
  *	Result:
  *		A block of sdata_aggr->alloc_size is allocated from file allocation
  *		Fragment from alignment of file allocation is freed to free-space: [6144, 2048]
- *		This fragment adjoins meta_aggr and fulfills "absorb" condition,
- *			the remaining space left in meta_aggr is absorbed into the fragment and
- *			freed to free-space:[4126, 2018]
- *		meta_aggr is reset to 0
  *		The first block of 30 is allocated from the aggregator and should be aligned
  *		There is space of 2018 left in sdata_aggr
- *		EOA is 5120
+ *		EOA is 10240
  *
  *	Allocate second block (50) from sdata_aggr:
- *		(request-size+fragment size) is <= sdata_aggr->size
+ *		(request-size+fragment size) is > sdata_aggr->size
  *		request-size < sdata_aggr->alloc_size
  *		fragment size > (sdata_aggr->alloc_size - request-size)
  *	Result:
- *		A block of sdata_aggr->alloc_size + (fragment size - (sdata_aggr->alloc_size - request-size))
- *			is extended from file allocation for the aggregator
+ *		A block of (fragment size + request-size) is extended from file allocation for the aggregator
  *		The second block of 50 is allocated from sdata_aggr and should be aligned
  *		Fragment from alignment of aggregator allocation is freed to free-space:[8222, 4066]
  *		There is space of 2018 left in sdata_aggr
@@ -5665,8 +5756,7 @@ error:
  *		request-size < sdata_aggr->alloc_size
  *		fragment size > (sdata_aggr->alloc_size - request-size)
  *	Result:
- *		A block of sdata_aggr->alloc_size+(fragment size-(sdata_aggr->alloc_size-request-size))
- *			is extended from file allocation for sdata_aggr
+ *		A block of (fragment size + request-size) is extended from file allocation for sdata_aggr
  *		The third block of 80 is allocated from sdata_aggr and should be aligned
  *		Fragment from alignment of aggregator allocation is freed to free-space:[12338, 4046]
  *		There is space of 2018 left in sdata_aggr
@@ -5683,6 +5773,10 @@ error:
  *		Fragment from alignment of file allocation is freed to free-space:[16464, 4016]
  *		EOA is at 22538
  *		meta_aggr is unchanged
+ *
+ * Modifications:
+ *	Vailin Choi; July 2012
+ *	Changes due to the switch to H5FD_FLMAP_DICHOTOMY
  */
 static unsigned
 test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
@@ -5694,7 +5788,7 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
     H5FD_mem_t 		type, stype;
     haddr_t		addr1, addr2;
     haddr_t		saddr1, saddr2, saddr3;
-    frspace_state_t 	state;
+    frspace_state_t 	state[H5FD_MEM_NTYPES];
     haddr_t 		ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
     hsize_t 		ma_size=0, new_ma_size=0, sdata_size=0;
     hsize_t		alignment=0, mis_align=0, tmp=0;
@@ -5747,11 +5841,11 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
         if (addr1 % alignment) TEST_ERROR
 
         /* fragment for alignment of block 30 in meta_aggr is freed to free-space */
-        HDmemset(&state, 0, sizeof(frspace_state_t));
+        HDmemset(&state, 0, sizeof(frspace_state_t) * H5FD_MEM_NTYPES);
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &ma_addr, &ma_size);
@@ -5760,9 +5854,7 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* calculate fragment for alignment of block 30 in sdata_aggr */
         mis_align = 0;
-        if ((alignment == TEST_ALIGN1024) && (tmp = (ma_addr + ma_size) % alignment))
-            mis_align = alignment - tmp;
-        else if ((alignment == TEST_ALIGN4096) && (tmp = (ma_addr % alignment)))
+        if ((tmp = (ma_addr + ma_size) % alignment))
             mis_align = alignment - tmp;
 
         /* Allocate a block of 30 from sdata_aggr */
@@ -5774,9 +5866,9 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 30 in sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5795,9 +5887,9 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 50 in sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5816,9 +5908,9 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 80 in sdata_aggr is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[stype].tot_space += mis_align;
+            state[stype].tot_sect_count += 1;
+            state[stype].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
@@ -5838,24 +5930,30 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
 
         /* fragment for alignment of block 2058 is freed to free-space */
         if (mis_align) {
-            state.tot_space += mis_align;
-            state.tot_sect_count += 1;
-            state.serial_sect_count += 1;
+            state[type].tot_space += mis_align;
+            state[type].tot_sect_count += 1;
+            state[type].serial_sect_count += 1;
         }
 
         H5MF_aggr_query(f, &(f->shared->meta_aggr), &new_ma_addr, &new_ma_size);
         H5MF_aggr_query(f, &(f->shared->sdata_aggr), &sdata_addr, &sdata_size);
 
-        if (alignment == TEST_ALIGN1024 && (new_ma_addr != ma_addr || new_ma_size != ma_size))
-            TEST_ERROR
-        else if (alignment == TEST_ALIGN4096 && (new_ma_addr != 0 || new_ma_size != 0))
+        if (new_ma_addr != ma_addr && new_ma_size != ma_size)
             TEST_ERROR
 
-        if (sdata_addr != 0 || sdata_size != 0)
+        if (sdata_addr != HADDR_UNDEF || sdata_size != 0)
             TEST_ERROR
 
-        if(check_stats(f, f->shared->fs_man[type], &state))
-            TEST_ERROR
+	if(f->shared->fs_man[type]) {
+	    if(check_stats(f, f->shared->fs_man[type], &(state[type])))
+		TEST_ERROR
+	}
+	
+
+	if(f->shared->fs_man[stype]) {
+	    if(check_stats(f, f->shared->fs_man[stype], &(state[stype])))
+		TEST_ERROR
+	}
 
         if(H5Fclose(file) < 0)
             FAIL_STACK_ERROR
@@ -5876,6 +5974,100 @@ error:
     return(1);
 } /* test_mf_align_alloc6() */
 
+/*
+ * To verify that file space is allocated from the corresponding free-space manager
+ * because H5FD_FLMAP_DICHOTOMY is used as the default free-list mapping.
+ *
+ * (1) Allocate the first block (size 30) of type H5FD_MEM_SUPER
+ * (2) Allocate the second block (size 50) of type H5FD_MEM_SUPER
+ *
+ * (3) Allocate the first block (size 30) of type H5FD_MEM_DRAW
+ *
+ * (4) Free the first block (size 30) of type H5FD_MEM_SUPER
+ *
+ * (5) Allocate the second block (size 30) of type H5FD_MEM_DRAW
+ * (6) Verify that this second block is not the freed block from (3)
+ *
+ * (7) Allocate the second block (size 30) of type H5FD_MEM_DRAW
+ * (8) Free the first block (size 30) of type H5FD_MEM_DRAW
+ *
+ * (9) Allocate the third block (size 30) of type H5FD_MEM_SUPER
+ * (10) Verify that this third block is not freed block from (8)
+ */
+static unsigned
+test_dichotomy(const char *env_h5_drvr, hid_t fapl)
+{
+    hid_t		file = -1;              /* File ID */
+    char		filename[FILENAME_LEN]; /* Filename to use */
+    H5F_t		*f = NULL;              /* Internal file object pointer */
+    H5FD_mem_t 		type, stype;
+    haddr_t		addr1, addr2, addr3, saddr1, saddr2;
+    hbool_t             contig_addr_vfd;        /* Whether VFD used has a contigous address space */
+
+    TESTING("Allocation from raw or metadata free-space manager");
+
+    /* Skip test when using VFDs that don't use the metadata aggregator */
+    contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
+    if(contig_addr_vfd) {
+        /* Set the filename to use for this test (dependent on fapl) */
+        h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+
+        /* Create the file to work on */
+        if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+            FAIL_STACK_ERROR
+
+        /* Get a pointer to the internal file object */
+        if(NULL == (f = (H5F_t *)H5I_object(file)))
+            FAIL_STACK_ERROR
+
+        /* Allocate the first block of type H5FD_MEM_SUPER */
+        type = H5FD_MEM_SUPER;
+        addr1 = H5MF_alloc(f, type, H5P_DATASET_XFER_DEFAULT, (hsize_t)TEST_BLOCK_SIZE30);
+
+        /* Allocate the second block of type H5FD_MEM_SUPER */
+        addr2 = H5MF_alloc(f, type, H5P_DATASET_XFER_DEFAULT, (hsize_t)TEST_BLOCK_SIZE50);
+
+        /* Allocate the first block of type H5FD_MEM_DRAW */
+        stype = H5FD_MEM_DRAW;
+        saddr1 = H5MF_alloc(f, stype, H5P_DATASET_XFER_DEFAULT, (hsize_t)TEST_BLOCK_SIZE30);
+
+	/* Free the first block of type H5FD_MEM_SUPER */
+        H5MF_xfree(f, type, H5P_DATASET_XFER_DEFAULT, addr1, (hsize_t)TEST_BLOCK_SIZE30);
+
+        /* Allocate the second block of type H5FD_MEM_DRAW */
+        saddr2 = H5MF_alloc(f, stype, H5P_DATASET_XFER_DEFAULT, (hsize_t)TEST_BLOCK_SIZE30);
+
+	/* Verify that saddr1 is not addr1 */
+	if(saddr2 == addr1) TEST_ERROR
+
+	/* Free the first block of type H5FD_MEM_DRAW */
+        H5MF_xfree(f, stype, H5P_DATASET_XFER_DEFAULT, saddr1, (hsize_t)TEST_BLOCK_SIZE30);
+
+        /* Allocate the third block of type H5FD_MEM_SUPER */
+        addr3 = H5MF_alloc(f, type, H5P_DATASET_XFER_DEFAULT, (hsize_t)TEST_BLOCK_SIZE30);
+
+	/* Verify that addr3 is not saddr1 */
+	if(addr3 == saddr1) TEST_ERROR
+
+        if(H5Fclose(file) < 0)
+            FAIL_STACK_ERROR
+
+        PASSED()
+    } /* end if */
+    else {
+	SKIPPED();
+	puts("    Current VFD doesn't support metadata aggregator");
+    } /* end else */
+
+    return(0);
+
+error:
+    H5E_BEGIN_TRY {
+	H5Fclose(file);
+    } H5E_END_TRY;
+    return(1);
+} /* test_dichotomy() */
+
 int
 main(void)
 {
@@ -5918,6 +6110,7 @@ main(void)
     nerrors += test_mf_fs_alloc_free(fapl);
     nerrors += test_mf_fs_extend(fapl);
     nerrors += test_mf_fs_absorb(env_h5_drvr, fapl);
+    nerrors += test_dichotomy(env_h5_drvr, new_fapl);
 
     /* interaction with meta/sdata aggregator */
     nerrors += test_mf_aggr_alloc1(env_h5_drvr, fapl);
diff --git a/test/ntypes.c b/test/ntypes.c
index a63cea5..25060ec 100644
--- a/test/ntypes.c
+++ b/test/ntypes.c
@@ -1776,6 +1776,7 @@ test_vl_dtype(hid_t file)
             } /* end for */
 
             HDfree(tmp);
+            tmp = NULL;
         } /* end for */
     } /* end for */
 
diff --git a/test/objcopy.c b/test/objcopy.c
index 3c1f876..01f93ed 100644
--- a/test/objcopy.c
+++ b/test/objcopy.c
@@ -10351,7 +10351,7 @@ test_copy_cdt_merge_all_suggs(hid_t fcpl_src, hid_t fcpl_dst, hid_t src_fapl,
     hid_t did = -1;                             /* Dataset ID */
     hid_t exp_did = -1;                          /* Dataset ID */
     hid_t tid_short = -1; 			/* Datatype ID */
-    hid_t exp_tid;				/* Expected datatype ID */
+    hid_t exp_tid = -1;				/* Expected datatype ID */
     hid_t ocpypl_id = -1;                       /* Object copy plist ID */
     unsigned int i;                             /* Local index variables */
     hsize_t dim1d[1];                           /* Dataset dimensions */
@@ -11460,6 +11460,104 @@ error:
 
 
 /*-------------------------------------------------------------------------
+ * Function:    test_copy_iterate
+ *
+ * Purpose:     Tests iterating over objects in the root group, copying
+ *              all of them.
+ *
+ * Return:      Success:        0
+ *              Failure:        number of errors
+ *
+ * Programmer:  Neil Fortner
+ *              Thursday, July 12, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+test_copy_iterate_cb(hid_t loc_id, const char *name,
+    const H5L_info_t UNUSED *link_info, void *op_data)
+{
+    hid_t dst_loc_id = *((hid_t *)op_data);
+
+    if(H5Ocopy(loc_id, name, dst_loc_id, name, H5P_DEFAULT, H5P_DEFAULT) < 0)
+        TEST_ERROR
+
+    return(H5_ITER_CONT);
+
+error:
+    return(H5_ITER_ERROR);
+} /* end test_copy_iterate_cb */
+
+static int
+test_copy_iterate(hid_t fcpl_src, hid_t fcpl_dst, hid_t src_fapl, hid_t dst_fapl)
+{
+    hid_t fid1 = -1, fid2 = -1;                 /* File IDs */
+    hid_t gid = -1;                             /* Group ID */
+    int i;
+    char grp_name[8];
+    char src_filename[NAME_BUF_SIZE];
+    char dst_filename[NAME_BUF_SIZE];
+
+    TESTING("H5Ocopy(): inside H5Literate() callback");
+
+    /* Initialize the filenames */
+    h5_fixname(FILENAME[0], src_fapl, src_filename, sizeof src_filename);
+    h5_fixname(FILENAME[1], src_fapl, dst_filename, sizeof dst_filename);
+
+    /* Reset file address checking info */
+    addr_reset();
+
+    /* Create source file */
+    if((fid1 = H5Fcreate(src_filename, H5F_ACC_TRUNC, fcpl_src, src_fapl)) < 0)
+        TEST_ERROR
+
+    /* Create groups */
+    for(i=0; i<9; i++) {
+        HDsnprintf(grp_name, sizeof(grp_name), "grp%d", i);
+        if((gid = H5Gcreate2(fid1, grp_name, H5P_DEFAULT, H5P_DEFAULT,
+                H5P_DEFAULT)) < 0)
+            TEST_ERROR
+        if(H5Gclose(gid) < 0)
+            TEST_ERROR
+    } /* end for */
+
+    /* Create destination file */
+    if((fid2 = H5Fcreate(dst_filename, H5F_ACC_TRUNC, fcpl_dst, dst_fapl)) < 0)
+        TEST_ERROR
+
+    /* Close files */
+    if(H5Fclose(fid1) < 0) TEST_ERROR
+    if(H5Fclose(fid2) < 0) TEST_ERROR
+
+    /* Reopen files */
+    if((fid1 = H5Fopen(src_filename, H5F_ACC_RDWR, src_fapl)) < 0) TEST_ERROR
+    if((fid2 = H5Fopen(dst_filename, H5F_ACC_RDWR, dst_fapl)) < 0) TEST_ERROR
+
+    /* Iterate over links in the root group, copying each object */
+    if((gid = H5Gopen2(fid1, "/", H5P_DEFAULT)) < 0) TEST_ERROR
+    if(H5Literate(gid, H5_INDEX_NAME, H5_ITER_INC, NULL, test_copy_iterate_cb,
+            &fid2) < 0)
+        TEST_ERROR
+
+    /* Close */
+    if(H5Gclose(gid) < 0) TEST_ERROR
+    if(H5Fclose(fid1) < 0) TEST_ERROR
+    if(H5Fclose(fid2) < 0) TEST_ERROR
+
+    PASSED();
+    return 0;
+
+error:
+    H5E_BEGIN_TRY {
+        H5Gclose(gid);
+        H5Fclose(fid1);
+        H5Fclose(fid2);
+    } H5E_END_TRY;
+    return 1;
+} /* end test_copy_iterate */
+
+
+/*-------------------------------------------------------------------------
  * Function:    test_copy_option
  *
  * Purpose:     Create a group in SRC file and copy it to DST file
@@ -12297,6 +12395,7 @@ main(void)
             nerrors += test_copy_same_file_named_datatype(fcpl_src, src_fapl);
             nerrors += test_copy_old_layout(fcpl_dst, dst_fapl);
             nerrors += test_copy_null_ref(fcpl_src, fcpl_dst, src_fapl, dst_fapl);
+            nerrors += test_copy_iterate(fcpl_src, fcpl_dst, src_fapl, dst_fapl);
         }
 
 /* TODO: not implemented
diff --git a/test/testcheck_version.sh.in b/test/testcheck_version.sh.in
index a2c812d..ed9845e 100644
--- a/test/testcheck_version.sh.in
+++ b/test/testcheck_version.sh.in
@@ -19,6 +19,8 @@
 # Programmer: Albert Cheng
 #	      Sep 28, 2009
 
+srcdir=@srcdir@
+
 # Variables filled in by the configure process.
 # Determine the configure options of the hdf5 library and executables.
 Shared_Lib=@enable_shared@
@@ -215,11 +217,6 @@ h5libsettings=../src/libhdf5.settings
 
 PURPOSE
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # Figure out library version numbers from the header file.
 h5versmajor=`grep '#define H5_VERS_MAJOR' $srcdir/../src/H5public.h | cut -f2` 
 h5versminor=`grep '#define H5_VERS_MINOR' $srcdir/../src/H5public.h | cut -f2` 
diff --git a/test/testerror.sh.in b/test/testerror.sh.in
index 440be4f..b68fa7e 100644
--- a/test/testerror.sh.in
+++ b/test/testerror.sh.in
@@ -15,6 +15,8 @@
 #
 # Tests for test_error and err_compat 
 
+srcdir=@srcdir@
+
 # Determine backward compatibility options eneabled
 DEPRECATED_SYMBOLS="@DEPRECATED_SYMBOLS@"
 
@@ -24,11 +26,6 @@ DIFF='diff -c'
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 test -d ./testfiles || mkdir ./testfiles
 
 # Print a line-line message left justified in a field of 70 characters
diff --git a/test/testfiles/error_test_1 b/test/testfiles/error_test_1
index 8d6e208..b322460 100644
--- a/test/testfiles/error_test_1
+++ b/test/testfiles/error_test_1
@@ -44,13 +44,13 @@ HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
   #000: (file name) line (number) in H5Dread(): can't read data
     major: Dataset
     minor: Read failed
-  #001: (file name) line (number) in H5D_read(): can't read data
+  #001: (file name) line (number) in H5D__read(): can't read data
     major: Dataset
     minor: Read failed
-  #002: (file name) line (number) in H5D_chunk_read(): unable to read raw data chunk
+  #002: (file name) line (number) in H5D__chunk_read(): unable to read raw data chunk
     major: Low-level I/O
     minor: Read failed
-  #003: (file name) line (number) in H5D_chunk_lock(): data pipeline read failed
+  #003: (file name) line (number) in H5D__chunk_lock(): data pipeline read failed
     major: Data filters
     minor: Filter operation failed
   #004: (file name) line (number) in H5Z_pipeline(): required filter 'bogus' is not registered
diff --git a/test/testframe.c b/test/testframe.c
index a12594c..11a9e99 100644
--- a/test/testframe.c
+++ b/test/testframe.c
@@ -126,12 +126,6 @@ AddTest(const char *TheName, void (*TheCall) (void), void (*Cleanup) (void), con
  */
 void TestInit(const char *ProgName, void (*private_usage)(void), int (*private_parser)(int ac, char *av[]))
 {
-#if !(defined MAC || defined SYMANTEC_C)
-    /* Un-buffer the stdout and stderr */
-    setbuf(stderr, NULL);
-    setbuf(stdout, NULL);
-#endif
-
     /* Save error printing settings */
     H5Eget_auto2(H5E_DEFAULT, PrintErrorStackFunc, PrintErrorStackData);
     /*
diff --git a/test/testhdf5.h b/test/testhdf5.h
index 149b4c8..c92c0f0 100644
--- a/test/testhdf5.h
+++ b/test/testhdf5.h
@@ -125,7 +125,17 @@
 } while(0)
 
 /* Used to document process through a test */
-#define MESSAGE(V,A) {if (HDGetTestVerbosity()>(V)) print_func A;}
+#if defined(H5_HAVE_PARALLEL) && defined(H5_PARALLEL_TEST)
+#define MESSAGE(V,A) {                                                        \
+    int mpi_rank;                                                             \
+                                                                              \
+    MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);                                 \
+    if(mpi_rank == 0 && HDGetTestVerbosity() > (V))                           \
+        print_func A ;                                                        \
+}
+#else /* H5_HAVE_PARALLEL */
+#define MESSAGE(V,A) {if (HDGetTestVerbosity() > (V)) print_func A;}
+#endif /* H5_HAVE_PARALLEL */
 
 /* Used to indicate an error that is complex to check for */
 #define ERROR(where) do {						      \
diff --git a/test/testlibinfo.sh.in b/test/testlibinfo.sh.in
index 91eda16..fba1794 100644
--- a/test/testlibinfo.sh.in
+++ b/test/testlibinfo.sh.in
@@ -27,6 +27,8 @@
 # Programmer: Albert Cheng
 #	      Sep 18, 2009
 
+srcdir=@srcdir@
+
 # Determine the configure options of the hdf5 library and executables.
 
 Shared_Lib=@enable_shared@
diff --git a/test/testlinks_env.sh.in b/test/testlinks_env.sh.in
index 5a7e045..04dfa62 100644
--- a/test/testlinks_env.sh.in
+++ b/test/testlinks_env.sh.in
@@ -15,12 +15,9 @@
 #
 # Test for external link with environment variable: HDF5_EXT_PREFIX
 
-nerrors=0
+srcdir=@srcdir@
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
+nerrors=0
 
 ##############################################################################
 ##############################################################################
diff --git a/test/tfile.c b/test/tfile.c
index 00b4fed..65cbf74 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -1312,6 +1312,11 @@ test_file_perm2(void)
 **      This test checks the free space available in a file in various
 **      situations.
 **
+**  Modifications:
+**	Vailin Choi; July 2012
+**	Remove datasets in reverse order so that all file spaces are shrunk.
+**	(A change due to H5FD_FLMAP_DICHOTOMY.)
+**
 *****************************************************************/
 static void
 test_file_freespace(void)
@@ -1323,6 +1328,7 @@ test_file_freespace(void)
     hid_t    dspace;    /* Dataspace ID */
     hid_t    dset;      /* Dataset ID */
     hid_t    dcpl;      /* Dataset creation property list */
+    int k;		/* Local index variable */
     unsigned u;         /* Local index variable */
     char     name[32];  /* Dataset name */
     herr_t   ret;
@@ -1382,11 +1388,11 @@ test_file_freespace(void)
     /* Check that there is the right amount of free space in the file */
     free_space = H5Fget_freespace(file);
     CHECK(free_space, FAIL, "H5Fget_freespace");
-    VERIFY(free_space, 2008, "H5Fget_freespace");
+    VERIFY(free_space, 2360, "H5Fget_freespace");
 
     /* Delete datasets in file */
-    for(u = 0; u < 10; u++) {
-        sprintf(name, "Dataset %u", u);
+    for(k = 9; k >= 0; k--) {
+        sprintf(name, "Dataset %u", (unsigned)k);
         ret = H5Ldelete(file, name, H5P_DEFAULT);
         CHECK(ret, FAIL, "H5Ldelete");
     } /* end for */
@@ -2704,7 +2710,6 @@ test_libver_macros(void)
     unsigned	major = H5_VERS_MAJOR;
     unsigned	minor = H5_VERS_MINOR;
     unsigned	release = H5_VERS_RELEASE;
-    herr_t	ret;                    /* Return value */
 
     /* Output message about test being performed */
     MESSAGE(5, ("Testing macros for library version comparison\n"));
diff --git a/test/tgenprop.c b/test/tgenprop.c
index 5f9a69b..f304f11 100644
--- a/test/tgenprop.c
+++ b/test/tgenprop.c
@@ -743,11 +743,11 @@ test_genprop_basic_list_prop(void)
 
     /* Add temporary properties */
 
-    /* Insert first temporary property into class (with no callbacks) */
+    /* Insert first temporary property into list (with no callbacks) */
     ret = H5Pinsert2(lid1, PROP3_NAME, PROP3_SIZE, PROP3_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
     CHECK_I(ret, "H5Pinsert2");
 
-    /* Insert second temporary property into class (with no callbacks) */
+    /* Insert second temporary property into list (with no callbacks) */
     ret = H5Pinsert2(lid1, PROP4_NAME, PROP4_SIZE, PROP4_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
     CHECK_I(ret, "H5Pinsert2");
 
@@ -1215,10 +1215,10 @@ test_genprop_list_callback(void)
 
     /* The compare callback should have been called once on property 1 (to check
      * if the create callback modified the value) */
-    VERIFY(prop1_cb_info.cmp_count, 1, "H5Pequal");
+    VERIFY(prop1_cb_info.cmp_count, 1, "H5Pcreate");
     /* The compare callback should not have been called on property 3, as there
      * is no create callback */
-    VERIFY(prop3_cb_info.cmp_count, 0, "H5Pequal");
+    VERIFY(prop3_cb_info.cmp_count, 0, "H5Pcreate");
 
     /* Verify creation callback information for properties tracked */
     VERIFY(prop1_cb_info.crt_count, 1, "H5Pcreate");
@@ -1233,7 +1233,7 @@ test_genprop_list_callback(void)
     VERIFY(prop1_value, *PROP1_DEF_VALUE, "H5Pget");
     /* The compare callback should have been called once (to check if the get
      * callback modified the value) */
-    VERIFY(prop1_cb_info.cmp_count, 2, "H5Pequal");
+    VERIFY(prop1_cb_info.cmp_count, 2, "H5Pget");
     ret = H5Pget(lid1, PROP2_NAME,&prop2_value);
     CHECK_I(ret, "H5Pget");
     /* Verify the floating-poing value in this way to avoid compiler warning. */
@@ -1248,7 +1248,7 @@ test_genprop_list_callback(void)
         TestErrPrintf("Property #3 doesn't match!, line=%d\n",__LINE__);
     /* The compare callback should not have been called, as there is no get
      * callback for this property */
-    VERIFY(prop3_cb_info.cmp_count, 0, "H5Pequal");
+    VERIFY(prop3_cb_info.cmp_count, 0, "H5Pget");
     ret = H5Pget(lid1, PROP4_NAME,&prop4_value);
     CHECK_I(ret, "H5Pget");
     /* Verify the floating-poing value in this way to avoid compiler warning. */
@@ -1278,7 +1278,7 @@ test_genprop_list_callback(void)
 
     /* The compare callback should have been called once (to check if the new
      * value needed to be copied onto the property list) */
-    VERIFY(prop1_cb_info.cmp_count, 3, "H5Pequal");
+    VERIFY(prop1_cb_info.cmp_count, 3, "H5Pset");
 
     /* Set value of property #3 to different value */
     ret = H5Pset(lid1, PROP3_NAME,prop3_new_value);
@@ -1286,7 +1286,7 @@ test_genprop_list_callback(void)
 
     /* The compare callback should have been called once (to check if the new
      * value needed to be copied onto the property list) */
-    VERIFY(prop3_cb_info.cmp_count, 1, "H5Pequal");
+    VERIFY(prop3_cb_info.cmp_count, 1, "H5Pset");
 
     /* Check new value of tracked properties */
     ret = H5Pget(lid1, PROP1_NAME,&prop1_value);
@@ -1575,6 +1575,46 @@ test_genprop_class_addprop(void)
 
 /****************************************************************
 **
+**  test_genprop_list_add_remove_prop(): Test adding then removing the
+**  same properties to a standard HDF5 property list. This is testing
+**  also for a memory leak that could be caused by not freeing the
+**  removed property resources from the property list.
+**
+****************************************************************/
+static void
+test_genprop_list_add_remove_prop(void)
+{
+    hid_t pid;          /* Property List ID */
+    herr_t ret;		/* Generic return value	*/
+
+    /* Create a dataset creation property list */
+    pid = H5Pcreate(H5P_DATASET_CREATE);
+    CHECK(pid, FAIL, "H5Pcreate");
+
+    /* Insert temporary property into class (with no callbacks) */
+    ret = H5Pinsert2(pid, PROP1_NAME, PROP1_SIZE, PROP1_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK_I(ret, "H5Pinsert2");
+
+    /* Delete added property */
+    ret = H5Premove(pid, PROP1_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Insert temporary property into class (with no callbacks) */
+    ret = H5Pinsert2(pid, PROP1_NAME, PROP1_SIZE, PROP1_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK_I(ret, "H5Pinsert2");
+
+    /* Delete added property */
+    ret = H5Premove(pid, PROP1_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Close property list */
+    ret = H5Pclose(pid);
+    CHECK(ret, FAIL, "H5Pclose");
+
+} /* end test_genprop_list_add_remove_prop() */
+
+/****************************************************************
+**
 **  test_genprop_equal(): Test basic generic property list code.
 **      More tests for H5Pequal()
 **
@@ -1585,6 +1625,7 @@ test_genprop_equal(void)
     hid_t		cid1;		/* Generic Property class ID */
     hid_t		lid1;		/* Generic Property list ID */
     hid_t		lid2;		/* Generic Property list ID */
+    int                 prop1_new_value = 20;   /* Property #1 new value */
     herr_t		ret;		/* Generic return value	*/
 
     /* Output message about test being performed */
@@ -1611,13 +1652,114 @@ test_genprop_equal(void)
     CHECK_I(lid2, "H5Pcopy");
 
     /* Check that the lists are equal */
-    ret = H5Pequal(lid1,lid2);
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 1, "H5Pequal");
+
+    /* Set property in first list to another value */
+    ret = H5Pset(lid1, PROP1_NAME, &prop1_new_value);
+    CHECK_I(ret, "H5Pset");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Set property in first list back to default */
+    ret = H5Pset(lid1, PROP1_NAME, PROP1_DEF_VALUE);
+    CHECK_I(ret, "H5Pset");
+
+    /* Check that the lists are still equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 1, "H5Pequal");
+
+    /* Insert first temporary property into first list (with no callbacks) */
+    ret = H5Pinsert2(lid1, PROP3_NAME, PROP3_SIZE, PROP3_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK_I(ret, "H5Pinsert2");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Insert first temporary property into second list (with no callbacks) */
+    ret = H5Pinsert2(lid2, PROP3_NAME, PROP3_SIZE, PROP3_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK_I(ret, "H5Pinsert2");
+
+    /* Check that the lists are equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 1, "H5Pequal");
+
+    /* Insert second temporary property into second list (with no callbacks) */
+    ret = H5Pinsert2(lid2, PROP4_NAME, PROP4_SIZE, PROP4_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK_I(ret, "H5Pinsert2");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Insert second temporary property into first list (with no callbacks) */
+    ret = H5Pinsert2(lid1, PROP4_NAME, PROP4_SIZE, PROP4_DEF_VALUE, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK_I(ret, "H5Pinsert2");
+
+    /* Check that the lists are equal */
+    ret = H5Pequal(lid1, lid2);
     VERIFY(ret, 1, "H5Pequal");
 
+    /* Remove first temporary property from first list */
+    ret = H5Premove(lid1, PROP3_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Remove second temporary property from second list */
+    ret = H5Premove(lid2, PROP4_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Remove first temporary property from second list */
+    ret = H5Premove(lid2, PROP3_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Remove first permanent property from first list */
+    ret = H5Premove(lid1, PROP1_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Remove second temporary property from first list */
+    ret = H5Premove(lid1, PROP4_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Check that the lists are not equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 0, "H5Pequal");
+
+    /* Remove first permanent property from second list */
+    ret = H5Premove(lid2, PROP1_NAME);
+    CHECK_I(ret, "H5Premove");
+
+    /* Check that the lists are equal */
+    ret = H5Pequal(lid1, lid2);
+    VERIFY(ret, 1, "H5Pequal");
+
+    /* Close property lists */
+    ret = H5Pclose(lid1);
+    CHECK_I(ret, "H5Pclose");
+    ret = H5Pclose(lid2);
+    CHECK_I(ret, "H5Pclose");
+
     /* Close class */
     ret = H5Pclose_class(cid1);
     CHECK_I(ret, "H5Pclose_class");
-
 } /* ent test_genprop_equal() */
 
 /****************************************************************
@@ -1990,6 +2132,8 @@ test_genprop(void)
     test_genprop_list_addprop();    /* Test adding properties to HDF5 property list */
     test_genprop_class_addprop();   /* Test adding properties to HDF5 property class */
 
+    test_genprop_list_add_remove_prop();  /* Test adding and removing the same property several times to HDF5 property list */
+
     test_genprop_equal();       /* Tests for more H5Pequal verification */
     test_genprop_path();        /* Tests for class path verification */
     test_genprop_refcount();    /* Tests for class reference counting */
diff --git a/test/tid.c b/test/tid.c
index 97b28ca..87f3d37 100644
--- a/test/tid.c
+++ b/test/tid.c
@@ -451,11 +451,11 @@ out:
 
 	/* Test boundary cases with lots of types */
 
-/* Type IDs range from H5I_NTYPES to MAX_NUM_TYPES.  The system will assign */
-/* IDs in sequential order until MAX_NUM_TYPES IDs have been given out, at which */
+/* Type IDs range from H5I_NTYPES to H5I_MAX_NUM_TYPES.  The system will assign */
+/* IDs in sequential order until H5I_MAX_NUM_TYPES IDs have been given out, at which */
 /* point it will search for type IDs that were allocated but have since been */
 /* deleted. */
-/* This test will allocate IDs up to MAX_NUM_TYPES, ensure that IDs wrap around */
+/* This test will allocate IDs up to H5I_MAX_NUM_TYPES, ensure that IDs wrap around */
 /* to low values successfully, ensure that an error is thrown when all possible */
 /* type IDs are taken, then ensure that deleting types frees up their IDs. */
 /* Note that this test depends on the implementation of IDs, so may break */
@@ -463,7 +463,7 @@ out:
 /* Also note that if someone else registered a user-defined type and forgot to */
 /* destroy it, this test will mysteriously fail (because it will expect there to */
 /* be one more "free" type ID than there is). */
-/* H5I_NTYPES is defined in h5public.h, MAX_NUM_TYPES is defined in h5pkg.h */
+/* H5I_NTYPES is defined in h5public.h, H5I_MAX_NUM_TYPES is defined in h5pkg.h */
 static int test_id_type_list(void)
 {
 	H5I_type_t startType;	/* The first type ID we were assigned in this test */
@@ -477,14 +477,14 @@ static int test_id_type_list(void)
 		goto out;
 
 	/* Sanity check */
-	if(startType >= MAX_NUM_TYPES || startType < H5I_NTYPES)
+	if(startType >= H5I_MAX_NUM_TYPES || startType < H5I_NTYPES)
 	{
 		/* Error condition, throw an error */
 		CHECK(1, 1, "H5Iregister_type");
 		goto out;
 	}
-	/* Create types up to MAX_NUM_TYPES */
-	for(i = startType + 1; i < MAX_NUM_TYPES; i++)
+	/* Create types up to H5I_MAX_NUM_TYPES */
+	for(i = startType + 1; i < H5I_MAX_NUM_TYPES; i++)
 	{
 		currentType = H5Iregister_type((size_t)8, 0, (H5I_free_t) free );
 		CHECK(currentType, H5I_BADID, "H5Iregister_type");
@@ -519,7 +519,7 @@ static int test_id_type_list(void)
 		goto out;
 
 	/* Cleanup.  Destroy all types. */
-	for(i = H5I_NTYPES; i < MAX_NUM_TYPES; i++)
+	for(i = H5I_NTYPES; i < H5I_MAX_NUM_TYPES; i++)
 		H5Idestroy_type((H5I_type_t) i);
 
 	return 0;
@@ -527,7 +527,7 @@ static int test_id_type_list(void)
 out:
     /* Cleanup.  For simplicity, just destroy all types and ignore errors. */
 	H5E_BEGIN_TRY
-		for(i = H5I_NTYPES; i < MAX_NUM_TYPES; i++)
+		for(i = H5I_NTYPES; i < H5I_MAX_NUM_TYPES; i++)
 			H5Idestroy_type((H5I_type_t) i);
 	H5E_END_TRY
 	return -1;
diff --git a/test/tmisc.c b/test/tmisc.c
index 9689508..e28b124 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -3481,14 +3481,14 @@ test_misc20(void)
     CHECK(did, FAIL, "H5Dopen2");
 
     /* Get the layout version */
-    ret = H5D_layout_version_test(did,&version);
-    CHECK(ret, FAIL, "H5D_layout_version_test");
-    VERIFY(version, 3, "H5D_layout_version_test");
+    ret = H5D__layout_version_test(did,&version);
+    CHECK(ret, FAIL, "H5D__layout_version_test");
+    VERIFY(version, 3, "H5D__layout_version_test");
 
     /* Get the layout contiguous storage size */
-    ret = H5D_layout_contig_size_test(did,&contig_size);
-    CHECK(ret, FAIL, "H5D_layout_contig_size_test");
-    VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_NATIVE_INT)), "H5D_layout_contig_size_test");
+    ret = H5D__layout_contig_size_test(did,&contig_size);
+    CHECK(ret, FAIL, "H5D__layout_contig_size_test");
+    VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_NATIVE_INT)), "H5D__layout_contig_size_test");
 
     /* Close datasset */
     ret = H5Dclose(did);
@@ -3499,14 +3499,14 @@ test_misc20(void)
     CHECK(did, FAIL, "H5Dopen2");
 
     /* Get the layout version */
-    ret = H5D_layout_version_test(did,&version);
-    CHECK(ret, FAIL, "H5D_layout_version_test");
-    VERIFY(version, 3, "H5D_layout_version_test");
+    ret = H5D__layout_version_test(did,&version);
+    CHECK(ret, FAIL, "H5D__layout_version_test");
+    VERIFY(version, 3, "H5D__layout_version_test");
 
     /* Get the layout contiguous storage size */
-    ret = H5D_layout_contig_size_test(did,&contig_size);
-    CHECK(ret, FAIL, "H5D_layout_contig_size_test");
-    VERIFY(contig_size, (MISC20_SPACE2_DIM0 * MISC20_SPACE2_DIM1 * H5Tget_size(H5T_NATIVE_INT)), "H5D_layout_contig_size_test");
+    ret = H5D__layout_contig_size_test(did,&contig_size);
+    CHECK(ret, FAIL, "H5D__layout_contig_size_test");
+    VERIFY(contig_size, (MISC20_SPACE2_DIM0 * MISC20_SPACE2_DIM1 * H5Tget_size(H5T_NATIVE_INT)), "H5D__layout_contig_size_test");
 
     /* Close datasset */
     ret = H5Dclose(did);
@@ -3536,14 +3536,14 @@ test_misc20(void)
     CHECK(did, FAIL, "H5Dopen2");
 
     /* Get the layout version */
-    ret = H5D_layout_version_test(did,&version);
-    CHECK(ret, FAIL, "H5D_layout_version_test");
-    VERIFY(version, 2, "H5D_layout_version_test");
+    ret = H5D__layout_version_test(did,&version);
+    CHECK(ret, FAIL, "H5D__layout_version_test");
+    VERIFY(version, 2, "H5D__layout_version_test");
 
     /* Get the layout contiguous storage size */
-    ret = H5D_layout_contig_size_test(did,&contig_size);
-    CHECK(ret, FAIL, "H5D_layout_contig_size_test");
-    VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_STD_I32LE)), "H5D_layout_contig_size_test");
+    ret = H5D__layout_contig_size_test(did,&contig_size);
+    CHECK(ret, FAIL, "H5D__layout_contig_size_test");
+    VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_STD_I32LE)), "H5D__layout_contig_size_test");
 
     /* Close datasset */
     ret = H5Dclose(did);
@@ -5007,10 +5007,10 @@ test_misc28(void)
     CHECK(did, FAIL, "H5Dcreate2");
 
     /* Verify that the chunk cache is empty */
-    ret = H5D_current_cache_size_test(did, &nbytes_used, &nused);
-    CHECK(ret, FAIL, "H5D_current_cache_size_test");
-    VERIFY(nbytes_used, (size_t) 0, "H5D_current_cache_size_test");
-    VERIFY(nused, 0, "H5D_current_cache_size_test");
+    ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
+    CHECK(ret, FAIL, "H5D__current_cache_size_test");
+    VERIFY(nbytes_used, (size_t) 0, "H5D__current_cache_size_test");
+    VERIFY(nused, 0, "H5D__current_cache_size_test");
 
     /* Initialize write buffer */
     for(i=0; i<MISC28_SIZE; i++)
@@ -5028,10 +5028,10 @@ test_misc28(void)
     CHECK(ret, FAIL, "H5Dwrite");
 
     /* Verify that all 10 chunks written have been cached */
-    ret = H5D_current_cache_size_test(did, &nbytes_used, &nused);
-    CHECK(ret, FAIL, "H5D_current_cache_size_test");
-    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D_current_cache_size_test");
-    VERIFY(nused, MISC28_SIZE, "H5D_current_cache_size_test");
+    ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
+    CHECK(ret, FAIL, "H5D__current_cache_size_test");
+    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D__current_cache_size_test");
+    VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
 
     /* Initialize write buffer */
     for(i=0; i<MISC28_SIZE; i++)
@@ -5047,10 +5047,10 @@ test_misc28(void)
     CHECK(ret, FAIL, "H5Dwrite");
 
     /* Verify that the size of the cache remains at 10 */
-    ret = H5D_current_cache_size_test(did, &nbytes_used, &nused);
-    CHECK(ret, FAIL, "H5D_current_cache_size_test");
-    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D_current_cache_size_test");
-    VERIFY(nused, MISC28_SIZE, "H5D_current_cache_size_test");
+    ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
+    CHECK(ret, FAIL, "H5D__current_cache_size_test");
+    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D__current_cache_size_test");
+    VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
 
     /* Close dataset */
     ret = H5Dclose(did);
@@ -5062,10 +5062,10 @@ test_misc28(void)
     CHECK(did, FAIL, "H5Dopen2");
 
     /* Verify that the chunk cache is empty */
-    ret = H5D_current_cache_size_test(did, &nbytes_used, &nused);
-    CHECK(ret, FAIL, "H5D_current_cache_size_test");
-    VERIFY(nbytes_used, (size_t) 0, "H5D_current_cache_size_test");
-    VERIFY(nused, 0, "H5D_current_cache_size_test");
+    ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
+    CHECK(ret, FAIL, "H5D__current_cache_size_test");
+    VERIFY(nbytes_used, (size_t) 0, "H5D__current_cache_size_test");
+    VERIFY(nused, 0, "H5D__current_cache_size_test");
 
     /* Select hyperslabe for reading */
     start[1] = 0;
@@ -5081,10 +5081,10 @@ test_misc28(void)
         VERIFY(buf[i], i, "H5Dread");
 
     /* Verify that all 10 chunks read have been cached */
-    ret = H5D_current_cache_size_test(did, &nbytes_used, &nused);
-    CHECK(ret, FAIL, "H5D_current_cache_size_test");
-    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D_current_cache_size_test");
-    VERIFY(nused, MISC28_SIZE, "H5D_current_cache_size_test");
+    ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
+    CHECK(ret, FAIL, "H5D__current_cache_size_test");
+    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D__current_cache_size_test");
+    VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
 
     /* Select new hyperslab */
     start[1] = 1;
@@ -5100,10 +5100,10 @@ test_misc28(void)
         VERIFY(buf[i], MISC28_SIZE - 1 - i, "H5Dread");
 
     /* Verify that the size of the cache remains at 10 */
-    ret = H5D_current_cache_size_test(did, &nbytes_used, &nused);
-    CHECK(ret, FAIL, "H5D_current_cache_size_test");
-    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D_current_cache_size_test");
-    VERIFY(nused, MISC28_SIZE, "H5D_current_cache_size_test");
+    ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
+    CHECK(ret, FAIL, "H5D__current_cache_size_test");
+    VERIFY(nbytes_used, (size_t) MISC28_SIZE, "H5D__current_cache_size_test");
+    VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
 
     /* Close dataset */
     ret = H5Dclose(did);
diff --git a/test/tunicode.c b/test/tunicode.c
index 892e563..bd3090c 100644
--- a/test/tunicode.c
+++ b/test/tunicode.c
@@ -161,6 +161,7 @@ void test_strpad(hid_t UNUSED fid, const char *string)
 
     /* Create a src_type that holds the UTF-8 string and its final NULL */
     big_len = length + 1;                     /* +1 byte for final NULL */
+    HDassert((2*big_len)<=sizeof(cmpbuf));
     src_type = mkstr(big_len, H5T_STR_NULLTERM);
     CHECK(src_type, FAIL, "mkstr");
     /* Create a dst_type that holds half of the UTF-8 string and a final
@@ -224,6 +225,7 @@ void test_strpad(hid_t UNUSED fid, const char *string)
 
     /* Create a src_type that holds the UTF-8 string */
     big_len = length;
+    HDassert((2*big_len)<=sizeof(cmpbuf));
     src_type = mkstr(big_len, H5T_STR_NULLPAD);
     CHECK(src_type, FAIL, "mkstr");
     /* Create a dst_type that holds half of the UTF-8 string */
diff --git a/test/vfd.c b/test/vfd.c
index f6e9f06..ca354d9 100644
--- a/test/vfd.c
+++ b/test/vfd.c
@@ -1148,11 +1148,10 @@ test_multi_compat(void)
 {
     hid_t       file=(-1), fapl, fapl2=(-1), dset=(-1), space=(-1);
     hid_t       access_fapl = -1;
-    char        filename[1024], newname[1024], tmp[1024];
+    char        newname[1024];
     char        filename_s[1024], newname_s[1024];
     char        filename_r[1024], newname_r[1024];
     int         *fhandle2=NULL, *fhandle=NULL;
-    hsize_t     file_size;
     H5FD_mem_t  mt, memb_map[H5FD_MEM_NTYPES];
     hid_t       memb_fapl[H5FD_MEM_NTYPES];
     haddr_t     memb_addr[H5FD_MEM_NTYPES];
diff --git a/testpar/CMakeLists.txt b/testpar/CMakeLists.txt
index f42af9f..5d594a6 100644
--- a/testpar/CMakeLists.txt
+++ b/testpar/CMakeLists.txt
@@ -1,6 +1,11 @@
 cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_TEST_PAR)
 
+#-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
 INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
 INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib )
 #-----------------------------------------------------------------------------
diff --git a/testpar/Makefile.in b/testpar/Makefile.in
index a9a4135..5b44e6e 100644
--- a/testpar/Makefile.in
+++ b/testpar/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # hdf5 Parallel Library Test Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,13 +67,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/testph5.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/testph5.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS) $(am__EXEEXT_2)
+TESTS =
 subdir = testpar
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -71,9 +89,10 @@ t_cache_SOURCES = t_cache.c
 t_cache_OBJECTS = t_cache.$(OBJEXT)
 t_cache_LDADD = $(LDADD)
 t_cache_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 t_mpi_SOURCES = t_mpi.c
 t_mpi_OBJECTS = t_mpi.$(OBJEXT)
 t_mpi_LDADD = $(LDADD)
@@ -102,6 +121,18 @@ am_testphdf5_OBJECTS = testphdf5.$(OBJEXT) t_dset.$(OBJEXT) \
 testphdf5_OBJECTS = $(am_testphdf5_OBJECTS)
 testphdf5_LDADD = $(LDADD)
 testphdf5_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -112,33 +143,35 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c \
 	t_posix_compliant.c t_shapesame.c $(testphdf5_SOURCES)
 DIST_SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c \
 	t_posix_compliant.c t_shapesame.c $(testphdf5_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
-am__EXEEXT_2 =
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -156,12 +189,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -451,6 +481,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -480,6 +514,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -500,25 +535,25 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-t_cache$(EXEEXT): $(t_cache_OBJECTS) $(t_cache_DEPENDENCIES) 
+t_cache$(EXEEXT): $(t_cache_OBJECTS) $(t_cache_DEPENDENCIES) $(EXTRA_t_cache_DEPENDENCIES) 
 	@rm -f t_cache$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(t_cache_OBJECTS) $(t_cache_LDADD) $(LIBS)
-t_mpi$(EXEEXT): $(t_mpi_OBJECTS) $(t_mpi_DEPENDENCIES) 
+t_mpi$(EXEEXT): $(t_mpi_OBJECTS) $(t_mpi_DEPENDENCIES) $(EXTRA_t_mpi_DEPENDENCIES) 
 	@rm -f t_mpi$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(t_mpi_OBJECTS) $(t_mpi_LDADD) $(LIBS)
-t_pflush1$(EXEEXT): $(t_pflush1_OBJECTS) $(t_pflush1_DEPENDENCIES) 
+t_pflush1$(EXEEXT): $(t_pflush1_OBJECTS) $(t_pflush1_DEPENDENCIES) $(EXTRA_t_pflush1_DEPENDENCIES) 
 	@rm -f t_pflush1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(t_pflush1_OBJECTS) $(t_pflush1_LDADD) $(LIBS)
-t_pflush2$(EXEEXT): $(t_pflush2_OBJECTS) $(t_pflush2_DEPENDENCIES) 
+t_pflush2$(EXEEXT): $(t_pflush2_OBJECTS) $(t_pflush2_DEPENDENCIES) $(EXTRA_t_pflush2_DEPENDENCIES) 
 	@rm -f t_pflush2$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(t_pflush2_OBJECTS) $(t_pflush2_LDADD) $(LIBS)
-t_posix_compliant$(EXEEXT): $(t_posix_compliant_OBJECTS) $(t_posix_compliant_DEPENDENCIES) 
+t_posix_compliant$(EXEEXT): $(t_posix_compliant_OBJECTS) $(t_posix_compliant_DEPENDENCIES) $(EXTRA_t_posix_compliant_DEPENDENCIES) 
 	@rm -f t_posix_compliant$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(t_posix_compliant_OBJECTS) $(t_posix_compliant_LDADD) $(LIBS)
-t_shapesame$(EXEEXT): $(t_shapesame_OBJECTS) $(t_shapesame_DEPENDENCIES) 
+t_shapesame$(EXEEXT): $(t_shapesame_OBJECTS) $(t_shapesame_DEPENDENCIES) $(EXTRA_t_shapesame_DEPENDENCIES) 
 	@rm -f t_shapesame$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(t_shapesame_OBJECTS) $(t_shapesame_LDADD) $(LIBS)
-testphdf5$(EXEEXT): $(testphdf5_OBJECTS) $(testphdf5_DEPENDENCIES) 
+testphdf5$(EXEEXT): $(testphdf5_OBJECTS) $(testphdf5_DEPENDENCIES) $(EXTRA_testphdf5_DEPENDENCIES) 
 	@rm -f testphdf5$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testphdf5_OBJECTS) $(testphdf5_LDADD) $(LIBS)
 
@@ -548,26 +583,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -624,6 +656,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -673,10 +719,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -763,8 +814,8 @@ uninstall-am:
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -792,7 +843,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -818,7 +869,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -842,7 +893,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -852,7 +903,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -942,7 +993,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -972,7 +1023,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/testpar/t_dset.c b/testpar/t_dset.c
index 33cf765..b699950 100644
--- a/testpar/t_dset.c
+++ b/testpar/t_dset.c
@@ -2534,7 +2534,7 @@ none_selection_chunk(void)
  *                  H5D_link_chunk_collective_io, processes report linked chunk I/O
  *
  *              TEST_ACTUAL_IO_CONTIGUOUS:
- *                  H5D_contig_collective_write or H5D_contig_collective_read
+ *                  H5D__contig_collective_write or H5D__contig_collective_read
  *                  each process reports contiguous collective I/O
  *
  *              TEST_ACTUAL_IO_NO_COLLECTIVE:
@@ -3048,6 +3048,682 @@ actual_io_mode_tests(void) {
     return;
 }
 
+/* 
+ * Function: test_no_collective_cause_mode
+ *
+ * Purpose: 
+ *    tests cases for broken collective I/O and checks that the 
+ *    H5Pget_mpio_no_collective_cause properties in the DXPL have the correct values.
+ *
+ * Input:   
+ *    selection_mode: various mode to cause broken collective I/O
+ *    Note: Originally, each TEST case is supposed to be used alone.
+ *          After some discussion, this is updated to take multiple TEST cases
+ *          with '|'.  However there is no error check for any of combined 
+ *          test cases, so a tester is responsible to understand and feed
+ *          proper combination of TESTs if needed.
+ *
+ *          
+ *       TEST_COLLECTIVE:
+ *         Test for regular collective I/O without cause of breaking.
+ *         Just to test normal behavior.
+ *       
+ *       TEST_SET_INDEPENDENT:
+ *         Test for Independent I/O as the cause of breaking collective I/O.
+ *
+ *       TEST_DATATYPE_CONVERSION:
+ *         Test for Data Type Conversion as the cause of breaking collective I/O.
+ *
+ *       TEST_DATA_TRANSFORMS:
+ *         Test for Data Transfrom feature as the cause of breaking collective I/O.
+ *
+ *       TEST_SET_MPIPOSIX:
+ *         Test for MPI Posix as the cause of breaking collective I/O.
+ *
+ *       TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES:
+ *         Test for NULL dataspace as the cause of breaking collective I/O.
+ *         
+ *       TEST_POINT_SELECTIONS:
+ *         Test for selecting elements of dataspce as the cause of breaking collective I/O.
+ *
+ *       TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT:
+ *         Test for Compact layout as the cause of breaking collective I/O.
+ *
+ *       TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL:
+ *         Test for Externl-File storage as the cause of breaking collective I/O.
+ *
+ *       TEST_FILTERS:
+ *         Test for using filter (checksum) as the cause of breaking collective I/O.
+ *         Note: TEST_FILTERS mode will not work until H5Dcreate and H5write is supported for mpio and filter feature. Use test_no_collective_cause_mode_filter() function instead.  
+ *
+ * 
+ * Programmer: Jonathan Kim
+ * Date: Aug, 2012
+ */
+#define DSET_NOCOLCAUSE "nocolcause"
+#define NELM          2
+#define FILE_EXTERNAL "nocolcause_extern.data"
+#undef H5_HAVE_FILTER_FLETCHER32
+static void 
+test_no_collective_cause_mode(int selection_mode) 
+{
+    uint32_t no_collective_cause_local_write = 0;
+    uint32_t no_collective_cause_local_read = 0;
+    uint32_t no_collective_cause_local_expected = 0;
+    uint32_t no_collective_cause_global_write = 0;
+    uint32_t no_collective_cause_global_read = 0;
+    uint32_t no_collective_cause_global_expected = 0;
+    hsize_t coord[NELM][RANK];
+
+    const char  * filename;
+    const char  * test_name;
+    hbool_t     is_chunked=1;
+    hbool_t     is_independent=0;
+    int         mpi_size = -1; 
+    int         mpi_rank = -1;
+    int         length;
+    int         * buffer;
+    int         i;
+    MPI_Comm    mpi_comm = MPI_COMM_NULL;
+    MPI_Info    mpi_info = MPI_INFO_NULL;
+    hid_t       fid = -1;
+    hid_t       sid = -1;
+    hid_t       dataset = -1;
+    hid_t       data_type = H5T_NATIVE_INT;
+    hid_t       fapl = -1;
+    hid_t       dcpl = -1;
+    hid_t       dxpl_write = -1;
+    hid_t       dxpl_read = -1;
+    hsize_t     dims[RANK];
+    hid_t       mem_space = -1;
+    hid_t       file_space = -1;
+    hsize_t     chunk_dims[RANK];
+    hbool_t     use_gpfs = FALSE;
+    herr_t      ret;
+#ifdef H5_HAVE_FILTER_FLETCHER32            
+    H5Z_filter_t filter_info;
+#endif    
+    /* set to global value as default */
+    int l_facc_type = facc_type;   
+    char message[256];
+
+    /* Set up MPI parameters */
+    MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
+    MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
+
+    MPI_Barrier(MPI_COMM_WORLD);
+    
+    HDassert(mpi_size >= 1);
+
+    mpi_comm = MPI_COMM_WORLD;
+    mpi_info = MPI_INFO_NULL;
+
+    /* Create the dataset creation plist */
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
+    VRFY((dcpl >= 0), "dataset creation plist created successfully");
+
+    if (selection_mode & TEST_SET_MPIPOSIX) {
+        l_facc_type = FACC_MPIPOSIX;
+    }
+    else {
+        if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT) {
+            ret = H5Pset_layout (dcpl, H5D_COMPACT);
+            VRFY((ret >= 0),"set COMPACT layout succeeded");
+            is_chunked = 0;
+        }
+
+        if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL) {
+            ret = H5Pset_external (dcpl, FILE_EXTERNAL, (off_t) 0, H5F_UNLIMITED);
+            VRFY((ret >= 0),"set EXTERNAL file layout succeeded");
+            is_chunked = 0;
+        }
+
+#ifdef H5_HAVE_FILTER_FLETCHER32
+        if (selection_mode & TEST_FILTERS) {
+            ret = H5Zfilter_avail(H5Z_FILTER_FLETCHER32);
+            VRFY ((ret >=0 ), "Fletcher32 filter is available.\n");
+
+            ret = H5Zget_filter_info (H5Z_FILTER_FLETCHER32, &filter_info);
+            VRFY ( ( (filter_info & H5Z_FILTER_CONFIG_ENCODE_ENABLED) || (filter_info & H5Z_FILTER_CONFIG_DECODE_ENABLED) ) , "Fletcher32 filter encoding and decoding available.\n");
+
+            ret = H5Pset_fletcher32(dcpl);
+            VRFY((ret >= 0),"set filter (flecher32) succeeded");
+        }
+#endif /* H5_HAVE_FILTER_FLETCHER32 */
+    }
+
+    if (selection_mode & TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES) {
+        sid = H5Screate(H5S_NULL);
+        VRFY((sid >= 0), "H5Screate_simple succeeded");
+        is_chunked = 0;
+    }
+    else {
+        /* Create the basic Space */    
+        dims[0] = dim0;
+        dims[1] = dim1;
+        sid = H5Screate_simple (RANK, dims, NULL);
+        VRFY((sid >= 0), "H5Screate_simple succeeded");
+    }
+    
+
+    filename = (const char *)GetTestParameters();
+    HDassert(filename != NULL);
+
+    /* Setup the file access template */
+    fapl = create_faccess_plist(mpi_comm, mpi_info, l_facc_type, use_gpfs);
+    VRFY((fapl >= 0), "create_faccess_plist() succeeded");
+
+    /* Create the file */
+    fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
+
+    VRFY((fid >= 0), "H5Fcreate succeeded");
+
+    /* If we are not testing contiguous datasets */
+    if(is_chunked) {
+        /* Set up chunk information.  */
+        chunk_dims[0] = dims[0]/mpi_size;
+        chunk_dims[1] = dims[1];
+        ret = H5Pset_chunk(dcpl, 2, chunk_dims);
+        VRFY((ret >= 0),"chunk creation property list succeeded");
+    }
+
+
+    /* Create the dataset */
+    dataset = H5Dcreate2(fid, "nocolcause", data_type, sid, H5P_DEFAULT,
+            dcpl, H5P_DEFAULT);
+    VRFY((dataset >= 0), "H5Dcreate2() dataset succeeded");
+
+
+    /* 
+     * Set expected causes and some tweaks based on the type of test 
+     */
+    if (selection_mode & TEST_DATATYPE_CONVERSION) {
+        test_name = "Broken Collective I/O - Datatype Conversion";
+        no_collective_cause_local_expected |= H5D_MPIO_DATATYPE_CONVERSION;
+        no_collective_cause_global_expected |= H5D_MPIO_DATATYPE_CONVERSION;
+        /* set different sign to trigger type conversion */
+        data_type = H5T_NATIVE_UINT; 
+    }
+
+    if (selection_mode & TEST_DATA_TRANSFORMS) {
+        test_name = "Broken Collective I/O - DATA Transfroms";
+        no_collective_cause_local_expected |= H5D_MPIO_DATA_TRANSFORMS;
+        no_collective_cause_global_expected |= H5D_MPIO_DATA_TRANSFORMS;
+    }
+
+    if (selection_mode & TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES) {
+        test_name = "Broken Collective I/O - No Simple or Scalar DataSpace";
+        no_collective_cause_local_expected |= H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES;
+        no_collective_cause_global_expected |= H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES;
+    }
+
+    if (selection_mode & TEST_POINT_SELECTIONS ) {
+        test_name = "Broken Collective I/O - Point Selection";
+        no_collective_cause_local_expected |= H5D_MPIO_POINT_SELECTIONS;
+        no_collective_cause_global_expected |= H5D_MPIO_POINT_SELECTIONS;
+    }
+
+    if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT ||
+        selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL) {
+        test_name = "Broken Collective I/O - No CONTI or CHUNKED Dataset";
+        no_collective_cause_local_expected |= H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET;
+        no_collective_cause_global_expected |= H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET;
+    }
+
+#ifdef H5_HAVE_FILTER_FLETCHER32            
+    if (selection_mode & TEST_FILTERS) {
+        test_name = "Broken Collective I/O - Filter is required";
+        no_collective_cause_local_expected |= H5D_MPIO_FILTERS;
+        no_collective_cause_global_expected |= H5D_MPIO_FILTERS;
+    }
+#endif /* H5_HAVE_FILTER_FLETCHER32 */
+
+    if (selection_mode & TEST_SET_MPIPOSIX) {
+        test_name = "Broken Collective I/O - MPIO POSIX";
+        no_collective_cause_local_expected |= H5D_MPIO_SET_MPIPOSIX;
+        no_collective_cause_global_expected |= H5D_MPIO_SET_MPIPOSIX;
+    }
+
+    if (selection_mode & TEST_COLLECTIVE) {
+        test_name = "Broken Collective I/O - Not Broken";
+        no_collective_cause_local_expected = H5D_MPIO_COLLECTIVE;
+        no_collective_cause_global_expected = H5D_MPIO_COLLECTIVE;
+    }
+
+    if (selection_mode & TEST_SET_INDEPENDENT) {
+        test_name = "Broken Collective I/O - Independent";
+        no_collective_cause_local_expected = H5D_MPIO_SET_INDEPENDENT;
+        no_collective_cause_global_expected = H5D_MPIO_SET_INDEPENDENT;
+        /* switch to independent io */
+        is_independent = 1;
+    }
+
+    /* Add MPIPOSIX cause to expected cause if MPI_POSIX driver is in use '-p'.
+     * Exception to the independent cause.*/
+    if (facc_type == FACC_MPIPOSIX && !(selection_mode & TEST_SET_INDEPENDENT)) {
+        no_collective_cause_local_expected |= H5D_MPIO_SET_MPIPOSIX;
+        no_collective_cause_global_expected |= H5D_MPIO_SET_MPIPOSIX;
+    }
+
+    /* use all spaces for certain tests */
+    if (selection_mode & TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES ||
+        selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL) {
+        file_space = H5S_ALL;
+        mem_space = H5S_ALL;
+    }
+    else {
+        /* Get the file dataspace */
+        file_space = H5Dget_space(dataset);
+        VRFY((file_space >= 0), "H5Dget_space succeeded");
+
+        /* Create the memory dataspace */
+        mem_space = H5Screate_simple (RANK, dims, NULL);
+        VRFY((mem_space >= 0), "mem_space created");
+    }
+
+    if (selection_mode & TEST_POINT_SELECTIONS) {
+        coord[0][0] = 0; coord[0][1] = 0;
+        coord[1][0] = 1; coord[1][1] = 1;
+        ret = H5Sselect_elements (file_space, H5S_SELECT_SET, NELM, (const hsize_t *)coord);
+        VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+        ret = H5Sselect_elements (mem_space, H5S_SELECT_SET, NELM, (const hsize_t *)coord);
+        VRFY((ret >= 0), "H5Sselect_elements succeeded");
+    }
+
+
+    /* Get the number of elements in the selection */
+    length = dim0 * dim1;
+
+    /* Allocate and initialize the buffer */
+    buffer = (int *)HDmalloc(sizeof(int) * length);
+    VRFY((buffer != NULL), "malloc of buffer succeeded"); 
+    for(i = 0; i < length; i++) 
+        buffer[i] = i;
+
+    /* Set up the dxpl for the write */
+    dxpl_write = H5Pcreate(H5P_DATASET_XFER);
+    VRFY((dxpl_write >= 0), "H5Pcreate(H5P_DATASET_XFER) succeeded");
+    
+    if(is_independent) {
+        /* Set Independent I/O */
+        ret = H5Pset_dxpl_mpio(dxpl_write, H5FD_MPIO_INDEPENDENT);
+        VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
+    }
+    else {
+        /* Set Collective I/O */
+        ret = H5Pset_dxpl_mpio(dxpl_write, H5FD_MPIO_COLLECTIVE);
+        VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
+        
+    }
+
+    if (selection_mode & TEST_DATA_TRANSFORMS) {
+        ret = H5Pset_data_transform (dxpl_write, "x+1"); 
+        VRFY((ret >= 0), "H5Pset_data_transform succeeded");
+    }
+
+    /*---------------------
+     * Test Write access
+     *---------------------*/ 
+
+    /* Write */
+    ret = H5Dwrite(dataset, data_type, mem_space, file_space, dxpl_write, buffer);
+    if(ret < 0) H5Eprint2(H5E_DEFAULT, stdout);
+    VRFY((ret >= 0), "H5Dwrite() dataset multichunk write succeeded");
+
+
+    /* Get the cause of broken collective I/O */
+    ret = H5Pget_mpio_no_collective_cause (dxpl_write, &no_collective_cause_local_write, &no_collective_cause_global_write);
+    VRFY((ret >= 0), "retriving no collective cause succeeded" );
+
+
+    /*---------------------
+     * Test Read access
+     *---------------------*/ 
+
+    /* Make a copy of the dxpl to test the read operation */
+    dxpl_read = H5Pcopy(dxpl_write);
+    VRFY((dxpl_read >= 0), "H5Pcopy succeeded");
+
+    /* Read */
+    ret = H5Dread(dataset, data_type, mem_space, file_space, dxpl_read, buffer);
+
+    if(ret < 0) H5Eprint2(H5E_DEFAULT, stdout);
+    VRFY((ret >= 0), "H5Dread() dataset multichunk read succeeded");
+   
+    /* Get the cause of broken collective I/O */
+    ret = H5Pget_mpio_no_collective_cause (dxpl_read, &no_collective_cause_local_read, &no_collective_cause_global_read);
+    VRFY((ret >= 0), "retriving no collective cause succeeded" );
+
+    /* Check write vs read */
+    VRFY((no_collective_cause_local_read == no_collective_cause_local_write),
+        "reading and writing are the same for local cause of Broken Collective I/O");
+    VRFY((no_collective_cause_global_read == no_collective_cause_global_write),
+        "reading and writing are the same for global cause of Broken Collective I/O");
+    
+    /* Test values */
+    memset (message, 0, sizeof (message));
+    sprintf(message, "Local cause of Broken Collective I/O has the correct value for %s.\n",test_name);
+    VRFY((no_collective_cause_local_write == no_collective_cause_local_expected), message);
+    memset (message, 0, sizeof (message));
+    sprintf(message, "Global cause of Broken Collective I/O has the correct value for %s.\n",test_name);
+    VRFY((no_collective_cause_global_write == no_collective_cause_global_expected), message);
+
+    /* Release some resources */
+    if (sid)
+        H5Sclose(sid);
+    if (fapl)
+        H5Pclose(fapl);
+    if (dcpl)
+        H5Pclose(dcpl);
+    if (dxpl_write)
+        H5Pclose(dxpl_write);
+    if (dxpl_read)
+        H5Pclose(dxpl_read);
+    if (dataset)
+        H5Dclose(dataset);
+    if (mem_space)
+        H5Sclose(mem_space);
+    if (file_space)
+        H5Sclose(file_space);
+    if (fid)
+        H5Fclose(fid);
+    HDfree(buffer);
+
+    /* clean up external file */
+    if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL)
+        HDremove(FILE_EXTERNAL);
+
+    return;
+}
+
+
+/* 
+ * Function: test_no_collective_cause_mode_filter
+ *
+ * Purpose: 
+ *    Test specific for using filter as a caus of broken collective I/O and 
+ *    checks that the H5Pget_mpio_no_collective_cause properties in the DXPL
+ *    have the correct values.
+ *
+ * NOTE: 
+ *    This is a temprary function. 
+ *    test_no_collective_cause_mode(TEST_FILTERS) will replace this when
+ *    H5Dcreate and H5write support for mpio and filter feature.
+ *
+ * Input:   
+ *     TEST_FILTERS_READ:
+ *       Test for using filter (checksum) as the cause of breaking collective I/O.
+ * 
+ * Programmer: Jonathan Kim
+ * Date: Aug, 2012
+ */
+static void 
+test_no_collective_cause_mode_filter(int selection_mode) 
+{
+    uint32_t no_collective_cause_local_read = 0;
+    uint32_t no_collective_cause_local_expected = 0;
+    uint32_t no_collective_cause_global_read = 0;
+    uint32_t no_collective_cause_global_expected = 0;
+
+    const char  * filename;
+    const char  * test_name;
+    hbool_t     is_chunked=1;
+    int         mpi_size = -1; 
+    int         mpi_rank = -1;
+    int         length;
+    int         * buffer;
+    int         i;
+    MPI_Comm    mpi_comm = MPI_COMM_NULL;
+    MPI_Info    mpi_info = MPI_INFO_NULL;
+    hid_t       fid = -1;
+    hid_t       sid = -1;
+    hid_t       dataset = -1;
+    hid_t       data_type = H5T_NATIVE_INT;
+    hid_t       fapl_write = -1;
+    hid_t       fapl_read = -1;
+    hid_t       dcpl = -1;
+    hid_t       dxpl = -1;
+    hsize_t     dims[RANK];
+    hid_t       mem_space = -1;
+    hid_t       file_space = -1;
+    hsize_t     chunk_dims[RANK];
+    hbool_t     use_gpfs = FALSE;
+    herr_t      ret;
+#ifdef H5_HAVE_FILTER_FLETCHER32            
+    H5Z_filter_t filter_info;
+#endif    
+    char message[256];
+
+    /* Set up MPI parameters */
+    MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
+    MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
+
+    MPI_Barrier(MPI_COMM_WORLD);
+    
+    HDassert(mpi_size >= 1);
+
+    mpi_comm = MPI_COMM_WORLD;
+    mpi_info = MPI_INFO_NULL;
+
+    /* Create the dataset creation plist */
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
+    VRFY((dcpl >= 0), "dataset creation plist created successfully");
+
+    if (selection_mode == TEST_FILTERS_READ )  {
+#ifdef H5_HAVE_FILTER_FLETCHER32            
+            ret = H5Zfilter_avail(H5Z_FILTER_FLETCHER32);
+            VRFY ((ret >=0 ), "Fletcher32 filter is available.\n");
+
+            ret = H5Zget_filter_info (H5Z_FILTER_FLETCHER32, (unsigned int *) &filter_info);
+            VRFY ( ( (filter_info & H5Z_FILTER_CONFIG_ENCODE_ENABLED) || (filter_info & H5Z_FILTER_CONFIG_DECODE_ENABLED) ) , "Fletcher32 filter encoding and decoding available.\n");
+
+            ret = H5Pset_fletcher32(dcpl);
+            VRFY((ret >= 0),"set filter (flecher32) succeeded");
+#endif /* H5_HAVE_FILTER_FLETCHER32 */
+    }
+    else  {
+        VRFY(0, "Unexpected mode, only test for TEST_FILTERS_READ.");
+    }
+
+    /* Create the basic Space */    
+    dims[0] = dim0;
+    dims[1] = dim1;
+    sid = H5Screate_simple (RANK, dims, NULL);
+    VRFY((sid >= 0), "H5Screate_simple succeeded");
+    
+
+    filename = (const char *)GetTestParameters();
+    HDassert(filename != NULL);
+
+    /* Setup the file access template */
+    fapl_write = create_faccess_plist(mpi_comm, mpi_info, FACC_DEFAULT, use_gpfs);
+    VRFY((fapl_write >= 0), "create_faccess_plist() succeeded");
+
+    fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_write);
+    VRFY((fid >= 0), "H5Fcreate succeeded");
+
+    /* If we are not testing contiguous datasets */
+    if(is_chunked) {
+        /* Set up chunk information.  */
+        chunk_dims[0] = dims[0]/mpi_size;
+        chunk_dims[1] = dims[1];
+        ret = H5Pset_chunk(dcpl, 2, chunk_dims);
+        VRFY((ret >= 0),"chunk creation property list succeeded");
+    }
+
+
+    /* Create the dataset */
+    dataset = H5Dcreate2(fid, DSET_NOCOLCAUSE, data_type, sid, H5P_DEFAULT,
+            dcpl, H5P_DEFAULT);
+    VRFY((dataset >= 0), "H5Dcreate2() dataset succeeded");
+
+#ifdef H5_HAVE_FILTER_FLETCHER32            
+    /* Set expected cause */
+    test_name = "Broken Collective I/O - Filter is required";
+    no_collective_cause_local_expected = H5D_MPIO_FILTERS;
+    no_collective_cause_global_expected = H5D_MPIO_FILTERS;
+#endif
+
+    /* Ignore above expected cause and reset cause to MPIPOSIX if 
+     * the MPI_POSIX driver is in use.*/
+    if (facc_type == FACC_MPIPOSIX) {
+        no_collective_cause_local_expected = H5D_MPIO_SET_MPIPOSIX;
+        no_collective_cause_global_expected = H5D_MPIO_SET_MPIPOSIX;
+    }
+
+    /* Get the file dataspace */
+    file_space = H5Dget_space(dataset);
+    VRFY((file_space >= 0), "H5Dget_space succeeded");
+
+    /* Create the memory dataspace */
+    mem_space = H5Screate_simple (RANK, dims, NULL);
+    VRFY((mem_space >= 0), "mem_space created");
+
+    /* Get the number of elements in the selection */
+    length = dim0 * dim1;
+
+    /* Allocate and initialize the buffer */
+    buffer = (int *)HDmalloc(sizeof(int) * length);
+    VRFY((buffer != NULL), "malloc of buffer succeeded"); 
+    for(i = 0; i < length; i++) 
+        buffer[i] = i;
+
+    /* Set up the dxpl for the write */
+    dxpl = H5Pcreate(H5P_DATASET_XFER);
+    VRFY((dxpl >= 0), "H5Pcreate(H5P_DATASET_XFER) succeeded");
+    
+    if (selection_mode == TEST_FILTERS_READ)  {
+        /* To test read in collective I/O mode , write in independent mode 
+         * because write fails with mpio + filter */
+        ret = H5Pset_dxpl_mpio(dxpl, H5FD_MPIO_INDEPENDENT);
+        VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
+    }
+    else  {
+        /* To test write in collective I/O mode. */
+        ret = H5Pset_dxpl_mpio(dxpl, H5FD_MPIO_COLLECTIVE);
+        VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
+    }
+        
+
+    /* Write */
+    ret = H5Dwrite(dataset, data_type, mem_space, file_space, dxpl, buffer);
+
+    if(ret < 0) H5Eprint2(H5E_DEFAULT, stdout);
+    VRFY((ret >= 0), "H5Dwrite() dataset multichunk write succeeded");
+
+
+    /* Make a copy of the dxpl to test the read operation */
+    dxpl = H5Pcopy(dxpl);
+    VRFY((dxpl >= 0), "H5Pcopy succeeded");
+
+    if (dataset)
+        H5Dclose(dataset);
+    if (fapl_write)
+        H5Pclose(fapl_write);
+    if (fid)
+        H5Fclose(fid);
+
+
+    /*---------------------
+     * Test Read access
+     *---------------------*/
+
+    /* Setup the file access template */
+    fapl_read = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+    VRFY((fapl_read >= 0), "create_faccess_plist() succeeded");
+
+    fid = H5Fopen (filename, H5F_ACC_RDONLY, fapl_read);
+    dataset = H5Dopen2 (fid, DSET_NOCOLCAUSE, H5P_DEFAULT);
+
+    /* Set collective I/O properties in the dxpl. */
+    ret = H5Pset_dxpl_mpio(dxpl, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
+
+    /* Read */
+    ret = H5Dread(dataset, data_type, mem_space, file_space, dxpl, buffer);
+
+    if(ret < 0) H5Eprint2(H5E_DEFAULT, stdout);
+    VRFY((ret >= 0), "H5Dread() dataset multichunk read succeeded");
+   
+    /* Get the cause of broken collective I/O */
+    ret = H5Pget_mpio_no_collective_cause (dxpl, &no_collective_cause_local_read, &no_collective_cause_global_read);
+    VRFY((ret >= 0), "retriving no collective cause succeeded" );
+
+    /* Test values */
+    memset (message, 0, sizeof (message));
+    sprintf(message, "Local cause of Broken Collective I/O has the correct value for %s.\n",test_name);
+    VRFY((no_collective_cause_local_read == (uint32_t)no_collective_cause_local_expected), message);
+    memset (message, 0, sizeof (message));
+    sprintf(message, "Global cause of Broken Collective I/O has the correct value for %s.\n",test_name);
+    VRFY((no_collective_cause_global_read == (uint32_t)no_collective_cause_global_expected), message);
+
+    /* Release some resources */
+    if (sid)
+        H5Sclose(sid);
+    if (fapl_read)
+        H5Pclose(fapl_read);
+    if (dcpl)
+        H5Pclose(dcpl);
+    if (dxpl)
+        H5Pclose(dxpl);
+    if (dataset)
+        H5Dclose(dataset);
+    if (mem_space)
+        H5Sclose(mem_space);
+    if (file_space)
+        H5Sclose(file_space);
+    if (fid)
+        H5Fclose(fid);
+    HDfree(buffer);
+    return;
+}
+
+/* Function: no_collective_cause_tests
+ *
+ * Purpose: Tests cases for broken collective IO. 
+ *
+ * Programmer: Jonathan Kim
+ * Date: Aug, 2012
+ */
+void 
+no_collective_cause_tests(void) 
+{
+    int mpi_size = -1;
+    int mpi_rank = -1;
+    MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
+    MPI_Comm_size(MPI_COMM_WORLD, &mpi_rank);
+
+    /* 
+     * Test individual cause 
+     */
+    test_no_collective_cause_mode (TEST_COLLECTIVE);
+    test_no_collective_cause_mode (TEST_SET_INDEPENDENT);
+    test_no_collective_cause_mode (TEST_DATATYPE_CONVERSION);
+    test_no_collective_cause_mode (TEST_DATA_TRANSFORMS);
+    test_no_collective_cause_mode (TEST_SET_MPIPOSIX);
+    test_no_collective_cause_mode (TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES);
+    test_no_collective_cause_mode (TEST_POINT_SELECTIONS);
+    test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT);
+    test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL);
+#ifdef H5_HAVE_FILTER_FLETCHER32            
+   /* TODO: use this instead of below TEST_FILTERS_READ when H5Dcreate and 
+    * H5Dwrite is ready for mpio + filter feature.
+    */
+    /* test_no_collective_cause_mode (TEST_FILTERS); */
+    test_no_collective_cause_mode_filter (TEST_FILTERS_READ);
+#endif    
+
+    /* 
+     * Test combined causes 
+     */
+    test_no_collective_cause_mode (TEST_SET_MPIPOSIX | TEST_DATATYPE_CONVERSION);
+    test_no_collective_cause_mode (TEST_DATATYPE_CONVERSION | TEST_DATA_TRANSFORMS);
+    test_no_collective_cause_mode (TEST_DATATYPE_CONVERSION | TEST_DATA_TRANSFORMS | TEST_POINT_SELECTIONS);
+
+    return;
+}
+
 /*
  * Test consistency semantics of atomic mode
  */
@@ -3088,8 +3764,12 @@ dataset_atomicity(void)
 
     dim0 = 64; dim1 = 32;
     filename = GetTestParameters();
+    if (facc_type != FACC_MPIO) {
+	printf("Atomicity tests will not work without the MPIO VFD\n");
+        return;
+    }
     if(VERBOSE_MED)
-	printf("Independent write test on file %s\n", filename);
+	printf("atomic writes to file %s\n", filename);
 
     /* set up MPI parameters */
     MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
diff --git a/testpar/t_mpi.c b/testpar/t_mpi.c
index f05eee2..6e2348b 100644
--- a/testpar/t_mpi.c
+++ b/testpar/t_mpi.c
@@ -1178,12 +1178,17 @@ main(int argc, char **argv)
      * MPIO MPIO File size range test
      *=======================================*/
     MPI_BANNER("MPIO File size range test...");
+#ifndef H5_HAVE_WIN32_API
     ret_code = test_mpio_gb_file(filenames[0]);
     ret_code = errors_sum(ret_code);
     if (mpi_rank==0 && ret_code > 0){
-  printf("***FAILED with %d total errors\n", ret_code);
-  nerrors += ret_code;
+	printf("***FAILED with %d total errors\n", ret_code);
+	nerrors += ret_code;
     }
+#else
+    if (mpi_rank==0)
+        printf(" will be skipped on Windows (JIRA HDDFV-8064)\n");
+#endif
 
 
     /*=======================================
diff --git a/testpar/testpar.h b/testpar/testpar.h
index ce11204..2c99103 100644
--- a/testpar/testpar.h
+++ b/testpar/testpar.h
@@ -18,6 +18,9 @@
 #ifndef TESTPAR_H
 #define TESTPAR_H
 
+/* Indicate that these are parallel tests, for the testing framework */
+#define H5_PARALLEL_TEST
+
 #include "h5test.h"
 
 /* Constants definitions */
diff --git a/testpar/testph5.sh.in b/testpar/testph5.sh.in
index f78cfac..83327ca 100644
--- a/testpar/testph5.sh.in
+++ b/testpar/testph5.sh.in
@@ -25,11 +25,6 @@ TEST_APP_BIN=`pwd`/$TEST_APP    # The path of the tool binary
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # Print a line-line message left justified in a field of 70 characters
 # beginning with the word "Testing".
 #
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index 4b5506f..9da2f6d 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -411,9 +411,13 @@ int main(int argc, char **argv)
     AddTest("cngrpw", collective_group_write, NULL,
       "collective group and dataset write", &collngroups_params);
     AddTest("ingrpr", independent_group_read, NULL,
-      "independent group and dataset read", &collngroups_params);
+	    "independent group and dataset read", &collngroups_params);
+#ifndef H5_HAVE_WIN32_API
     AddTest("bigdset", big_dataset, NULL,
             "big dataset test", PARATESTFILE);
+#else
+    printf("big dataset test will be skipped on Windows (JIRA HDDFV-8064)\n");
+#endif
     AddTest("fill", dataset_fillvalue, NULL,
       "dataset fill value", PARATESTFILE);
 
@@ -502,6 +506,10 @@ int main(int argc, char **argv)
             "test actual io mode proprerty",
             PARATESTFILE);
 
+    AddTest("nocolcause", no_collective_cause_tests, NULL,
+            "test cause for broken collective io",
+            PARATESTFILE);
+
     if((mpi_size < 2) && MAINPROCESS) {
         printf("File Image Ops daisy chain test needs at least 2 processes.\n");
         printf("File Image Ops daisy chain test will be skipped \n");
@@ -509,16 +517,6 @@ int main(int argc, char **argv)
     AddTest((mpi_size < 2)? "-fiodc" : "fiodc", file_image_daisy_chain_test, NULL,
             "file image ops daisy chain", NULL);
 
-    /* Display testing information */
-    TestInfo(argv[0]);
-
-    /* setup file access property list */
-    fapl = H5Pcreate (H5P_FILE_ACCESS);
-    H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
-
-    /* Parse command line arguments */
-    TestParseCmdLine(argc, argv);
-
     if((mpi_size < 2)&& MAINPROCESS ) {
 	printf("Atomicity tests need at least 2 processes to participate\n");
 	printf("8 is more recommended.. Atomicity tests will be skipped \n");
@@ -531,6 +529,16 @@ int main(int argc, char **argv)
                 "dataset atomic updates", PARATESTFILE);
     }
 
+    /* Display testing information */
+    TestInfo(argv[0]);
+
+    /* setup file access property list */
+    fapl = H5Pcreate (H5P_FILE_ACCESS);
+    H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
+
+    /* Parse command line arguments */
+    TestParseCmdLine(argc, argv);
+
     if (facc_type == FACC_MPIPOSIX && MAINPROCESS){
   printf("===================================\n"
          "   Using MPIPOSIX driver\n"
diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h
index da11c62..29ad411 100644
--- a/testpar/testphdf5.h
+++ b/testpar/testphdf5.h
@@ -175,6 +175,21 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
 #define TEST_ACTUAL_IO_LINK_CHUNK                       9
 #define TEST_ACTUAL_IO_CONTIGUOUS                       10
 
+/* Definitions of the selection mode for the no_collective_cause_tests function. */
+#define TEST_COLLECTIVE                                 0x001
+#define TEST_SET_INDEPENDENT                            0x002 
+#define TEST_DATATYPE_CONVERSION                        0x004
+#define TEST_DATA_TRANSFORMS                            0x008
+#define TEST_SET_MPIPOSIX                               0x010
+#define TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES            0x020
+#define TEST_POINT_SELECTIONS                           0x040
+#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT  0x080
+#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL 0x100
+#define TEST_FILTERS                                    0x200
+/* TEST_FILTERS will take place of this after supporting mpio + filter for 
+ * H5Dcreate and H5Dwrite */
+#define TEST_FILTERS_READ                               0x400
+
 /* Don't erase these lines, they are put here for debugging purposes */
 /*
 #define MSPACE1_RANK     1
@@ -239,6 +254,7 @@ void extend_readInd(void);
 void extend_readAll(void);
 void none_selection_chunk(void);
 void actual_io_mode_tests(void);
+void no_collective_cause_tests(void);
 void test_chunk_alloc(void);
 void test_filter_read(void);
 void compact_dataset(void);
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 6cdfcac..b48a1b9 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_TOOLS)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Setup include Directories
 #-----------------------------------------------------------------------------
 INCLUDE_DIRECTORIES (${HDF5_TOOLS_SOURCE_DIR}/lib)
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 70cc001..70e11ae 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -32,6 +31,23 @@
 # Tools HDF5 Makefile(.in)
 #
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,24 +67,31 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am COPYING
 TESTS =
 subdir = tools
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -78,6 +101,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -85,8 +113,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
@@ -114,7 +144,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -132,12 +162,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -411,6 +438,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -439,6 +470,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -456,12 +488,12 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -471,7 +503,11 @@ $(RECURSIVE_TARGETS):
 	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -485,37 +521,6 @@ $(RECURSIVE_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -524,6 +529,10 @@ ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
+cscopelist-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -587,6 +596,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -622,13 +645,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -664,10 +684,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -747,21 +772,23 @@ ps-am:
 uninstall-am:
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+	cscopelist-recursive ctags-recursive install-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+	clean-generic clean-libtool cscopelist cscopelist-recursive \
+	ctags ctags-recursive distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+	tags-recursive uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -779,7 +806,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -805,7 +832,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -829,7 +856,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -839,7 +866,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -929,7 +956,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -959,7 +986,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5copy/CMakeLists.txt b/tools/h5copy/CMakeLists.txt
index f9e7c12..95341a2 100644
--- a/tools/h5copy/CMakeLists.txt
+++ b/tools/h5copy/CMakeLists.txt
@@ -374,11 +374,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5copy ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+  
 INSTALL (
     TARGETS
         h5copy
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5copy/Makefile.am b/tools/h5copy/Makefile.am
index dd0c5c3..47e8685 100644
--- a/tools/h5copy/Makefile.am
+++ b/tools/h5copy/Makefile.am
@@ -25,7 +25,8 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG=h5copygentest
-TEST_SCRIPT=$(srcdir)/testh5copy.sh
+TEST_SCRIPT=testh5copy.sh
+
 check_SCRIPTS=$(TEST_SCRIPT)
 SCRIPT_DEPEND=h5copy$(EXEEXT)
 
diff --git a/tools/h5copy/Makefile.in b/tools/h5copy/Makefile.in
index b71ee70..da9d0b7 100644
--- a/tools/h5copy/Makefile.in
+++ b/tools/h5copy/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,19 +68,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/testh5copy.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 bin_PROGRAMS = h5copy$(EXEEXT)
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = tools/h5copy
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = testh5copy.sh
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)"
 am__EXEEXT_1 = h5copygentest$(EXEEXT)
@@ -73,9 +91,10 @@ h5copy_SOURCES = h5copy.c
 h5copy_OBJECTS = h5copy.$(OBJEXT)
 h5copy_LDADD = $(LDADD)
 h5copy_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5copy_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5copy_LDFLAGS) $(LDFLAGS) -o $@
@@ -83,6 +102,18 @@ am_h5copygentest_OBJECTS = h5copygentest.$(OBJEXT)
 h5copygentest_OBJECTS = $(am_h5copygentest_OBJECTS)
 h5copygentest_LDADD = $(LDADD)
 h5copygentest_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -93,30 +124,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = h5copy.c $(h5copygentest_SOURCES)
 DIST_SOURCES = h5copy.c $(h5copygentest_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -134,12 +168,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -406,7 +437,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG = h5copygentest
-TEST_SCRIPT = $(srcdir)/testh5copy.sh
+TEST_SCRIPT = testh5copy.sh
 check_SCRIPTS = $(TEST_SCRIPT)
 SCRIPT_DEPEND = h5copy$(EXEEXT)
 
@@ -430,6 +461,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -459,6 +494,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -468,10 +504,15 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+testh5copy.sh: $(top_builddir)/config.status $(srcdir)/testh5copy.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -520,10 +561,10 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5copy$(EXEEXT): $(h5copy_OBJECTS) $(h5copy_DEPENDENCIES) 
+h5copy$(EXEEXT): $(h5copy_OBJECTS) $(h5copy_DEPENDENCIES) $(EXTRA_h5copy_DEPENDENCIES) 
 	@rm -f h5copy$(EXEEXT)
 	$(AM_V_CCLD)$(h5copy_LINK) $(h5copy_OBJECTS) $(h5copy_LDADD) $(LIBS)
-h5copygentest$(EXEEXT): $(h5copygentest_OBJECTS) $(h5copygentest_DEPENDENCIES) 
+h5copygentest$(EXEEXT): $(h5copygentest_OBJECTS) $(h5copygentest_DEPENDENCIES) $(EXTRA_h5copygentest_DEPENDENCIES) 
 	@rm -f h5copygentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5copygentest_OBJECTS) $(h5copygentest_LDADD) $(LIBS)
 
@@ -539,26 +580,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -615,6 +653,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -667,10 +719,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -757,7 +814,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -786,7 +843,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -812,7 +869,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -836,7 +893,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -846,7 +903,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -936,7 +993,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -966,7 +1023,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5copy/testfiles/h5copy_ref.out.ls b/tools/h5copy/testfiles/h5copy_ref.out.ls
index 0769dc8..d685af2 100644
--- a/tools/h5copy/testfiles/h5copy_ref.out.ls
+++ b/tools/h5copy/testfiles/h5copy_ref.out.ls
@@ -21,7 +21,7 @@ Opened "./testfiles/h5copy_ref.out.h5" with sec2 driver.
     Storage:   <details removed for portability>
     Type:      object reference
 /COPY/Dset_REGREF        Dataset {2/2}
-    Location:  1:9400
+    Location:  1:5304
     Links:     1
     Storage:   <details removed for portability>
     Type:      dataset region reference
diff --git a/tools/h5copy/testfiles/h5copytst.out.ls b/tools/h5copy/testfiles/h5copytst.out.ls
index 62c860b..4044aaf 100644
--- a/tools/h5copy/testfiles/h5copytst.out.ls
+++ b/tools/h5copy/testfiles/h5copytst.out.ls
@@ -3,57 +3,57 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
     Location:  1:96
     Links:     1
 /A                       Group
-    Location:  1:88336
+    Location:  1:84304
     Links:     1
 /A/B1                    Group
-    Location:  1:89040
+    Location:  1:85008
     Links:     1
 /A/B1/simple             Dataset {6/6}
-    Location:  1:88208
+    Location:  1:84176
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /A/B2                    Group
-    Location:  1:92576
+    Location:  1:88544
     Links:     1
 /A/B2/simple2            Dataset {6/6}
-    Location:  1:92448
+    Location:  1:88416
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /C                       Group
-    Location:  1:95784
+    Location:  1:91752
     Links:     1
 /C/D                     Group
-    Location:  1:96488
+    Location:  1:92456
     Links:     1
 /C/D/simple              Dataset {6/6}
-    Location:  1:95656
+    Location:  1:91624
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /E                       Group
-    Location:  1:110400
+    Location:  1:106368
     Links:     1
 /E/F                     Group
-    Location:  1:111104
+    Location:  1:107072
     Links:     1
 /E/F/grp_dsets           Group
-    Location:  1:98600
+    Location:  1:94568
     Links:     1
 /E/F/grp_dsets/chunk     Dataset {6/6}
-    Location:  1:102784
+    Location:  1:98752
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /E/F/grp_dsets/compact   Dataset {6/6}
-    Location:  1:103240
+    Location:  1:99208
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /E/F/grp_dsets/compound  Dataset {2/2}
-    Location:  1:103376
+    Location:  1:99344
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -61,60 +61,60 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
                    "str2"             +20   20-byte null-terminated ASCII string
                } 40 bytes
 /E/F/grp_dsets/compressed Dataset {6/6}
-    Location:  1:105688
+    Location:  1:101656
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /E/F/grp_dsets/named_vl  Dataset {2/2}
-    Location:  1:109952
+    Location:  1:105920
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:110080 variable length of
+    Type:      shared-1:106048 variable length of
                    32-bit little-endian integer
 /E/F/grp_dsets/nested_vl Dataset {2/2}
-    Location:  1:110128
+    Location:  1:106096
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /E/F/grp_dsets/simple    Dataset {6/6}
-    Location:  1:110272
+    Location:  1:106240
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /E/F/grp_dsets/vl        Type
-    Location:  1:110080
+    Location:  1:106048
     Links:     2
-    Type:      shared-1:110080 variable length of
+    Type:      shared-1:106048 variable length of
                    32-bit little-endian integer
 /G                       Group
-    Location:  1:126048
+    Location:  1:122016
     Links:     1
 /G/H                     Group
-    Location:  1:126752
+    Location:  1:122720
     Links:     1
 /G/H/grp_nested          Group
-    Location:  1:113128
+    Location:  1:109096
     Links:     1
 /G/H/grp_nested/grp_dsets Group
-    Location:  1:113920
+    Location:  1:109888
     Links:     1
 /G/H/grp_nested/grp_dsets/chunk Dataset {6/6}
-    Location:  1:118104
+    Location:  1:114072
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /G/H/grp_nested/grp_dsets/compact Dataset {6/6}
-    Location:  1:118560
+    Location:  1:114528
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /G/H/grp_nested/grp_dsets/compound Dataset {2/2}
-    Location:  1:118696
+    Location:  1:114664
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -122,34 +122,34 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
                    "str2"             +20   20-byte null-terminated ASCII string
                } 40 bytes
 /G/H/grp_nested/grp_dsets/compressed Dataset {6/6}
-    Location:  1:121008
+    Location:  1:116976
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /G/H/grp_nested/grp_dsets/named_vl Dataset {2/2}
-    Location:  1:125272
+    Location:  1:121240
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:125400 variable length of
+    Type:      shared-1:121368 variable length of
                    32-bit little-endian integer
 /G/H/grp_nested/grp_dsets/nested_vl Dataset {2/2}
-    Location:  1:125448
+    Location:  1:121416
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /G/H/grp_nested/grp_dsets/simple Dataset {6/6}
-    Location:  1:125592
+    Location:  1:121560
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /G/H/grp_nested/grp_dsets/vl Type
-    Location:  1:125400
+    Location:  1:121368
     Links:     2
-    Type:      shared-1:125400 variable length of
+    Type:      shared-1:121368 variable length of
                    32-bit little-endian integer
 /chunk                   Dataset {6/6}
     Location:  1:6312
@@ -178,21 +178,21 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /grp_dsets               Group
-    Location:  1:32160
+    Location:  1:28128
     Links:     1
 /grp_dsets/chunk         Dataset {6/6}
-    Location:  1:36344
+    Location:  1:32312
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_dsets/compact       Dataset {6/6}
-    Location:  1:36800
+    Location:  1:32768
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_dsets/compound      Dataset {2/2}
-    Location:  1:36936
+    Location:  1:32904
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -200,62 +200,62 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
                    "str2"             +20   20-byte null-terminated ASCII string
                } 40 bytes
 /grp_dsets/compressed    Dataset {6/6}
-    Location:  1:39248
+    Location:  1:35216
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /grp_dsets/named_vl      Dataset {2/2}
-    Location:  1:43512
+    Location:  1:39480
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:43640 variable length of
+    Type:      shared-1:39608 variable length of
                    32-bit little-endian integer
 /grp_dsets/nested_vl     Dataset {2/2}
-    Location:  1:43688
+    Location:  1:39656
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /grp_dsets/simple        Dataset {6/6}
-    Location:  1:43832
+    Location:  1:39800
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_dsets/simple_group  Dataset {6/6}
-    Location:  1:59944
+    Location:  1:55912
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_dsets/vl            Type
-    Location:  1:43640
+    Location:  1:39608
     Links:     2
-    Type:      shared-1:43640 variable length of
+    Type:      shared-1:39608 variable length of
                    32-bit little-endian integer
 /grp_empty               Group
-    Location:  1:31368
+    Location:  1:27336
     Links:     1
 /grp_nested              Group
-    Location:  1:44624
+    Location:  1:40592
     Links:     1
 /grp_nested/grp_dsets    Group
-    Location:  1:45416
+    Location:  1:41384
     Links:     1
 /grp_nested/grp_dsets/chunk Dataset {6/6}
-    Location:  1:49600
+    Location:  1:45568
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_nested/grp_dsets/compact Dataset {6/6}
-    Location:  1:50056
+    Location:  1:46024
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_nested/grp_dsets/compound Dataset {2/2}
-    Location:  1:50192
+    Location:  1:46160
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -263,51 +263,51 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
                    "str2"             +20   20-byte null-terminated ASCII string
                } 40 bytes
 /grp_nested/grp_dsets/compressed Dataset {6/6}
-    Location:  1:52504
+    Location:  1:48472
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /grp_nested/grp_dsets/named_vl Dataset {2/2}
-    Location:  1:56768
+    Location:  1:52736
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:56896 variable length of
+    Type:      shared-1:52864 variable length of
                    32-bit little-endian integer
 /grp_nested/grp_dsets/nested_vl Dataset {2/2}
-    Location:  1:56944
+    Location:  1:52912
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /grp_nested/grp_dsets/simple Dataset {6/6}
-    Location:  1:57088
+    Location:  1:53056
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_nested/grp_dsets/vl Type
-    Location:  1:56896
+    Location:  1:52864
     Links:     2
-    Type:      shared-1:56896 variable length of
+    Type:      shared-1:52864 variable length of
                    32-bit little-endian integer
 /grp_rename              Group
-    Location:  1:61152
+    Location:  1:57120
     Links:     1
 /grp_rename/chunk        Dataset {6/6}
-    Location:  1:65336
+    Location:  1:61304
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_rename/compact      Dataset {6/6}
-    Location:  1:65792
+    Location:  1:61760
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_rename/compound     Dataset {2/2}
-    Location:  1:65928
+    Location:  1:61896
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -315,28 +315,28 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
                    "str2"             +20   20-byte null-terminated ASCII string
                } 40 bytes
 /grp_rename/compressed   Dataset {6/6}
-    Location:  1:68240
+    Location:  1:64208
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /grp_rename/grp_dsets    Group
-    Location:  1:74032
+    Location:  1:70000
     Links:     1
 /grp_rename/grp_dsets/chunk Dataset {6/6}
-    Location:  1:78216
+    Location:  1:74184
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_rename/grp_dsets/compact Dataset {6/6}
-    Location:  1:78672
+    Location:  1:74640
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_rename/grp_dsets/compound Dataset {2/2}
-    Location:  1:78808
+    Location:  1:74776
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -344,73 +344,73 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
                    "str2"             +20   20-byte null-terminated ASCII string
                } 40 bytes
 /grp_rename/grp_dsets/compressed Dataset {6/6}
-    Location:  1:81120
+    Location:  1:77088
     Links:     1
     Chunks:    {2} 8 bytes
     Storage:   <details removed for portability>
     Filter-0:  deflate-1 OPT {1}
     Type:      32-bit little-endian integer
 /grp_rename/grp_dsets/named_vl Dataset {2/2}
-    Location:  1:85384
+    Location:  1:81352
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:85512 variable length of
+    Type:      shared-1:81480 variable length of
                    32-bit little-endian integer
 /grp_rename/grp_dsets/nested_vl Dataset {2/2}
-    Location:  1:85560
+    Location:  1:81528
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /grp_rename/grp_dsets/simple Dataset {6/6}
-    Location:  1:85704
+    Location:  1:81672
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_rename/grp_dsets/vl Type
-    Location:  1:85512
+    Location:  1:81480
     Links:     2
-    Type:      shared-1:85512 variable length of
+    Type:      shared-1:81480 variable length of
                    32-bit little-endian integer
 /grp_rename/named_vl     Dataset {2/2}
-    Location:  1:72504
+    Location:  1:68472
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:72632 variable length of
+    Type:      shared-1:68600 variable length of
                    32-bit little-endian integer
 /grp_rename/nested_vl    Dataset {2/2}
-    Location:  1:72680
+    Location:  1:68648
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /grp_rename/simple       Dataset {6/6}
-    Location:  1:72824
+    Location:  1:68792
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /grp_rename/vl           Type
-    Location:  1:72632
+    Location:  1:68600
     Links:     2
-    Type:      shared-1:72632 variable length of
+    Type:      shared-1:68600 variable length of
                    32-bit little-endian integer
 /named_vl                Dataset {2/2}
-    Location:  1:19296
+    Location:  1:17280
     Links:     1
     Storage:   <details removed for portability>
-    Type:      shared-1:19424 variable length of
+    Type:      shared-1:17408 variable length of
                    32-bit little-endian integer
 /nested_vl               Dataset {2/2}
-    Location:  1:25792
+    Location:  1:21760
     Links:     1
     Storage:   <details removed for portability>
     Type:      variable length of
                    variable length of
                        32-bit little-endian integer
 /rename                  Dataset {2/2}
-    Location:  1:30160
+    Location:  1:26128
     Links:     1
     Storage:   <details removed for portability>
     Type:      struct {
@@ -423,7 +423,7 @@ Opened "./testfiles/h5copytst.out.h5" with sec2 driver.
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
 /simple_top              Dataset {6/6}
-    Location:  1:27984
+    Location:  1:23952
     Links:     1
     Storage:   <details removed for portability>
     Type:      32-bit little-endian integer
diff --git a/tools/h5copy/testh5copy.sh b/tools/h5copy/testh5copy.sh
deleted file mode 100644
index 0529d53..0000000
--- a/tools/h5copy/testh5copy.sh
+++ /dev/null
@@ -1,548 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5.  The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html.  COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page.  It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
-# access to either file, you may request a copy from help at hdfgroup.org.
-#
-# Tests for the h5copy tool
-#
-# Pedro Vicente Nunes (pvn at hdfgroup.org), Albert Cheng (acheng at hdfgroup.org)
-# Thursday, July 20, 2006
-#
-
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-    srcdir=.
-fi
-
-# source dirs
-SRC_TOOLS="$srcdir/.."
-SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
-# testfiles source dirs for tools
-SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
-SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
-SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
-SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
-SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
-SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
-
-TESTNAME=h5copy
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-######################################################################
-# test files
-# --------------------------------------------------------------------
-# All the test files copy from source directory to test directory
-# NOTE: Keep this framework to add/remove test files.
-#       Any test files from other tools can be used in this framework.
-#       This list are also used for checking exist.
-#       Comment '#' without space can be used.
-# --------------------------------------------------------------------
-# List of files that will be copied over to local test dir
-LIST_HDF5_TEST_FILES="
-$SRC_H5COPY_TESTFILES/h5copytst.h5
-$SRC_H5COPY_TESTFILES/h5copy_ref.h5
-$SRC_H5COPY_TESTFILES/h5copy_extlinks_src.h5
-$SRC_H5COPY_TESTFILES/h5copy_extlinks_trg.h5
-"
-
-# List of expect files that will be copied over to local test dir
-LIST_OTHER_TEST_FILES="
-$SRC_H5COPY_TESTFILES/h5copy_extlinks_src.out.ls
-$SRC_H5COPY_TESTFILES/h5copy_ref.out.ls
-$SRC_H5COPY_TESTFILES/h5copytst.out.ls
-$SRC_H5COPY_TESTFILES/h5copy_misc1.out
-"
-
-H5COPY=h5copy               # The tool name
-H5COPY_BIN=`pwd`/$H5COPY    # The path of the tool binary
-H5DIFF=h5diff               # The h5diff tool name 
-H5DIFF_BIN=`pwd`/../h5diff/$H5DIFF    # The path of the h5diff tool binary
-H5LS=h5ls                   # The h5ls tool name 
-H5LS_ARGS=-Svr              # Arguments to the h5ls tool
-H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary
-CMP='cmp -s'
-DIFF='diff -c'
-CP='cp'
-
-nerrors=0
-verbose=yes
-h5haveexitcode=yes	    # default is yes
-
-TESTDIR=./testfiles
-test -d $TESTDIR || mkdir $TESTDIR
-
-# RUNSERIAL is used. Check if it can return exit code from executalbe correctly.
-if [ -n "$RUNSERIAL_NOEXITCODE" ]; then
-    echo "***Warning*** Serial Exit Code is not passed back to shell corretly."
-    echo "***Warning*** Exit code checking is skipped."
-    h5haveexitcode=no
-fi
-
-#
-# copy test files and expected output files from source dirs to test dir
-#
-COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES"
-
-COPY_TESTFILES_TO_TESTDIR()
-{
-    # copy test files. Used -f to make sure get a new copy
-    for tstfile in $COPY_TESTFILES
-    do
-        # ignore '#' comment
-        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
-        RET=$?
-        if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile."
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
-            fi
-        fi
-    done
-}
-
-# Print a "SKIP" message
-SKIP() {
-	 TESTING $H5COPY $@
-	  echo  " -SKIP-"
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-TESTING() 
-{
-    SPACES="                                                               "
-    echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY() 
-{
-    SPACES="                                                               "
-    echo "Verifying h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY_H5LS() 
-{
-    SPACES="                                                               "
-    echo "Verifying h5ls file structure $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY_OUTPUT() 
-{
-    SPACES="                                                               "
-    echo "Verifying output files $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Source in the output filter function definitions.
-. $srcdir/../../bin/output_filter.sh
-
-# Run a test and print PASS or *FAIL*. If h5copy can complete
-# with exit status 0, consider it pass. If a test fails then increment
-# the `nerrors' global variable.
-# Assumed arguments:
-# $1 is -i
-# $2 is input file
-# $3 is -o
-# $4 is output file
-# $* everything else arguments for h5copy.
-
-TOOLTEST() 
-{
-    actualout="$TESTDIR/tooltest.actualout"
-    actualerr="$TESTDIR/tooltest.actualerr"
-     runh5diff=yes
-     if [ "$1" = -i ]; then
-      inputfile=$2
-     else
-      runh5diff=no
-     fi
-     if [ "$3" = -o ]; then
-      outputfile=$4
-     else 
-      runh5diff=no
-     fi
-  
-    TESTING $H5COPY $@
-    (
-    echo "#############################"
-    echo " output for '$H5COPY $@'"
-    echo "#############################"
-    $RUNSERIAL $H5COPY_BIN $@
-    ) > $actualout 2> $actualerr
-    RET=$?
-    if [ $RET != 0 ]; then
-        echo "*FAILED*"
-        echo "failed result is:"
-        cat $actualout
-        nerrors="`expr $nerrors + 1`"
-    else
-        echo " PASSED"
-
-        # Clean up output file
-        if test -z "$HDF5_NOCLEANUP"; then
-           rm -f $actualout $actualerr
-        fi
-    fi
-    
-    if [ $runh5diff != no ]; then
-     H5DIFFTEST $inputfile $outputfile $7 $9
-    fi
-}
-
-
-# Compare the two text files
-# PASS if same
-# FAIL if different, and show the diff
-#
-# Assumed arguments:
-# $1 is text file1 (expected output)
-# $2 is text file2 (actual output)
-CMP_OUTPUT()
-{
-    expect=$1
-    actual=$2
-
-    VERIFY_OUTPUT $@
-    if [ ! -f $expect ]; then
-        # Create the expect file if it doesn't yet exist.
-        echo " CREATED"
-        cp $actual $expect
-    elif $CMP $expect $actual; then
-        echo " PASSED"
-    else
-        echo "*FAILED*"
-        echo "    Expected output differs from actual output"
-        nerrors="`expr $nerrors + 1`"
-        test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
-    fi
-}
-
-TOOLTEST_FAIL() 
-{
-    expectout="$TESTDIR/$1"
-    actualout="$TESTDIR/$1.actualout"
-    actualerr="$TESTDIR/$1.actualerr"
-    actualout_sav=${actualout}-sav
-    actualerr_sav=${actualerr}-sav
-    shift
-    if [ "$1" = -i ]; then
-      inputfile=$2
-    fi
-    if [ "$3" = -o ]; then
-      outputfile=$4
-    fi
-
-    TESTING $H5COPY $@
-    (
-    #echo "#############################"
-    #echo " output for '$H5COPY $@'"
-    #echo "#############################"
-    $RUNSERIAL $H5COPY_BIN $@
-    ) > $actualout 2> $actualerr
-
-    RET=$?
-    # save actualout and actualerr in case they are needed later.
-    cp $actualout $actualout_sav
-    STDOUT_FILTER $actualout
-    cp $actualerr $actualerr_sav
-    STDERR_FILTER $actualerr
-    if [ $RET != 0 ]; then
-        echo " PASSED"
-        # Verifying output text from h5copy
-        if [ "$expectout" != "SKIP" ]; then
-            # combine stderr to stdout to compare the output at once.
-            # We may seperate stdout and stderr later.
-            cat $actualerr >> $actualout
-            CMP_OUTPUT $expectout $actualout
-        fi
-    else
-        echo "*FAILED*"
-        echo "failed result is:"
-        cat $actualout
-        nerrors="`expr $nerrors + 1`"
-    fi
-   
-
-    # Clean up output file
-    if test -z "$HDF5_NOCLEANUP"; then
-       rm -f $actualout $actualerr $actualout_sav $actualerr_sav
-    fi
-}
-
-
-# Call the h5diff tool
-#
-H5DIFFTEST() 
-{
-    VERIFY  $@
-    $RUNSERIAL $H5DIFF_BIN -q "$@" 
-    RET=$?
-    if [ $RET != 0 ] ; then
-         echo "*FAILED*"
-         nerrors="`expr $nerrors + 1`"
-    else
-         echo " PASSED"
-    fi
-}
-
-# Call the h5diff tool with a call that is expected to fail
-#
-H5DIFFTEST_FAIL() 
-{
-    VERIFY  $@
-    $RUNSERIAL $H5DIFF_BIN -q "$@" 
-    RET=$?
-
-    if [ $h5haveexitcode = 'yes' -a $RET != 1 ] ; then
-         echo "*FAILED*"
-         nerrors="`expr $nerrors + 1`"
-    else
-         echo " PASSED"
-    fi
-}
-
-# Call the h5ls tool to verify the correct output data in the destination file
-#
-H5LSTEST() 
-{
-    expect="$TESTDIR/`basename $1 .h5`.ls"
-    actual="$TESTDIR/`basename $1 .h5`.ls.actualout"
-
-    # Stderr is included in stdout so that the diff can detect
-    # any unexpected output from that stream too.
-    #
-    # Note:  The modification time and storage utilization are masked off
-    #   so that the output is more portable
-    VERIFY_H5LS  $@
-    (
-      $RUNSERIAL $H5LS_BIN $H5LS_ARGS $@
-    ) 2>&1 |sed 's/Modified:.*/Modified:  XXXX-XX-XX XX:XX:XX XXX/' |sed 's/Storage:.*/Storage:   <details removed for portability>/' >$actual
-
-
-   if [ ! -f $expect ]; then
-    # Create the expect file if it doesn't yet exist.
-    echo " CREATED"
-    cp $actual $expect
-   elif $CMP $expect $actual; then
-      echo " PASSED"
-   else
-      echo "*FAILED*"
-      echo "    Expected result (*.ls) differs from actual result (*.out)"
-      nerrors="`expr $nerrors + 1`"
-      test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
-   fi
-
-   # Clean up output file
-   if test -z "$HDF5_NOCLEANUP"; then
-      rm -f $actual $actual_err
-   fi
-}
-
-# Copy single datasets of various forms from one group to another,
-#       adding object copied to the destination file each time
-#
-# Assumed arguments:
-# <none>
-COPY_OBJECTS() 
-{
-    TESTFILE="$TESTDIR/h5copytst.h5"
-    FILEOUT="$TESTDIR/`basename h5copytst.h5 .h5`.out.h5"
-
-    # Remove any output file left over from previous test run
-    rm -f $FILEOUT
-
-    echo "Testing from `basename $TESTFILE` to `basename $FILEOUT` for the following tests:"
-    echo "Test copying various forms of datasets"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s simple     -d simple
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s chunk      -d chunk
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compact    -d compact
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compound   -d compound
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compressed -d compressed
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s named_vl   -d named_vl
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s nested_vl  -d nested_vl
-
-    echo "Test copying dataset within group in source file to root of destination"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets/simple  -d simple_top
-
-    echo "Test copying & renaming dataset"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compound   -d rename
-
-    echo "Test copying empty, 'full' & 'nested' groups"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_empty  -d grp_empty
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_dsets
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_nested -d grp_nested
-
-    echo "Test copying dataset within group in source file to group in destination"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s /grp_dsets/simple  -d /grp_dsets/simple_group
-
-    echo "Test copying & renaming group"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_rename
-
-    echo "Test copying 'full' group hierarchy into group in destination file"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d /grp_rename/grp_dsets
-
-    echo "Test copying objects into group hier. that doesn't exist yet in destination file"
-    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s simple    -d /A/B1/simple
-    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s simple    -d /A/B2/simple2
-    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets/simple    -d /C/D/simple
-    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
-    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
-
-    # Verify that the file created above is correct
-    H5LSTEST $FILEOUT
-
-    # Remove output file created, if the "no cleanup" environment variable is
-    #   not defined
-    if test -z "$HDF5_NOCLEANUP"; then
-        rm -f $FILEOUT
-    fi
-}
-
-# Copy references in various way.
-# adding to the destination file each time compare the result
-#
-# Assumed arguments:
-# <none>
-COPY_REFERENCES() 
-{
-    TESTFILE="$TESTDIR/h5copy_ref.h5"
-    FILEOUT="$TESTDIR/`basename h5copy_ref.h5 .h5`.out.h5"
-
-    # Remove any output file left over from previous test run
-    rm -f $FILEOUT
-
-    echo "Test copying object and region references"
-    TOOLTEST -f ref -i $TESTFILE -o $FILEOUT -v -s / -d /COPY
-
-    # Verify that the file created above is correct
-    H5LSTEST $FILEOUT
-
-    # Remove output file created, if the "no cleanup" environment variable is
-    #   not defined
-    if test -z "$HDF5_NOCLEANUP"; then
-        rm -f $FILEOUT
-    fi
-}
-
-# Copy external links.
-# adding to the destination file each time compare the result
-#
-# Assumed arguments:
-# <none>
-COPY_EXT_LINKS() 
-{
-    TESTFILE="$TESTDIR/h5copy_extlinks_src.h5"
-    FILEOUT="$TESTDIR/`basename h5copy_extlinks_src.h5 .h5`.out.h5"
-
-    # Remove any output file left over from previous test run
-    rm -f $FILEOUT
-
-    echo "Test copying external link directly without -f ext"
-    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext/extlink_dset -d /copy1_dset
-
-    echo "Test copying external link directly with -f ext"
-    TOOLTEST -f ext -i $TESTFILE -o $FILEOUT -v -s /group_ext/extlink_dset -d /copy2_dset
-
-    echo "Test copying dangling external link (no obj) directly without -f ext"
-    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext/extlink_notyet1 -d /copy_dangle1_1
-
-    echo "Test copying dangling external link (no obj) directly with -f ext"
-    TOOLTEST -f ext -i $TESTFILE -o $FILEOUT -v -s /group_ext/extlink_notyet1 -d /copy_dangle1_2
-
-    echo "Test copying dangling external link (no file) directly without -f ext"
-    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext/extlink_notyet2 -d /copy_dangle2_1
-
-    echo "Test copying dangling external link (no file) directly with -f ext"
-    TOOLTEST -f ext -i $TESTFILE -o $FILEOUT -v -s /group_ext/extlink_notyet2 -d /copy_dangle2_2
-
-    echo "Test copying a group contains external links without -f ext"
-    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext -d /copy1_group
-
-    echo "Test copying a group contains external links with -f ext"
-    TOOLTEST -f ext -v -i $TESTFILE -o $FILEOUT -s /group_ext -d /copy2_group
-
-    # Verify that the file created above is correct
-    H5LSTEST $FILEOUT
-
-    # Remove output file created, if the "no cleanup" environment variable is
-    #   not defined
-    if test -z "$HDF5_NOCLEANUP"; then
-        rm -f $FILEOUT
-    fi
-}
-
-# Test misc.
-#
-# Assumed arguments:
-# <none>
-TEST_MISC() 
-{
-    TESTFILE="$TESTDIR/h5copytst.h5"
-    FILEOUT="$TESTDIR/`basename h5copytst.h5 .h5`.out.h5"
-
-    # Remove any output file left over from previous test run
-    rm -f $FILEOUT
-
-    echo "Test copying object into group which doesn't exist, without -p"
-    TOOLTEST_FAIL h5copy_misc1.out -v -i $TESTFILE -o $FILEOUT -s /simple  -d /g1/g2/simple
-
-    echo "Test copying objects to the same file "
-    rm -f $FILEOUT
-    # create temporary test file ($FILEOUT) with some objects
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s /simple -d /simple 
-    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s /grp_dsets  -d /grp_dsets
-    # actual test cases
-    TOOLTEST -i $FILEOUT -o $FILEOUT -v -s /simple -d /simple_cp
-    TOOLTEST -i $FILEOUT -o $FILEOUT -v -s /grp_dsets  -d /grp_dsets_cp
-
-    # Remove output file created, if the "no cleanup" environment variable is
-    #   not defined
-    if test -z "$HDF5_NOCLEANUP"; then
-        rm -f $FILEOUT
-    fi
-}
-
-##############################################################################
-###           T H E   T E S T S                                            ###
-##############################################################################
-# prepare for test
-COPY_TESTFILES_TO_TESTDIR
-
-# Start tests
-COPY_OBJECTS 
-COPY_REFERENCES
-COPY_EXT_LINKS
-TEST_MISC
-
-
-if test $nerrors -eq 0 ; then
-    echo "All $TESTNAME tests passed."
-    exit $EXIT_SUCCESS
-else
-    echo "$TESTNAME tests failed with $nerrors errors."
-    exit $EXIT_FAILURE
-fi
diff --git a/tools/h5copy/testh5copy.sh.in b/tools/h5copy/testh5copy.sh.in
new file mode 100644
index 0000000..c7acd9a
--- /dev/null
+++ b/tools/h5copy/testh5copy.sh.in
@@ -0,0 +1,557 @@
+#! /bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5.  The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html.  COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page.  It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+# access to either file, you may request a copy from help at hdfgroup.org.
+#
+# Tests for the h5copy tool
+#
+# Pedro Vicente Nunes (pvn at hdfgroup.org), Albert Cheng (acheng at hdfgroup.org)
+# Thursday, July 20, 2006
+#
+
+srcdir=@srcdir@
+
+# source dirs
+SRC_TOOLS="$srcdir/.."
+SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+# testfiles source dirs for tools
+SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
+SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
+SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
+SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
+SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
+SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
+
+TESTNAME=h5copy
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+######################################################################
+# test files
+# --------------------------------------------------------------------
+# All the test files copy from source directory to test directory
+# NOTE: Keep this framework to add/remove test files.
+#       Any test files from other tools can be used in this framework.
+#       This list are also used for checking exist.
+#       Comment '#' without space can be used.
+# --------------------------------------------------------------------
+# List of files that will be copied over to local test dir
+LIST_HDF5_TEST_FILES="
+$SRC_H5COPY_TESTFILES/h5copytst.h5
+$SRC_H5COPY_TESTFILES/h5copy_ref.h5
+$SRC_H5COPY_TESTFILES/h5copy_extlinks_src.h5
+$SRC_H5COPY_TESTFILES/h5copy_extlinks_trg.h5
+"
+
+# List of expect files that will be copied over to local test dir
+LIST_OTHER_TEST_FILES="
+$SRC_H5COPY_TESTFILES/h5copy_extlinks_src.out.ls
+$SRC_H5COPY_TESTFILES/h5copy_ref.out.ls
+$SRC_H5COPY_TESTFILES/h5copytst.out.ls
+$SRC_H5COPY_TESTFILES/h5copy_misc1.out
+"
+
+H5COPY=h5copy               # The tool name
+H5COPY_BIN=`pwd`/$H5COPY    # The path of the tool binary
+H5DIFF=h5diff               # The h5diff tool name 
+H5DIFF_BIN=`pwd`/../h5diff/$H5DIFF    # The path of the h5diff tool binary
+H5LS=h5ls                   # The h5ls tool name 
+H5LS_ARGS=-Svr              # Arguments to the h5ls tool
+H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary
+CMP='cmp -s'
+DIFF='diff -c'
+CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
+
+nerrors=0
+verbose=yes
+h5haveexitcode=yes	    # default is yes
+
+TESTDIR=./testfiles
+test -d $TESTDIR || mkdir $TESTDIR
+
+# RUNSERIAL is used. Check if it can return exit code from executalbe correctly.
+if [ -n "$RUNSERIAL_NOEXITCODE" ]; then
+    echo "***Warning*** Serial Exit Code is not passed back to shell corretly."
+    echo "***Warning*** Exit code checking is skipped."
+    h5haveexitcode=no
+fi
+
+#
+# copy test files and expected output files from source dirs to test dir
+#
+COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES"
+
+COPY_TESTFILES_TO_TESTDIR()
+{
+    # copy test files. Used -f to make sure get a new copy
+    for tstfile in $COPY_TESTFILES
+    do
+        # ignore '#' comment
+        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
+        RET=$?
+        if [ $RET -eq 1 ]; then
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
+            fi
+        fi
+    done
+}
+
+
+# Print a "SKIP" message
+SKIP() {
+	 TESTING $H5COPY $@
+	  echo  " -SKIP-"
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+TESTING() 
+{
+    SPACES="                                                               "
+    echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012'
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+VERIFY() 
+{
+    SPACES="                                                               "
+    echo "Verifying h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+VERIFY_H5LS() 
+{
+    SPACES="                                                               "
+    echo "Verifying h5ls file structure $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+VERIFY_OUTPUT() 
+{
+    SPACES="                                                               "
+    echo "Verifying output files $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Source in the output filter function definitions.
+. $srcdir/../../bin/output_filter.sh
+
+# Run a test and print PASS or *FAIL*. If h5copy can complete
+# with exit status 0, consider it pass. If a test fails then increment
+# the `nerrors' global variable.
+# Assumed arguments:
+# $1 is -i
+# $2 is input file
+# $3 is -o
+# $4 is output file
+# $* everything else arguments for h5copy.
+
+TOOLTEST() 
+{
+    actualout="$TESTDIR/tooltest.actualout"
+    actualerr="$TESTDIR/tooltest.actualerr"
+     runh5diff=yes
+     if [ "$1" = -i ]; then
+      inputfile=$2
+     else
+      runh5diff=no
+     fi
+     if [ "$3" = -o ]; then
+      outputfile=$4
+     else 
+      runh5diff=no
+     fi
+  
+    TESTING $H5COPY $@
+    (
+    echo "#############################"
+    echo " output for '$H5COPY $@'"
+    echo "#############################"
+    $RUNSERIAL $H5COPY_BIN $@
+    ) > $actualout 2> $actualerr
+    RET=$?
+    if [ $RET != 0 ]; then
+        echo "*FAILED*"
+        echo "failed result is:"
+        cat $actualout
+        nerrors="`expr $nerrors + 1`"
+    else
+        echo " PASSED"
+
+        # Clean up output file
+        if test -z "$HDF5_NOCLEANUP"; then
+           rm -f $actualout $actualerr
+        fi
+    fi
+    
+    if [ $runh5diff != no ]; then
+     H5DIFFTEST $inputfile $outputfile $7 $9
+    fi
+}
+
+
+# Compare the two text files
+# PASS if same
+# FAIL if different, and show the diff
+#
+# Assumed arguments:
+# $1 is text file1 (expected output)
+# $2 is text file2 (actual output)
+CMP_OUTPUT()
+{
+    expect=$1
+    actual=$2
+
+    VERIFY_OUTPUT $@
+    if [ ! -f $expect ]; then
+        # Create the expect file if it doesn't yet exist.
+        echo " CREATED"
+        cp $actual $expect
+    elif $CMP $expect $actual; then
+        echo " PASSED"
+    else
+        echo "*FAILED*"
+        echo "    Expected output differs from actual output"
+        nerrors="`expr $nerrors + 1`"
+        test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
+}
+
+TOOLTEST_FAIL() 
+{
+    expectout="$TESTDIR/$1"
+    actualout="$TESTDIR/$1.actualout"
+    actualerr="$TESTDIR/$1.actualerr"
+    actualout_sav=${actualout}-sav
+    actualerr_sav=${actualerr}-sav
+    shift
+    if [ "$1" = -i ]; then
+      inputfile=$2
+    fi
+    if [ "$3" = -o ]; then
+      outputfile=$4
+    fi
+
+    TESTING $H5COPY $@
+    (
+    #echo "#############################"
+    #echo " output for '$H5COPY $@'"
+    #echo "#############################"
+    $RUNSERIAL $H5COPY_BIN $@
+    ) > $actualout 2> $actualerr
+
+    RET=$?
+    # save actualout and actualerr in case they are needed later.
+    cp $actualout $actualout_sav
+    STDOUT_FILTER $actualout
+    cp $actualerr $actualerr_sav
+    STDERR_FILTER $actualerr
+    if [ $RET != 0 ]; then
+        echo " PASSED"
+        # Verifying output text from h5copy
+        if [ "$expectout" != "SKIP" ]; then
+            # combine stderr to stdout to compare the output at once.
+            # We may seperate stdout and stderr later.
+            cat $actualerr >> $actualout
+            CMP_OUTPUT $expectout $actualout
+        fi
+    else
+        echo "*FAILED*"
+        echo "failed result is:"
+        cat $actualout
+        nerrors="`expr $nerrors + 1`"
+    fi
+   
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+       rm -f $actualout $actualerr $actualout_sav $actualerr_sav
+    fi
+}
+
+
+# Call the h5diff tool
+#
+H5DIFFTEST() 
+{
+    VERIFY  $@
+    $RUNSERIAL $H5DIFF_BIN -q "$@" 
+    RET=$?
+    if [ $RET != 0 ] ; then
+         echo "*FAILED*"
+         nerrors="`expr $nerrors + 1`"
+    else
+         echo " PASSED"
+    fi
+}
+
+# Call the h5diff tool with a call that is expected to fail
+#
+H5DIFFTEST_FAIL() 
+{
+    VERIFY  $@
+    $RUNSERIAL $H5DIFF_BIN -q "$@" 
+    RET=$?
+
+    if [ $h5haveexitcode = 'yes' -a $RET != 1 ] ; then
+         echo "*FAILED*"
+         nerrors="`expr $nerrors + 1`"
+    else
+         echo " PASSED"
+    fi
+}
+
+# Call the h5ls tool to verify the correct output data in the destination file
+#
+H5LSTEST() 
+{
+    expect="$TESTDIR/`basename $1 .h5`.ls"
+    actual="$TESTDIR/`basename $1 .h5`.ls.actualout"
+
+    # Stderr is included in stdout so that the diff can detect
+    # any unexpected output from that stream too.
+    #
+    # Note:  The modification time and storage utilization are masked off
+    #   so that the output is more portable
+    VERIFY_H5LS  $@
+    (
+      $RUNSERIAL $H5LS_BIN $H5LS_ARGS $@
+    ) 2>&1 |sed 's/Modified:.*/Modified:  XXXX-XX-XX XX:XX:XX XXX/' |sed 's/Storage:.*/Storage:   <details removed for portability>/' >$actual
+
+
+   if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+    echo " CREATED"
+    cp $actual $expect
+   elif $CMP $expect $actual; then
+      echo " PASSED"
+   else
+      echo "*FAILED*"
+      echo "    Expected result (*.ls) differs from actual result (*.out)"
+      nerrors="`expr $nerrors + 1`"
+      test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+   fi
+
+   # Clean up output file
+   if test -z "$HDF5_NOCLEANUP"; then
+      rm -f $actual $actual_err
+   fi
+}
+
+# Copy single datasets of various forms from one group to another,
+#       adding object copied to the destination file each time
+#
+# Assumed arguments:
+# <none>
+COPY_OBJECTS() 
+{
+    TESTFILE="$TESTDIR/h5copytst.h5"
+    FILEOUT="$TESTDIR/`basename h5copytst.h5 .h5`.out.h5"
+
+    # Remove any output file left over from previous test run
+    rm -f $FILEOUT
+
+    echo "Testing from `basename $TESTFILE` to `basename $FILEOUT` for the following tests:"
+    echo "Test copying various forms of datasets"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s simple     -d simple
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s chunk      -d chunk
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compact    -d compact
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compound   -d compound
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compressed -d compressed
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s named_vl   -d named_vl
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s nested_vl  -d nested_vl
+
+    echo "Test copying dataset within group in source file to root of destination"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets/simple  -d simple_top
+
+    echo "Test copying & renaming dataset"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s compound   -d rename
+
+    echo "Test copying empty, 'full' & 'nested' groups"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_empty  -d grp_empty
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_dsets
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_nested -d grp_nested
+
+    echo "Test copying dataset within group in source file to group in destination"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s /grp_dsets/simple  -d /grp_dsets/simple_group
+
+    echo "Test copying & renaming group"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d grp_rename
+
+    echo "Test copying 'full' group hierarchy into group in destination file"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s grp_dsets  -d /grp_rename/grp_dsets
+
+    echo "Test copying objects into group hier. that doesn't exist yet in destination file"
+    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s simple    -d /A/B1/simple
+    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s simple    -d /A/B2/simple2
+    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets/simple    -d /C/D/simple
+    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
+    TOOLTEST -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
+
+    # Verify that the file created above is correct
+    H5LSTEST $FILEOUT
+
+    # Remove output file created, if the "no cleanup" environment variable is
+    #   not defined
+    if test -z "$HDF5_NOCLEANUP"; then
+        rm -f $FILEOUT
+    fi
+}
+
+# Copy references in various way.
+# adding to the destination file each time compare the result
+#
+# Assumed arguments:
+# <none>
+COPY_REFERENCES() 
+{
+    TESTFILE="$TESTDIR/h5copy_ref.h5"
+    FILEOUT="$TESTDIR/`basename h5copy_ref.h5 .h5`.out.h5"
+
+    # Remove any output file left over from previous test run
+    rm -f $FILEOUT
+
+    echo "Test copying object and region references"
+    TOOLTEST -f ref -i $TESTFILE -o $FILEOUT -v -s / -d /COPY
+
+    # Verify that the file created above is correct
+    H5LSTEST $FILEOUT
+
+    # Remove output file created, if the "no cleanup" environment variable is
+    #   not defined
+    if test -z "$HDF5_NOCLEANUP"; then
+        rm -f $FILEOUT
+    fi
+}
+
+# Copy external links.
+# adding to the destination file each time compare the result
+#
+# Assumed arguments:
+# <none>
+COPY_EXT_LINKS() 
+{
+    TESTFILE="$TESTDIR/h5copy_extlinks_src.h5"
+    FILEOUT="$TESTDIR/`basename h5copy_extlinks_src.h5 .h5`.out.h5"
+
+    # Remove any output file left over from previous test run
+    rm -f $FILEOUT
+
+    echo "Test copying external link directly without -f ext"
+    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext/extlink_dset -d /copy1_dset
+
+    echo "Test copying external link directly with -f ext"
+    TOOLTEST -f ext -i $TESTFILE -o $FILEOUT -v -s /group_ext/extlink_dset -d /copy2_dset
+
+    echo "Test copying dangling external link (no obj) directly without -f ext"
+    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext/extlink_notyet1 -d /copy_dangle1_1
+
+    echo "Test copying dangling external link (no obj) directly with -f ext"
+    TOOLTEST -f ext -i $TESTFILE -o $FILEOUT -v -s /group_ext/extlink_notyet1 -d /copy_dangle1_2
+
+    echo "Test copying dangling external link (no file) directly without -f ext"
+    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext/extlink_notyet2 -d /copy_dangle2_1
+
+    echo "Test copying dangling external link (no file) directly with -f ext"
+    TOOLTEST -f ext -i $TESTFILE -o $FILEOUT -v -s /group_ext/extlink_notyet2 -d /copy_dangle2_2
+
+    echo "Test copying a group contains external links without -f ext"
+    TOOLTEST -v -i $TESTFILE -o $FILEOUT -s /group_ext -d /copy1_group
+
+    echo "Test copying a group contains external links with -f ext"
+    TOOLTEST -f ext -v -i $TESTFILE -o $FILEOUT -s /group_ext -d /copy2_group
+
+    # Verify that the file created above is correct
+    H5LSTEST $FILEOUT
+
+    # Remove output file created, if the "no cleanup" environment variable is
+    #   not defined
+    if test -z "$HDF5_NOCLEANUP"; then
+        rm -f $FILEOUT
+    fi
+}
+
+# Test misc.
+#
+# Assumed arguments:
+# <none>
+TEST_MISC() 
+{
+    TESTFILE="$TESTDIR/h5copytst.h5"
+    FILEOUT="$TESTDIR/`basename h5copytst.h5 .h5`.out.h5"
+
+    # Remove any output file left over from previous test run
+    rm -f $FILEOUT
+
+    echo "Test copying object into group which doesn't exist, without -p"
+    TOOLTEST_FAIL h5copy_misc1.out -v -i $TESTFILE -o $FILEOUT -s /simple  -d /g1/g2/simple
+
+    echo "Test copying objects to the same file "
+    rm -f $FILEOUT
+    # create temporary test file ($FILEOUT) with some objects
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s /simple -d /simple 
+    TOOLTEST -i $TESTFILE -o $FILEOUT -v -s /grp_dsets  -d /grp_dsets
+    # actual test cases
+    TOOLTEST -i $FILEOUT -o $FILEOUT -v -s /simple -d /simple_cp
+    TOOLTEST -i $FILEOUT -o $FILEOUT -v -s /grp_dsets  -d /grp_dsets_cp
+
+    # Remove output file created, if the "no cleanup" environment variable is
+    #   not defined
+    if test -z "$HDF5_NOCLEANUP"; then
+        rm -f $FILEOUT
+    fi
+}
+
+##############################################################################
+###           T H E   T E S T S                                            ###
+##############################################################################
+# prepare for test
+COPY_TESTFILES_TO_TESTDIR
+
+# Start tests
+COPY_OBJECTS 
+COPY_REFERENCES
+COPY_EXT_LINKS
+TEST_MISC
+
+
+if test $nerrors -eq 0 ; then
+    echo "All $TESTNAME tests passed."
+    exit $EXIT_SUCCESS
+else
+    echo "$TESTNAME tests failed with $nerrors errors."
+    exit $EXIT_FAILURE
+fi
diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt
index da2aaf9..994a6f2 100644
--- a/tools/h5diff/CMakeLists.txt
+++ b/tools/h5diff/CMakeLists.txt
@@ -51,299 +51,279 @@ IF (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the test directory into the source directory
   # --------------------------------------------------------------------
-  SET (HDF5_REFERENCE_FILES
-      h5diff_10.txt
-      h5diff_100.txt
-      #h5diff_101.txt
-      #h5diff_102.txt
-      #h5diff_103.txt
-      #h5diff_104.txt
-      h5diff_11.txt
-      h5diff_12.txt
-      h5diff_13.txt
-      h5diff_14.txt
-      h5diff_15.txt
-      h5diff_16_1.txt
-      h5diff_16_2.txt
-      h5diff_16_3.txt
-      h5diff_17.txt
-      h5diff_171.txt
-      h5diff_172.txt
-      h5diff_18_1.txt
-      h5diff_18.txt
-      h5diff_20.txt
-      h5diff_200.txt
-      h5diff_201.txt
-      h5diff_202.txt
-      h5diff_203.txt
-      h5diff_204.txt
-      h5diff_205.txt
-      h5diff_206.txt
-      h5diff_207.txt
-      h5diff_208.txt
-      h5diff_220.txt
-      h5diff_221.txt
-      h5diff_222.txt
-      h5diff_223.txt
-      h5diff_224.txt
-      h5diff_21.txt
-      h5diff_22.txt
-      h5diff_23.txt
-      h5diff_24.txt
-      h5diff_25.txt
-      h5diff_26.txt
-      h5diff_27.txt
-      h5diff_28.txt
-      h5diff_300.txt
-      h5diff_400.txt
-      h5diff_401.txt
-      h5diff_402.txt
-      h5diff_403.txt
-      h5diff_404.txt
-      h5diff_405.txt
-      h5diff_406.txt
-      h5diff_407.txt
-      h5diff_408.txt
-      h5diff_409.txt
-      h5diff_410.txt
-      h5diff_411.txt
-      h5diff_412.txt
-      h5diff_413.txt
-      h5diff_414.txt
-      h5diff_415.txt
-      h5diff_416.txt
-      h5diff_417.txt
-      h5diff_418.txt
-      h5diff_419.txt
-      h5diff_420.txt
-      h5diff_421.txt
-      h5diff_422.txt
-      h5diff_423.txt
-      h5diff_424.txt
-      h5diff_425.txt
-      h5diff_450.txt
-      h5diff_451.txt
-      h5diff_452.txt
-      h5diff_453.txt
-      h5diff_454.txt
-      h5diff_455.txt
-      h5diff_456.txt
-      h5diff_457.txt
-      h5diff_458.txt
-      h5diff_459.txt
-      h5diff_465.txt
-      h5diff_466.txt
-      h5diff_467.txt
-      h5diff_468.txt
-      h5diff_469.txt
-      h5diff_480.txt
-      h5diff_481.txt
-      h5diff_482.txt
-      h5diff_483.txt
-      h5diff_484.txt
-      h5diff_485.txt
-      h5diff_486.txt
-      h5diff_487.txt
-      h5diff_50.txt
-      h5diff_51.txt
-      h5diff_52.txt
-      h5diff_53.txt
-      h5diff_54.txt
-      h5diff_55.txt
-      h5diff_56.txt
-      h5diff_57.txt
-      h5diff_58.txt
-      h5diff_500.txt
-      h5diff_501.txt
-      h5diff_502.txt
-      h5diff_503.txt
-      h5diff_504.txt
-      h5diff_505.txt
-      h5diff_506.txt
-      h5diff_507.txt
-      h5diff_508.txt
-      h5diff_509.txt
-      h5diff_510.txt
-      h5diff_511.txt
-      h5diff_512.txt
-      h5diff_513.txt
-      h5diff_514.txt
-      h5diff_515.txt
-      h5diff_516.txt
-      h5diff_517.txt
-      h5diff_518.txt
-      h5diff_530.txt
-      h5diff_540.txt
-      h5diff_600.txt
-      h5diff_601.txt
-      h5diff_603.txt
-      h5diff_604.txt
-      h5diff_605.txt
-      h5diff_606.txt
-      h5diff_607.txt
-      h5diff_608.txt
-      h5diff_609.txt
-      h5diff_610.txt
-      h5diff_612.txt
-      h5diff_613.txt
-      h5diff_614.txt
-      h5diff_615.txt
-      h5diff_616.txt
-      h5diff_617.txt
-      h5diff_618.txt
-      h5diff_619.txt
-      h5diff_621.txt
-      h5diff_622.txt
-      h5diff_623.txt
-      h5diff_624.txt
-      h5diff_625.txt
-      h5diff_626.txt
-      h5diff_627.txt
-      h5diff_628.txt
-      h5diff_629.txt
-      h5diff_630.txt
-      h5diff_631.txt
-      h5diff_640.txt
-      h5diff_641.txt
-      h5diff_642.txt
-      h5diff_643.txt
-      h5diff_644.txt
-      h5diff_645.txt
-      h5diff_646.txt
-      h5diff_70.txt
-      h5diff_700.txt
-      h5diff_701.txt
-      h5diff_702.txt
-      h5diff_703.txt
-      h5diff_704.txt
-      h5diff_705.txt
-      h5diff_706.txt
-      h5diff_707.txt
-      h5diff_708.txt
-      h5diff_709.txt
-      h5diff_710.txt
-      h5diff_80.txt
-      h5diff_90.txt
-  )
-  SET (HDF5_REFERENCE_TEST_FILES
-      h5diff_basic1.h5
-      h5diff_basic2.h5
-      h5diff_types.h5
-      h5diff_dtypes.h5
-      h5diff_attr1.h5
-      h5diff_attr2.h5
-      h5diff_dset1.h5
-      h5diff_dset2.h5
-      h5diff_hyper1.h5
-      h5diff_hyper2.h5
-      h5diff_empty.h5
-      h5diff_links.h5
-      h5diff_softlinks.h5
-      h5diff_linked_softlink.h5
-      h5diff_extlink_src.h5
-      h5diff_extlink_trg.h5
-      h5diff_ext2softlink_src.h5
-      h5diff_ext2softlink_trg.h5
-      h5diff_dset_zero_dim_size1.h5
-      h5diff_dset_zero_dim_size2.h5
-      h5diff_danglelinks1.h5
-      h5diff_danglelinks2.h5
-      h5diff_grp_recurse1.h5
-      h5diff_grp_recurse2.h5
-      h5diff_grp_recurse_ext1.h5
-      h5diff_grp_recurse_ext2-1.h5
-      h5diff_grp_recurse_ext2-2.h5
-      h5diff_grp_recurse_ext2-3.h5
-      h5diff_exclude1-1.h5
-      h5diff_exclude1-2.h5
-      h5diff_exclude2-1.h5
-      h5diff_exclude2-2.h5
-      h5diff_exclude3-1.h5
-      h5diff_exclude3-2.h5
-      h5diff_comp_vl_strs.h5
-      h5diff_attr_v_level1.h5
-      h5diff_attr_v_level2.h5
-      compounds_array_vlen1.h5
-      compounds_array_vlen2.h5
-      non_comparables1.h5
-      non_comparables2.h5
+  SET (LIST_HDF5_TEST_FILES
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_basic1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_basic2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_types.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dtypes.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_hyper1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_hyper2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_empty.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_links.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_softlinks.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_linked_softlink.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_extlink_src.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_extlink_trg.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_ext2softlink_src.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_ext2softlink_trg.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset_zero_dim_size1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset_zero_dim_size2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_danglelinks1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_danglelinks2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-3.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude1-1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude1-2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude2-1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude2-2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_comp_vl_strs.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5
   )
 
-  FOREACH (txt_file ${HDF5_REFERENCE_FILES})
-    SET (txtdest "${PROJECT_BINARY_DIR}/${txt_file}")
-    #MESSAGE (STATUS " Copying ${txt_file}")
-    ADD_CUSTOM_COMMAND (
-        TARGET     h5diff
-        POST_BUILD
-        COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/${txt_file} ${txtdest}
-    )
-  ENDFOREACH (txt_file ${HDF5_REFERENCE_FILES})
+  SET (LIST_OTHER_TEST_FILES
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_10.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_100.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_101.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_102.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_103.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_104.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_11.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_12.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_13.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_14.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_15.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_1.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_2.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_3.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_17.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_171.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_172.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_18_1.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_18.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_20.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_200.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_201.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_202.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_203.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_204.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_205.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_206.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_207.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_208.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_220.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_221.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_222.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_223.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_224.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_21.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_22.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_23.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_24.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_25.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_26.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_27.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_28.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_300.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_400.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_401.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_402.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_403.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_404.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_405.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_406.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_407.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_408.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_409.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_410.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_411.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_412.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_413.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_414.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_415.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_416.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_417.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_418.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_419.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_420.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_421.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_422.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_423.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_424.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_425.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_450.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_451.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_452.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_453.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_454.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_455.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_456.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_457.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_458.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_459.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_465.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_466.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_467.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_468.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_469.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_471.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_472.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_473.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_474.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_475.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_480.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_481.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_482.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_483.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_484.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_485.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_486.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_487.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_50.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_51.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_52.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_53.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_54.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_55.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_56.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_57.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_58.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_59.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_500.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_501.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_502.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_503.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_504.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_505.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_506.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_507.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_508.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_509.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_510.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_511.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_512.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_513.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_514.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_515.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_516.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_517.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_518.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_530.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_540.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_600.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_601.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_603.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_604.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_605.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_606.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_607.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_608.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_609.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_610.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_612.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_613.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_614.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_615.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_616.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_617.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_618.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_619.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_621.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_622.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_623.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_624.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_625.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_626.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_627.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_628.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_629.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_630.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_631.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_640.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_641.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_642.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_643.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_644.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_645.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_646.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_70.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_700.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_701.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_702.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_703.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_704.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_705.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_706.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_707.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_708.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_709.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_710.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_80.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_90.txt
+  )
 
-  FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
-    ADD_CUSTOM_COMMAND (
-        TARGET     h5diff
-        POST_BUILD
-        COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/${h5_file} ${dest}
-    )
-  ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  # Make testfiles dir under build dir
+  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
-  IF (WIN32 AND NOT CYGWIN)
+  #
+  # copy test files from source to build dir
+  #
+  FOREACH (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+    GET_FILENAME_COMPONENT(fname "${h5_tstfiles}" NAME)
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${fname}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5diff
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_101w.txt ${PROJECT_BINARY_DIR}/h5diff_101.txt
+        ARGS       -E copy_if_different ${h5_tstfiles} ${dest}
     )
+  ENDFOREACH (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
 
-    ADD_CUSTOM_COMMAND (
-        TARGET     h5diff
-        POST_BUILD
-        COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_102w.txt ${PROJECT_BINARY_DIR}/h5diff_102.txt
-    )
-    ADD_CUSTOM_COMMAND (
-        TARGET     h5diff
-        POST_BUILD
-        COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_103w.txt ${PROJECT_BINARY_DIR}/h5diff_103.txt
-    )
 
+  #
+  # Overwrite system dependent files (Windows)
+  #
+  IF (WIN32 AND NOT CYGWIN)
     ADD_CUSTOM_COMMAND (
         TARGET     h5diff
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_104w.txt ${PROJECT_BINARY_DIR}/h5diff_104.txt
-    )
-  ELSE (WIN32 AND NOT CYGWIN)
-    ADD_CUSTOM_COMMAND (
-        TARGET     h5diff
-        POST_BUILD
-        COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_101.txt ${PROJECT_BINARY_DIR}/h5diff_101.txt
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_101w.txt ${PROJECT_BINARY_DIR}/testfiles/h5diff_101.txt
     )
 
     ADD_CUSTOM_COMMAND (
         TARGET     h5diff
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_102.txt ${PROJECT_BINARY_DIR}/h5diff_102.txt
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_102w.txt ${PROJECT_BINARY_DIR}/testfiles/h5diff_102.txt
     )
     ADD_CUSTOM_COMMAND (
         TARGET     h5diff
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_103.txt ${PROJECT_BINARY_DIR}/h5diff_103.txt
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_103w.txt ${PROJECT_BINARY_DIR}/testfiles/h5diff_103.txt
     )
 
     ADD_CUSTOM_COMMAND (
         TARGET     h5diff
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_104.txt ${PROJECT_BINARY_DIR}/h5diff_104.txt
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_104w.txt ${PROJECT_BINARY_DIR}/testfiles/h5diff_104.txt
     )
   ENDIF (WIN32 AND NOT CYGWIN)
   
@@ -357,6 +337,7 @@ IF (BUILD_TESTING)
     # If using memchecker add tests without using scripts
     IF (HDF5_ENABLE_USING_MEMCHECKER)
       ADD_TEST (NAME H5DIFF-${resultfile} COMMAND $<TARGET_FILE:h5diff> ${ARGN})
+      SET_TESTS_PROPERTIES (H5DIFF-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       IF (NOT ${resultcode} STREQUAL "0")
         SET_TESTS_PROPERTIES (H5DIFF-${resultfile} PROPERTIES WILL_FAIL "true")
       ENDIF (NOT ${resultcode} STREQUAL "0")
@@ -368,14 +349,14 @@ IF (BUILD_TESTING)
       ADD_TEST (
           NAME H5DIFF-clear-${resultfile}-objects
           COMMAND    ${CMAKE_COMMAND}
-              -E remove ${resultfile}.out ${resultfile}.out.err
+              -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err
       )
       ADD_TEST (
           NAME H5DIFF-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
               -D "TEST_ARGS:STRING=${ARGN}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_OUTPUT=${resultfile}.out"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_REFERENCE=${resultfile}.txt"
@@ -393,6 +374,7 @@ IF (BUILD_TESTING)
     # If using memchecker add tests without using scripts
     IF (HDF5_ENABLE_USING_MEMCHECKER)
       ADD_TEST (NAME PH5DIFF-${resultfile} COMMAND $<TARGET_FILE:ph5diff> ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} ${ARGN})
+      SET_TESTS_PROPERTIES (PH5DIFF-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       IF (NOT ${resultcode} STREQUAL "0")
         SET_TESTS_PROPERTIES (PH5DIFF-${resultfile} PROPERTIES WILL_FAIL "true")
       ENDIF (NOT ${resultcode} STREQUAL "0")
@@ -404,14 +386,14 @@ IF (BUILD_TESTING)
       ADD_TEST (
           NAME PH5DIFF-clear-${resultfile}-objects
           COMMAND    ${CMAKE_COMMAND}
-              -E remove ${resultfile}_p.out ${resultfile}_p.out.err
+              -E remove ./testfiles/${resultfile}_p.out ./testfiles/${resultfile}_p.out.err
       )
       ADD_TEST (
           NAME PH5DIFF-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=${MPIEXEC};${MPIEXEC_PREFLAGS};${MPIEXEC_NUMPROC_FLAG};${MPIEXEC_MAX_NUMPROCS};${MPIEXEC_POSTFLAGS};$<TARGET_FILE:ph5diff>"
               -D "TEST_ARGS:STRING=${ARGN}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_OUTPUT=P_${resultfile}.out"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_REFERENCE=${resultfile}.txt"
@@ -433,7 +415,7 @@ IF (BUILD_TESTING)
       ADD_TEST (
           NAME H5DIFF-clear-${testname}-objects
           COMMAND    ${CMAKE_COMMAND}
-              -E remove ${testname}.out ${testname}.out.err
+              -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err
       )
       # if there was a previous test
       IF (NOT "${last_test}" STREQUAL "")
@@ -683,6 +665,16 @@ IF (BUILD_TESTING)
           h5diff_468.out.err
           h5diff_469.out
           h5diff_469.out.err
+          h5diff_471.out
+          h5diff_471.out.err
+          h5diff_472.out
+          h5diff_472.out.err
+          h5diff_473.out
+          h5diff_473.out.err
+          h5diff_474.out
+          h5diff_474.out.err
+          h5diff_475.out
+          h5diff_475.out.err
           h5diff_480.out
           h5diff_480.out.err
           h5diff_481.out
@@ -711,6 +703,8 @@ IF (BUILD_TESTING)
           h5diff_57.out.err
           h5diff_58.out
           h5diff_58.out.err
+          h5diff_59.out
+          h5diff_59.out.err
           h5diff_500.out
           h5diff_500.out.err
           h5diff_501.out
@@ -850,6 +844,7 @@ IF (BUILD_TESTING)
           h5diff_90.out
           h5diff_90.out.err
     )
+    SET_TESTS_PROPERTIES (H5DIFF-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
     IF (NOT "${last_test}" STREQUAL "")
       SET_TESTS_PROPERTIES (H5DIFF-clearall-objects PROPERTIES DEPENDS ${last_test})
     ENDIF (NOT "${last_test}" STREQUAL "")
@@ -968,6 +963,10 @@ ADD_H5_TEST (h5diff_57 0 -v ${FILE4} ${FILE4} dset7a dset7b)
 # 5.8 (region reference)
 ADD_H5_TEST (h5diff_58 1 -v ${FILE7} ${FILE8} refreg)
 
+# test for both dset and attr with same type but with different size 
+# ( HDDFV-7942 )
+ADD_H5_TEST (h5diff_59 0 -v ${FILE4} ${FILE4} dset11a dset11b)
+
 # ##############################################################################
 # # Error messages
 # ##############################################################################
@@ -1309,6 +1308,18 @@ ADD_H5_TEST (h5diff_468 0 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_dan
 # ext link vs. ext dangling
 ADD_H5_TEST (h5diff_469 1 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2)
 
+#---------------------------------------------------
+# dangling links without follow symlink 
+# (HDFFV-7998)
+# test - soft dangle links (same and different paths), 
+#      - external dangle links (same and different paths)
+ADD_H5_TEST (h5diff_471 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5)
+ADD_H5_TEST (h5diff_472 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1)
+ADD_H5_TEST (h5diff_473 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link4)
+ADD_H5_TEST (h5diff_474 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4)
+ADD_H5_TEST (h5diff_475 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link1)
+
+
 # ##############################################################################
 # # test for group diff recursivly
 # ##############################################################################
@@ -1424,21 +1435,27 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5diff
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
 
 IF (H5_HAVE_PARALLEL)
+
+  #INSTALL_PROGRAM_PDB (ph5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
   INSTALL (
       TARGETS
           ph5diff
       RUNTIME DESTINATION
-          ${HDF5_INSTALL_BIN_DIR}/tools
+          ${HDF5_INSTALL_BIN_DIR}
       COMPONENT
           toolsapplications
   )
diff --git a/tools/h5diff/Makefile.am b/tools/h5diff/Makefile.am
index 0b8816f..190c083 100644
--- a/tools/h5diff/Makefile.am
+++ b/tools/h5diff/Makefile.am
@@ -27,7 +27,7 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 # is enabled.
 if BUILD_PARALLEL_CONDITIONAL
   H5PDIFF=ph5diff
-  TEST_SCRIPT_PARA=$(srcdir)/testph5diff.sh
+  TEST_SCRIPT_PARA=testph5diff.sh
 endif
 
 # Our main target, h5diff
@@ -38,7 +38,7 @@ h5diff_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
 
 # Test programs and scripts
 TEST_PROG=h5diffgentest
-TEST_SCRIPT=$(srcdir)/testh5diff.sh
+TEST_SCRIPT=testh5diff.sh
 
 check_PROGRAMS=$(TEST_PROG)
 check_SCRIPTS=$(TEST_SCRIPT) $(TEST_SCRIPT_PARA)
diff --git a/tools/h5diff/Makefile.in b/tools/h5diff/Makefile.in
index 25884b2..4676341 100644
--- a/tools/h5diff/Makefile.in
+++ b/tools/h5diff/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,19 +68,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/testh5diff.sh.in $(srcdir)/testph5diff.sh.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 bin_PROGRAMS = h5diff$(EXEEXT) $(am__EXEEXT_1)
 check_PROGRAMS = $(am__EXEEXT_2)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_2) $(TEST_SCRIPT)
 subdir = tools/h5diff
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = testh5diff.sh testph5diff.sh
 CONFIG_CLEAN_VPATH_FILES =
 @BUILD_PARALLEL_CONDITIONAL_TRUE at am__EXEEXT_1 = ph5diff$(EXEEXT)
 am__installdirs = "$(DESTDIR)$(bindir)"
@@ -74,9 +92,10 @@ am_h5diff_OBJECTS = h5diff_main.$(OBJEXT) h5diff_common.$(OBJEXT)
 h5diff_OBJECTS = $(am_h5diff_OBJECTS)
 h5diff_LDADD = $(LDADD)
 h5diff_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5diff_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5diff_LDFLAGS) $(LDFLAGS) -o $@
@@ -88,6 +107,18 @@ am_ph5diff_OBJECTS = ph5diff_main.$(OBJEXT) h5diff_common.$(OBJEXT)
 ph5diff_OBJECTS = $(am_ph5diff_OBJECTS)
 ph5diff_LDADD = $(LDADD)
 ph5diff_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -98,32 +129,35 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(h5diff_SOURCES) $(h5diffgentest_SOURCES) \
 	$(ph5diff_SOURCES)
 DIST_SOURCES = $(h5diff_SOURCES) $(h5diffgentest_SOURCES) \
 	$(ph5diff_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -141,12 +175,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -415,14 +446,14 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 # Always build and test h5diff but build and test ph5diff only if parallel
 # is enabled.
 @BUILD_PARALLEL_CONDITIONAL_TRUE at H5PDIFF = ph5diff
- at BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_SCRIPT_PARA = $(srcdir)/testph5diff.sh
+ at BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_SCRIPT_PARA = testph5diff.sh
 
 # Add h5diff specific linker flags here
 h5diff_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
 
 # Test programs and scripts
 TEST_PROG = h5diffgentest
-TEST_SCRIPT = $(srcdir)/testh5diff.sh
+TEST_SCRIPT = testh5diff.sh
 check_SCRIPTS = $(TEST_SCRIPT) $(TEST_SCRIPT_PARA)
 # The parallel test script testph5diff.sh actually depends on testh5diff.sh.
 SCRIPT_DEPEND = h5diff$(EXEEXT) $(H5PDIFF) $(srcdir)/testh5diff.sh
@@ -446,6 +477,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -475,6 +510,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -484,10 +520,17 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+testh5diff.sh: $(top_builddir)/config.status $(srcdir)/testh5diff.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+testph5diff.sh: $(top_builddir)/config.status $(srcdir)/testph5diff.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -536,13 +579,13 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5diff$(EXEEXT): $(h5diff_OBJECTS) $(h5diff_DEPENDENCIES) 
+h5diff$(EXEEXT): $(h5diff_OBJECTS) $(h5diff_DEPENDENCIES) $(EXTRA_h5diff_DEPENDENCIES) 
 	@rm -f h5diff$(EXEEXT)
 	$(AM_V_CCLD)$(h5diff_LINK) $(h5diff_OBJECTS) $(h5diff_LDADD) $(LIBS)
-h5diffgentest$(EXEEXT): $(h5diffgentest_OBJECTS) $(h5diffgentest_DEPENDENCIES) 
+h5diffgentest$(EXEEXT): $(h5diffgentest_OBJECTS) $(h5diffgentest_DEPENDENCIES) $(EXTRA_h5diffgentest_DEPENDENCIES) 
 	@rm -f h5diffgentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5diffgentest_OBJECTS) $(h5diffgentest_LDADD) $(LIBS)
-ph5diff$(EXEEXT): $(ph5diff_OBJECTS) $(ph5diff_DEPENDENCIES) 
+ph5diff$(EXEEXT): $(ph5diff_OBJECTS) $(ph5diff_DEPENDENCIES) $(EXTRA_ph5diff_DEPENDENCIES) 
 	@rm -f ph5diff$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ph5diff_OBJECTS) $(ph5diff_LDADD) $(LIBS)
 
@@ -560,26 +603,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -636,6 +676,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -688,10 +742,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -778,7 +837,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -807,7 +866,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -833,7 +892,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -857,7 +916,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -867,7 +926,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -957,7 +1016,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -987,7 +1046,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5diff/h5diffgentest.c b/tools/h5diff/h5diffgentest.c
index 0b8b4cf..7c69154 100644
--- a/tools/h5diff/h5diffgentest.c
+++ b/tools/h5diff/h5diffgentest.c
@@ -759,6 +759,7 @@ int test_datatypes(const char *fname)
 {
 
     hid_t   fid1;
+    hid_t   dset;
     hsize_t dims[2]={3,2};
     herr_t  status;
     char    buf1a[3][2] = {{1,1},{1,1},{1,1}};
@@ -790,6 +791,9 @@ int test_datatypes(const char *fname)
     unsigned int    buf10a[3][2] = {{UIMAX,1},{1,1},{1,1}};
     unsigned int    buf10b[3][2] = {{UIMAX-1,1},{3,4},{5,6}};
 
+    unsigned short     buf11a[3][2] = {{204,205},{2,3},{1,1}};
+    unsigned int     buf11b[3][2] = {{204,205},{2,3},{1,1}};
+
 
     /*-------------------------------------------------------------------------
     * Create a file
@@ -880,6 +884,19 @@ int test_datatypes(const char *fname)
     write_dset(fid1,2,dims,"dset10a",H5T_NATIVE_UINT,buf10a);
     write_dset(fid1,2,dims,"dset10b",H5T_NATIVE_UINT,buf10b);
 
+    /*-------------------------------------------------------------------------
+    * Same type class, different size
+    *-------------------------------------------------------------------------
+    */
+    write_dset(fid1,2,dims,"dset11a",H5T_STD_U16LE,buf11a);
+    dset=H5Dopen2 (fid1, "dset11a", H5P_DEFAULT);
+    write_attr(dset,2,dims,"attr",H5T_STD_U16LE,buf11a);
+    H5Dclose (dset);
+
+    write_dset(fid1,2,dims,"dset11b",H5T_STD_U32LE,buf11b);
+    dset=H5Dopen2 (fid1, "dset11b", H5P_DEFAULT);
+    write_attr(dset,2,dims,"attr",H5T_STD_U32LE,buf11b);
+    H5Dclose (dset);
 
     /*-------------------------------------------------------------------------
     * Close
@@ -2181,6 +2198,14 @@ static int test_dangle_links(const char *fname1, const char *fname2)
         goto out;
     }
 
+    status = H5Lcreate_soft("no_obj1", fid1, "soft_link4", H5P_DEFAULT, H5P_DEFAULT);
+    if (status < 0)
+    {
+        fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1);
+        status = FAIL;
+        goto out;
+    }
+
     /* file 2 */
     status = H5Lcreate_soft("no_obj", fid2, "soft_link1", H5P_DEFAULT, H5P_DEFAULT);
     if (status < 0)
@@ -2206,6 +2231,14 @@ static int test_dangle_links(const char *fname1, const char *fname2)
         goto out;
     }
 
+    status = H5Lcreate_soft("no_obj2", fid2, "soft_link4", H5P_DEFAULT, H5P_DEFAULT);
+    if (status < 0)
+    {
+        fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2);
+        status = FAIL;
+        goto out;
+    }
+
     /*-----------------------------------------------------------------------
     * External Links
     *------------------------------------------------------------------------*/
@@ -2234,7 +2267,7 @@ static int test_dangle_links(const char *fname1, const char *fname2)
         goto out;
     }
 
-    status = H5Lcreate_external("no_file1.h5", "no_obj", fid1, "ext_link4", H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Lcreate_external("no_file.h5", "no_obj", fid1, "ext_link4", H5P_DEFAULT, H5P_DEFAULT);
     if (status < 0)
     {
         fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1);
@@ -2267,7 +2300,7 @@ static int test_dangle_links(const char *fname1, const char *fname2)
         goto out;
     }
 
-    status = H5Lcreate_external("no_file2.h5", "no_obj", fid2, "ext_link4", H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Lcreate_external("no_file.h5", "no_obj", fid2, "ext_link4", H5P_DEFAULT, H5P_DEFAULT);
     if (status < 0)
     {
         fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2);
diff --git a/tools/h5diff/testfiles/h5diff_220.txt b/tools/h5diff/testfiles/h5diff_220.txt
index cadbb6d..0092fc1 100644
--- a/tools/h5diff/testfiles/h5diff_220.txt
+++ b/tools/h5diff/testfiles/h5diff_220.txt
@@ -1,8 +1,6 @@
 Not comparable: </g1/dset1> is of class H5T_INTEGER and </g1/dset1> is of class H5T_STRING
 attribute: <attr of </g1/dset1>> and <attr of </g1/dset1>>
 3 differences found
-dataset: </g1/dset1> and </g1/dset1>
-3 differences found
 dataset: </g1/dset2> and </g1/dset2>
 3 differences found
 EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_221.txt b/tools/h5diff/testfiles/h5diff_221.txt
index 621f5c3..5f10860 100644
--- a/tools/h5diff/testfiles/h5diff_221.txt
+++ b/tools/h5diff/testfiles/h5diff_221.txt
@@ -1,3 +1,5 @@
+dataset: </g2/dset1> and </g2/dset1>
+3 differences found
 Not comparable: <attr1> is of class H5T_INTEGER and <attr1> is of class H5T_STRING
 Not comparable: <attr2> has rank 1, dimensions [3], max dimensions [3]
 and <attr2> has rank 1, dimensions [4], max dimensions [4]
@@ -5,8 +7,6 @@ Not comparable: <attr3> has rank 1, dimensions [3], max dimensions [3]
 and <attr3> has rank 2, dimensions [3x1], max dimensions [3x1]
 attribute: <attr4 of </g2/dset1>> and <attr4 of </g2/dset1>>
 3 differences found
-dataset: </g2/dset1> and </g2/dset1>
-6 differences found
 dataset: </g2/dset2> and </g2/dset2>
 3 differences found
 EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_222.txt b/tools/h5diff/testfiles/h5diff_222.txt
index 53c9464..77447da 100644
--- a/tools/h5diff/testfiles/h5diff_222.txt
+++ b/tools/h5diff/testfiles/h5diff_222.txt
@@ -4,10 +4,10 @@ Not comparable: </diffobjtypes/obj3> is of type H5G_TYPE and </diffobjtypes/obj3
 Not comparable: </g1/dset1> is of class H5T_INTEGER and </g1/dset1> is of class H5T_STRING
 attribute: <attr of </g1/dset1>> and <attr of </g1/dset1>>
 3 differences found
-dataset: </g1/dset1> and </g1/dset1>
-3 differences found
 dataset: </g1/dset2> and </g1/dset2>
 3 differences found
+dataset: </g2/dset1> and </g2/dset1>
+3 differences found
 Not comparable: <attr1> is of class H5T_INTEGER and <attr1> is of class H5T_STRING
 Not comparable: <attr2> has rank 1, dimensions [3], max dimensions [3]
 and <attr2> has rank 1, dimensions [4], max dimensions [4]
@@ -15,8 +15,6 @@ Not comparable: <attr3> has rank 1, dimensions [3], max dimensions [3]
 and <attr3> has rank 2, dimensions [3x1], max dimensions [3x1]
 attribute: <attr4 of </g2/dset1>> and <attr4 of </g2/dset1>>
 3 differences found
-dataset: </g2/dset1> and </g2/dset1>
-6 differences found
 dataset: </g2/dset2> and </g2/dset2>
 3 differences found
 EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_450.txt b/tools/h5diff/testfiles/h5diff_450.txt
index bf4f6e9..a63d78f 100644
--- a/tools/h5diff/testfiles/h5diff_450.txt
+++ b/tools/h5diff/testfiles/h5diff_450.txt
@@ -11,6 +11,7 @@ file1     file2
     x      x    /soft_link1    
     x      x    /soft_link2    
     x      x    /soft_link3    
+    x      x    /soft_link4    
 
 group  : </> and </>
 0 differences found
@@ -32,4 +33,6 @@ obj2 </soft_link2> is a dangling link.
 1 differences found
 obj1 </soft_link3> is a dangling link.
 1 differences found
+dangling link: </soft_link4> and </soft_link4>
+0 differences found
 EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_451.txt b/tools/h5diff/testfiles/h5diff_451.txt
index 0d30023..fd0691f 100644
--- a/tools/h5diff/testfiles/h5diff_451.txt
+++ b/tools/h5diff/testfiles/h5diff_451.txt
@@ -11,6 +11,7 @@ file1     file2
     x      x    /soft_link1    
     x      x    /soft_link2    
     x      x    /soft_link3    
+    x      x    /soft_link4    
 
 group  : </> and </>
 0 differences found
@@ -25,4 +26,5 @@ Warning: </ext_link4> is a dangling link.
 Warning: </soft_link1> is a dangling link.
 Warning: </soft_link2> is a dangling link.
 Warning: </soft_link3> is a dangling link.
+Warning: </soft_link4> is a dangling link.
 EXIT CODE: 2
diff --git a/tools/h5diff/testfiles/h5diff_471.txt b/tools/h5diff/testfiles/h5diff_471.txt
new file mode 100644
index 0000000..124cdd7
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_471.txt
@@ -0,0 +1,38 @@
+
+file1     file2
+---------------------------------------
+    x      x    /              
+    x      x    /dset1         
+    x      x    /dset2         
+    x      x    /ext_link1     
+    x      x    /ext_link2     
+    x      x    /ext_link3     
+    x      x    /ext_link4     
+    x      x    /soft_link1    
+    x      x    /soft_link2    
+    x      x    /soft_link3    
+    x      x    /soft_link4    
+
+group  : </> and </>
+0 differences found
+dataset: </dset1> and </dset1>
+0 differences found
+dataset: </dset2> and </dset2>
+0 differences found
+external link: </ext_link1> and </ext_link1>
+1 differences found
+external link: </ext_link2> and </ext_link2>
+1 differences found
+external link: </ext_link3> and </ext_link3>
+1 differences found
+external link: </ext_link4> and </ext_link4>
+0 differences found
+link   : </soft_link1> and </soft_link1>
+0 differences found
+link   : </soft_link2> and </soft_link2>
+1 differences found
+link   : </soft_link3> and </soft_link3>
+1 differences found
+link   : </soft_link4> and </soft_link4>
+1 differences found
+EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_472.txt b/tools/h5diff/testfiles/h5diff_472.txt
new file mode 100644
index 0000000..57a8af4
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_472.txt
@@ -0,0 +1,3 @@
+link   : </soft_link1> and </soft_link1>
+0 differences found
+EXIT CODE: 0
diff --git a/tools/h5diff/testfiles/h5diff_473.txt b/tools/h5diff/testfiles/h5diff_473.txt
new file mode 100644
index 0000000..4c1855d
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_473.txt
@@ -0,0 +1,3 @@
+link   : </soft_link4> and </soft_link4>
+1 differences found
+EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_474.txt b/tools/h5diff/testfiles/h5diff_474.txt
new file mode 100644
index 0000000..7807551
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_474.txt
@@ -0,0 +1,3 @@
+external link: </ext_link4> and </ext_link4>
+0 differences found
+EXIT CODE: 0
diff --git a/tools/h5diff/testfiles/h5diff_475.txt b/tools/h5diff/testfiles/h5diff_475.txt
new file mode 100644
index 0000000..be6110e
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_475.txt
@@ -0,0 +1,3 @@
+external link: </ext_link1> and </ext_link1>
+1 differences found
+EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_59.txt b/tools/h5diff/testfiles/h5diff_59.txt
new file mode 100644
index 0000000..996a7b2
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_59.txt
@@ -0,0 +1,11 @@
+dataset: </dset11a> and </dset11b>
+Warning: different storage datatype
+</dset11a> has file datatype H5T_STD_U16LE
+</dset11b> has file datatype H5T_STD_U32LE
+0 differences found
+Warning: different storage datatype
+<attr> has file datatype H5T_STD_U16LE
+<attr> has file datatype H5T_STD_U32LE
+attribute: <attr of </dset11a>> and <attr of </dset11b>>
+0 differences found
+EXIT CODE: 0
diff --git a/tools/h5diff/testfiles/h5diff_70.txt b/tools/h5diff/testfiles/h5diff_70.txt
index 47b057c..0a6b0c0 100644
--- a/tools/h5diff/testfiles/h5diff_70.txt
+++ b/tools/h5diff/testfiles/h5diff_70.txt
@@ -678,6 +678,7 @@ position        vlen3D of </>   vlen3D of </>   difference
 59 differences found
 dataset: </dset> and </dset>
 Not comparable: </dset> or </dset> is an empty dataset
+0 differences found
 attribute: <VLstring of </dset>> and <VLstring of </dset>>
 size:           [2]           [2]
 position        VLstring of </dset> VLstring of </dset> difference          
@@ -1353,7 +1354,6 @@ position        vlen3D of </dset> vlen3D of </dset> difference
 [ 3 2 1 ]          58              0               58             
 [ 3 2 1 ]          59              0               59             
 59 differences found
-519 differences found
 group  : </g1> and </g1>
 0 differences found
 attribute: <VLstring of </g1>> and <VLstring of </g1>>
diff --git a/tools/h5diff/testfiles/h5diff_700.txt b/tools/h5diff/testfiles/h5diff_700.txt
index 00c5b07..1cf71dd 100644
--- a/tools/h5diff/testfiles/h5diff_700.txt
+++ b/tools/h5diff/testfiles/h5diff_700.txt
@@ -681,6 +681,7 @@ position        vlen3D of </>   vlen3D of </>   difference
 
 dataset: </dset> and </dset>
 Not comparable: </dset> or </dset> is an empty dataset
+0 differences found
 Attributes status:  33 common, 0 only in obj1, 0 only in obj2
 attribute: <VLstring of </dset>> and <VLstring of </dset>>
 size:           [2]           [2]
@@ -1357,7 +1358,6 @@ position        vlen3D of </dset> vlen3D of </dset> difference
 [ 3 2 1 ]          58              0               58             
 [ 3 2 1 ]          59              0               59             
 59 differences found
-519 differences found
 
 group  : </g1> and </g1>
 0 differences found
diff --git a/tools/h5diff/testfiles/h5diff_701.txt b/tools/h5diff/testfiles/h5diff_701.txt
index a4b436f..405ab2f 100644
--- a/tools/h5diff/testfiles/h5diff_701.txt
+++ b/tools/h5diff/testfiles/h5diff_701.txt
@@ -713,6 +713,7 @@ position        vlen3D of </>   vlen3D of </>   difference
 
 dataset: </dset> and </dset>
 Not comparable: </dset> or </dset> is an empty dataset
+0 differences found
    obj1   obj2
  --------------------------------------
     x      x    VLstring       
@@ -1424,7 +1425,6 @@ position        vlen3D of </dset> vlen3D of </dset> difference
 [ 3 2 1 ]          58              0               58             
 [ 3 2 1 ]          59              0               59             
 59 differences found
-519 differences found
 
 group  : </g1> and </g1>
 0 differences found
diff --git a/tools/h5diff/testfiles/h5diff_702.txt b/tools/h5diff/testfiles/h5diff_702.txt
index 00c5b07..1cf71dd 100644
--- a/tools/h5diff/testfiles/h5diff_702.txt
+++ b/tools/h5diff/testfiles/h5diff_702.txt
@@ -681,6 +681,7 @@ position        vlen3D of </>   vlen3D of </>   difference
 
 dataset: </dset> and </dset>
 Not comparable: </dset> or </dset> is an empty dataset
+0 differences found
 Attributes status:  33 common, 0 only in obj1, 0 only in obj2
 attribute: <VLstring of </dset>> and <VLstring of </dset>>
 size:           [2]           [2]
@@ -1357,7 +1358,6 @@ position        vlen3D of </dset> vlen3D of </dset> difference
 [ 3 2 1 ]          58              0               58             
 [ 3 2 1 ]          59              0               59             
 59 differences found
-519 differences found
 
 group  : </g1> and </g1>
 0 differences found
diff --git a/tools/h5diff/testfiles/h5diff_703.txt b/tools/h5diff/testfiles/h5diff_703.txt
index a4b436f..405ab2f 100644
--- a/tools/h5diff/testfiles/h5diff_703.txt
+++ b/tools/h5diff/testfiles/h5diff_703.txt
@@ -713,6 +713,7 @@ position        vlen3D of </>   vlen3D of </>   difference
 
 dataset: </dset> and </dset>
 Not comparable: </dset> or </dset> is an empty dataset
+0 differences found
    obj1   obj2
  --------------------------------------
     x      x    VLstring       
@@ -1424,7 +1425,6 @@ position        vlen3D of </dset> vlen3D of </dset> difference
 [ 3 2 1 ]          58              0               58             
 [ 3 2 1 ]          59              0               59             
 59 differences found
-519 differences found
 
 group  : </g1> and </g1>
 0 differences found
diff --git a/tools/h5diff/testfiles/h5diff_705.txt b/tools/h5diff/testfiles/h5diff_705.txt
index 1609189..2e52f18 100644
--- a/tools/h5diff/testfiles/h5diff_705.txt
+++ b/tools/h5diff/testfiles/h5diff_705.txt
@@ -1,5 +1,6 @@
 
 dataset: </dset> and </dset>
+0 differences found
    obj1   obj2
  --------------------------------------
     x           float2         
@@ -13,5 +14,4 @@ position        integer1 of </dset> integer1 of </dset> difference
 [ 0 ]          1               2               1              
 [ 1 ]          2               3               1              
 2 differences found
-2 differences found
 EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_710.txt b/tools/h5diff/testfiles/h5diff_710.txt
index 862c062..10a8501 100644
--- a/tools/h5diff/testfiles/h5diff_710.txt
+++ b/tools/h5diff/testfiles/h5diff_710.txt
@@ -17,6 +17,7 @@ group  : </> and </>
 Attributes status:  0 common, 0 only in obj1, 0 only in obj2
 
 dataset: </dset> and </dset>
+0 differences found
    obj1   obj2
  --------------------------------------
     x           float2         
@@ -30,7 +31,6 @@ position        integer1 of </dset> integer1 of </dset> difference
 [ 0 ]          1               2               1              
 [ 1 ]          2               3               1              
 2 differences found
-2 differences found
 
 group  : </g> and </g>
 0 differences found
diff --git a/tools/h5diff/testfiles/h5diff_danglelinks1.h5 b/tools/h5diff/testfiles/h5diff_danglelinks1.h5
index 8cbaac1..b8be9bc 100644
Binary files a/tools/h5diff/testfiles/h5diff_danglelinks1.h5 and b/tools/h5diff/testfiles/h5diff_danglelinks1.h5 differ
diff --git a/tools/h5diff/testfiles/h5diff_danglelinks2.h5 b/tools/h5diff/testfiles/h5diff_danglelinks2.h5
index f634210..3c3907c 100644
Binary files a/tools/h5diff/testfiles/h5diff_danglelinks2.h5 and b/tools/h5diff/testfiles/h5diff_danglelinks2.h5 differ
diff --git a/tools/h5diff/testfiles/h5diff_dtypes.h5 b/tools/h5diff/testfiles/h5diff_dtypes.h5
index 1629664..ffa5264 100644
Binary files a/tools/h5diff/testfiles/h5diff_dtypes.h5 and b/tools/h5diff/testfiles/h5diff_dtypes.h5 differ
diff --git a/tools/h5diff/testh5diff.sh b/tools/h5diff/testh5diff.sh
deleted file mode 100755
index 6a902a2..0000000
--- a/tools/h5diff/testh5diff.sh
+++ /dev/null
@@ -1,1087 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5.  The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html.  COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page.  It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
-# access to either file, you may request a copy from help at hdfgroup.org.
-#
-# Tests for the h5diff tool
-#
-# Modification:
-#   Albert Cheng, 2005/08/17
-#   Added the SKIP feature.
-#   Albert Cheng, 2005/2/3
-#   Added -p option for parallel h5diff tests.
-#   Pedro Vicente Nunes:
-#    10/25/2005: Added test #9
-#    11/27/2006: Added test #10, #11
-#   Jonathan Kim:
-#    Improved to use single line
-#    Improved to check exit code (only serial mode, not necessary for parallel)
-#    Added test 400 - 425  (links with --follow-symlinks option)
-#    Added test 450 - 459  (dangling links)
-
-
-
-TESTNAME=h5diff
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-H5DIFF=h5diff               # The tool name
-H5DIFF_BIN=`pwd`/$H5DIFF    # The path of the tool binary
-
-CMP='cmp -s'
-DIFF='diff -c'
-CP='cp'
-
-nerrors=0
-verbose=yes
-h5haveexitcode=yes	    # default is yes
-pmode=			    # default to run h5diff tests
-mydomainname=`domainname 2>/dev/null`
-
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
-# source dirs
-SRC_TOOLS="$srcdir/.."
-SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
-# testfiles source dirs for tools
-SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
-SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
-SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
-SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
-SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
-SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
-
-TESTDIR=./testfiles
-test -d $TESTDIR || mkdir $TESTDIR
-
-######################################################################
-# test files
-# --------------------------------------------------------------------
-# All the test files copy from source directory to test directory
-# NOTE: Keep this framework to add/remove test files.
-#       Any test files from other tools can be used in this framework.
-#       This list are also used for checking exist.
-#       Comment '#' without space can be used.
-# --------------------------------------------------------------------
-LIST_HDF5_TEST_FILES="
-$SRC_H5DIFF_TESTFILES/h5diff_basic1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_basic2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_types.h5
-$SRC_H5DIFF_TESTFILES/h5diff_dtypes.h5
-$SRC_H5DIFF_TESTFILES/h5diff_attr1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_attr2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_dset1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_dset2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_hyper1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_hyper2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_empty.h5
-$SRC_H5DIFF_TESTFILES/h5diff_links.h5
-$SRC_H5DIFF_TESTFILES/h5diff_softlinks.h5
-$SRC_H5DIFF_TESTFILES/h5diff_linked_softlink.h5
-$SRC_H5DIFF_TESTFILES/h5diff_extlink_src.h5
-$SRC_H5DIFF_TESTFILES/h5diff_extlink_trg.h5
-$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_src.h5
-$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_trg.h5
-$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_danglelinks1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_danglelinks2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-3.h5
-$SRC_H5DIFF_TESTFILES/h5diff_exclude1-1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_exclude1-2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_exclude2-1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_exclude2-2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_exclude3-1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_exclude3-2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_comp_vl_strs.h5
-$SRC_H5DIFF_TESTFILES/compounds_array_vlen1.h5
-$SRC_H5DIFF_TESTFILES/compounds_array_vlen2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level1.h5
-$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level2.h5
-$SRC_H5DIFF_TESTFILES/h5diff_enum_invalid_values.h5
-$SRC_H5DIFF_TESTFILES/non_comparables1.h5
-$SRC_H5DIFF_TESTFILES/non_comparables2.h5
-"
-
-LIST_OTHER_TEST_FILES="
-$SRC_H5DIFF_TESTFILES/h5diff_10.txt
-$SRC_H5DIFF_TESTFILES/h5diff_100.txt
-$SRC_H5DIFF_TESTFILES/h5diff_101.txt
-$SRC_H5DIFF_TESTFILES/h5diff_102.txt
-$SRC_H5DIFF_TESTFILES/h5diff_103.txt
-$SRC_H5DIFF_TESTFILES/h5diff_104.txt
-$SRC_H5DIFF_TESTFILES/h5diff_11.txt
-$SRC_H5DIFF_TESTFILES/h5diff_12.txt
-$SRC_H5DIFF_TESTFILES/h5diff_13.txt
-$SRC_H5DIFF_TESTFILES/h5diff_14.txt
-$SRC_H5DIFF_TESTFILES/h5diff_15.txt
-$SRC_H5DIFF_TESTFILES/h5diff_16_1.txt
-$SRC_H5DIFF_TESTFILES/h5diff_16_2.txt
-$SRC_H5DIFF_TESTFILES/h5diff_16_3.txt
-$SRC_H5DIFF_TESTFILES/h5diff_17.txt
-$SRC_H5DIFF_TESTFILES/h5diff_171.txt
-$SRC_H5DIFF_TESTFILES/h5diff_172.txt
-$SRC_H5DIFF_TESTFILES/h5diff_18_1.txt
-$SRC_H5DIFF_TESTFILES/h5diff_18.txt
-$SRC_H5DIFF_TESTFILES/h5diff_20.txt
-$SRC_H5DIFF_TESTFILES/h5diff_200.txt
-$SRC_H5DIFF_TESTFILES/h5diff_201.txt
-$SRC_H5DIFF_TESTFILES/h5diff_202.txt
-$SRC_H5DIFF_TESTFILES/h5diff_203.txt
-$SRC_H5DIFF_TESTFILES/h5diff_204.txt
-$SRC_H5DIFF_TESTFILES/h5diff_205.txt
-$SRC_H5DIFF_TESTFILES/h5diff_206.txt
-$SRC_H5DIFF_TESTFILES/h5diff_207.txt
-$SRC_H5DIFF_TESTFILES/h5diff_208.txt
-$SRC_H5DIFF_TESTFILES/h5diff_220.txt
-$SRC_H5DIFF_TESTFILES/h5diff_221.txt
-$SRC_H5DIFF_TESTFILES/h5diff_222.txt
-$SRC_H5DIFF_TESTFILES/h5diff_223.txt
-$SRC_H5DIFF_TESTFILES/h5diff_224.txt
-$SRC_H5DIFF_TESTFILES/h5diff_21.txt
-$SRC_H5DIFF_TESTFILES/h5diff_22.txt
-$SRC_H5DIFF_TESTFILES/h5diff_23.txt
-$SRC_H5DIFF_TESTFILES/h5diff_24.txt
-$SRC_H5DIFF_TESTFILES/h5diff_25.txt
-$SRC_H5DIFF_TESTFILES/h5diff_26.txt
-$SRC_H5DIFF_TESTFILES/h5diff_27.txt
-$SRC_H5DIFF_TESTFILES/h5diff_28.txt
-$SRC_H5DIFF_TESTFILES/h5diff_30.txt
-$SRC_H5DIFF_TESTFILES/h5diff_300.txt
-$SRC_H5DIFF_TESTFILES/h5diff_400.txt
-$SRC_H5DIFF_TESTFILES/h5diff_401.txt
-$SRC_H5DIFF_TESTFILES/h5diff_402.txt
-$SRC_H5DIFF_TESTFILES/h5diff_403.txt
-$SRC_H5DIFF_TESTFILES/h5diff_404.txt
-$SRC_H5DIFF_TESTFILES/h5diff_405.txt
-$SRC_H5DIFF_TESTFILES/h5diff_406.txt
-$SRC_H5DIFF_TESTFILES/h5diff_407.txt
-$SRC_H5DIFF_TESTFILES/h5diff_408.txt
-$SRC_H5DIFF_TESTFILES/h5diff_409.txt
-$SRC_H5DIFF_TESTFILES/h5diff_410.txt
-$SRC_H5DIFF_TESTFILES/h5diff_411.txt
-$SRC_H5DIFF_TESTFILES/h5diff_412.txt
-$SRC_H5DIFF_TESTFILES/h5diff_413.txt
-$SRC_H5DIFF_TESTFILES/h5diff_414.txt
-$SRC_H5DIFF_TESTFILES/h5diff_415.txt
-$SRC_H5DIFF_TESTFILES/h5diff_416.txt
-$SRC_H5DIFF_TESTFILES/h5diff_417.txt
-$SRC_H5DIFF_TESTFILES/h5diff_418.txt
-$SRC_H5DIFF_TESTFILES/h5diff_419.txt
-$SRC_H5DIFF_TESTFILES/h5diff_420.txt
-$SRC_H5DIFF_TESTFILES/h5diff_421.txt
-$SRC_H5DIFF_TESTFILES/h5diff_422.txt
-$SRC_H5DIFF_TESTFILES/h5diff_423.txt
-$SRC_H5DIFF_TESTFILES/h5diff_424.txt
-$SRC_H5DIFF_TESTFILES/h5diff_425.txt
-$SRC_H5DIFF_TESTFILES/h5diff_450.txt
-$SRC_H5DIFF_TESTFILES/h5diff_451.txt
-$SRC_H5DIFF_TESTFILES/h5diff_452.txt
-$SRC_H5DIFF_TESTFILES/h5diff_453.txt
-$SRC_H5DIFF_TESTFILES/h5diff_454.txt
-$SRC_H5DIFF_TESTFILES/h5diff_455.txt
-$SRC_H5DIFF_TESTFILES/h5diff_456.txt
-$SRC_H5DIFF_TESTFILES/h5diff_457.txt
-$SRC_H5DIFF_TESTFILES/h5diff_458.txt
-$SRC_H5DIFF_TESTFILES/h5diff_459.txt
-$SRC_H5DIFF_TESTFILES/h5diff_465.txt
-$SRC_H5DIFF_TESTFILES/h5diff_466.txt
-$SRC_H5DIFF_TESTFILES/h5diff_467.txt
-$SRC_H5DIFF_TESTFILES/h5diff_468.txt
-$SRC_H5DIFF_TESTFILES/h5diff_469.txt
-$SRC_H5DIFF_TESTFILES/h5diff_480.txt
-$SRC_H5DIFF_TESTFILES/h5diff_481.txt
-$SRC_H5DIFF_TESTFILES/h5diff_482.txt
-$SRC_H5DIFF_TESTFILES/h5diff_483.txt
-$SRC_H5DIFF_TESTFILES/h5diff_484.txt
-$SRC_H5DIFF_TESTFILES/h5diff_485.txt
-$SRC_H5DIFF_TESTFILES/h5diff_486.txt
-$SRC_H5DIFF_TESTFILES/h5diff_487.txt
-$SRC_H5DIFF_TESTFILES/h5diff_50.txt
-$SRC_H5DIFF_TESTFILES/h5diff_51.txt
-$SRC_H5DIFF_TESTFILES/h5diff_52.txt
-$SRC_H5DIFF_TESTFILES/h5diff_53.txt
-$SRC_H5DIFF_TESTFILES/h5diff_54.txt
-$SRC_H5DIFF_TESTFILES/h5diff_55.txt
-$SRC_H5DIFF_TESTFILES/h5diff_56.txt
-$SRC_H5DIFF_TESTFILES/h5diff_57.txt
-$SRC_H5DIFF_TESTFILES/h5diff_58.txt
-$SRC_H5DIFF_TESTFILES/h5diff_500.txt
-$SRC_H5DIFF_TESTFILES/h5diff_501.txt
-$SRC_H5DIFF_TESTFILES/h5diff_502.txt
-$SRC_H5DIFF_TESTFILES/h5diff_503.txt
-$SRC_H5DIFF_TESTFILES/h5diff_504.txt
-$SRC_H5DIFF_TESTFILES/h5diff_505.txt
-$SRC_H5DIFF_TESTFILES/h5diff_506.txt
-$SRC_H5DIFF_TESTFILES/h5diff_507.txt
-$SRC_H5DIFF_TESTFILES/h5diff_508.txt
-$SRC_H5DIFF_TESTFILES/h5diff_509.txt
-$SRC_H5DIFF_TESTFILES/h5diff_510.txt
-$SRC_H5DIFF_TESTFILES/h5diff_511.txt
-$SRC_H5DIFF_TESTFILES/h5diff_512.txt
-$SRC_H5DIFF_TESTFILES/h5diff_513.txt
-$SRC_H5DIFF_TESTFILES/h5diff_514.txt
-$SRC_H5DIFF_TESTFILES/h5diff_515.txt
-$SRC_H5DIFF_TESTFILES/h5diff_516.txt
-$SRC_H5DIFF_TESTFILES/h5diff_517.txt
-$SRC_H5DIFF_TESTFILES/h5diff_518.txt
-$SRC_H5DIFF_TESTFILES/h5diff_530.txt
-$SRC_H5DIFF_TESTFILES/h5diff_540.txt
-$SRC_H5DIFF_TESTFILES/h5diff_600.txt
-$SRC_H5DIFF_TESTFILES/h5diff_601.txt
-$SRC_H5DIFF_TESTFILES/h5diff_603.txt
-$SRC_H5DIFF_TESTFILES/h5diff_604.txt
-$SRC_H5DIFF_TESTFILES/h5diff_605.txt
-$SRC_H5DIFF_TESTFILES/h5diff_606.txt
-$SRC_H5DIFF_TESTFILES/h5diff_607.txt
-$SRC_H5DIFF_TESTFILES/h5diff_608.txt
-$SRC_H5DIFF_TESTFILES/h5diff_609.txt
-$SRC_H5DIFF_TESTFILES/h5diff_610.txt
-$SRC_H5DIFF_TESTFILES/h5diff_612.txt
-$SRC_H5DIFF_TESTFILES/h5diff_613.txt
-$SRC_H5DIFF_TESTFILES/h5diff_614.txt
-$SRC_H5DIFF_TESTFILES/h5diff_615.txt
-$SRC_H5DIFF_TESTFILES/h5diff_616.txt
-$SRC_H5DIFF_TESTFILES/h5diff_617.txt
-$SRC_H5DIFF_TESTFILES/h5diff_618.txt
-$SRC_H5DIFF_TESTFILES/h5diff_619.txt
-$SRC_H5DIFF_TESTFILES/h5diff_621.txt
-$SRC_H5DIFF_TESTFILES/h5diff_622.txt
-$SRC_H5DIFF_TESTFILES/h5diff_623.txt
-$SRC_H5DIFF_TESTFILES/h5diff_624.txt
-$SRC_H5DIFF_TESTFILES/h5diff_625.txt
-$SRC_H5DIFF_TESTFILES/h5diff_626.txt
-$SRC_H5DIFF_TESTFILES/h5diff_627.txt
-$SRC_H5DIFF_TESTFILES/h5diff_628.txt
-$SRC_H5DIFF_TESTFILES/h5diff_629.txt
-$SRC_H5DIFF_TESTFILES/h5diff_630.txt
-$SRC_H5DIFF_TESTFILES/h5diff_631.txt
-$SRC_H5DIFF_TESTFILES/h5diff_640.txt
-$SRC_H5DIFF_TESTFILES/h5diff_641.txt
-$SRC_H5DIFF_TESTFILES/h5diff_642.txt
-$SRC_H5DIFF_TESTFILES/h5diff_643.txt
-$SRC_H5DIFF_TESTFILES/h5diff_644.txt
-$SRC_H5DIFF_TESTFILES/h5diff_645.txt
-$SRC_H5DIFF_TESTFILES/h5diff_646.txt
-$SRC_H5DIFF_TESTFILES/h5diff_70.txt
-$SRC_H5DIFF_TESTFILES/h5diff_700.txt
-$SRC_H5DIFF_TESTFILES/h5diff_701.txt
-$SRC_H5DIFF_TESTFILES/h5diff_702.txt
-$SRC_H5DIFF_TESTFILES/h5diff_703.txt
-$SRC_H5DIFF_TESTFILES/h5diff_704.txt
-$SRC_H5DIFF_TESTFILES/h5diff_705.txt
-$SRC_H5DIFF_TESTFILES/h5diff_706.txt
-$SRC_H5DIFF_TESTFILES/h5diff_707.txt
-$SRC_H5DIFF_TESTFILES/h5diff_708.txt
-$SRC_H5DIFF_TESTFILES/h5diff_709.txt
-$SRC_H5DIFF_TESTFILES/h5diff_710.txt
-$SRC_H5DIFF_TESTFILES/h5diff_80.txt
-$SRC_H5DIFF_TESTFILES/h5diff_90.txt
-"
-
-#
-# copy test files and expected output files from source dirs to test dir
-#
-COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML"
-
-COPY_TESTFILES_TO_TESTDIR()
-{
-    # copy test files. Used -f to make sure get a new copy
-    for tstfile in $COPY_TESTFILES
-    do
-        # ignore '#' comment
-        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
-        RET=$?
-        if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile ."
-                echo "       $tstfile doesn't exist!"
-                
-                # Comment out this to CREATE expected file
-                exit $EXIT_FAILURE
-            fi
-        fi
-    done
-}
-
-# Parse option
-#   -p   run ph5diff tests
-#   -h   print help page
-while [ $# -gt 0 ]; do
-    case "$1" in
-    -p)	# reset the tool name and bin to run ph5diff tests
-	TESTNAME=ph5diff
-	H5DIFF=ph5diff               # The tool name
-	H5DIFF_BIN=`pwd`/$H5DIFF
-	pmode=yes
-	shift
-	;;
-    -h) # print help page
-	echo "$0 [-p] [-h]"
-	echo "    -p   run ph5diff tests"
-	echo "    -h   print help page"
-	shift
-	exit 0
-	;;
-    *)  # unknown option
-        echo "$0: Unknown option ($1)"
-	exit 1
-	;;
-    esac
-done
-
-# RUNSERIAL is used. Check if it can return exit code from executalbe correctly.
-if [ -n "$RUNSERIAL_NOEXITCODE" ]; then
-    echo "***Warning*** Serial Exit Code is not passed back to shell corretly."
-    echo "***Warning*** Exit code checking is skipped."
-    h5haveexitcode=no
-fi
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-#
-TESTING() {
-   SPACES="                                                               "
-   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Source in the output filter function definitions.
-. $srcdir/../../bin/output_filter.sh
-
-# Run a test and print PASS or *FAIL*.  If a test fails then increment
-# the `nerrors' global variable and (if $verbose is set) display the
-# difference between the actual output and the expected output. The
-# expected output is given as the first argument to this function and
-# the actual output file is calculated by replacing the `.ddl' with
-# `.out'.  The actual output is not removed if $HDF5_NOCLEANUP has a
-# non-zero value.
-#
-# Need eval before the RUNCMD command because some machines like
-# AIX, has RUNPARALLEL in the style as
-#   MP_PROCS=3 MP_TASKS_PER_NODE=3 poe ./a.out
-# that throws the shell script off.
-#
-TOOLTEST() {
-    expect="$TESTDIR/$1"
-    actual="$TESTDIR/`basename $1 .txt`.out"
-    actual_err="$TESTDIR/`basename $1 .txt`.err"
-    actual_sav=${actual}-sav
-    actual_err_sav=${actual_err}-sav
-    shift
-    if test -n "$pmode"; then
-        RUNCMD=$RUNPARALLEL
-    else
-        RUNCMD=$RUNSERIAL
-    fi
-
-    # Run test.
-    TESTING $H5DIFF $@
-    (
-	#echo "#############################"
-	#echo "Expected output for '$H5DIFF $@'" 
-	#echo "#############################"
-	cd $TESTDIR
-	eval $RUNCMD $H5DIFF_BIN "$@"
-    ) >$actual 2>$actual_err
-    EXIT_CODE=$?
-    # save actual and actual_err in case they are needed later.
-    cp $actual $actual_sav
-    STDOUT_FILTER $actual
-    cp $actual_err $actual_err_sav
-    STDERR_FILTER $actual_err
-    cat $actual_err >> $actual
-    # don't add exit code check in pmode, as it causes failure. (exit code 
-    # is from mpirun not tool)
-    # if any problem occurs relate to an exit code, it will be caught in 
-    # serial mode, so the test is fullfilled.
-    if test $h5haveexitcode = 'yes' -a -z "$pmode"; then
-      echo "EXIT CODE: $EXIT_CODE" >> $actual
-    fi
-
-    if [ ! -f $expect ]; then
-        # Create the expect file if it doesn't yet exist.
-        echo " CREATED"
-        cp $actual $expect
-    elif $CMP $expect $actual; then
-        echo " PASSED"
-    elif test $h5haveexitcode = 'yes' -a -z "$pmode"; then
-        echo "*FAILED*"
-        echo "    Expected result ($expect) differs from actual result ($actual)"
-        nerrors="`expr $nerrors + 1`"
-        test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
-    else
-	    # parallel mode output are often of different ordering from serial
-        # output.  If the sorted expected and actual files compare the same,
-        # it is safe to assume the actual output match the expected file.
-        expect_sorted=expect_sorted
-        actual_sorted=actual_sorted
-        sort $expect -o $expect_sorted
-        sort $actual -o $actual_sorted
-        # remove "EXIT CODE:" line from expect file. test for exit code
-        # is done by serial mode.
-        grep -v "EXIT CODE:" $expect_sorted > $expect_sorted.noexit
-        mv $expect_sorted.noexit $expect_sorted
-	if $CMP $expect_sorted $actual_sorted; then
-	    echo " PASSED"
-	else
-	    echo "*FAILED*"
-	    nerrors="`expr $nerrors + 1`"
-	    if test yes = "$verbose"; then
-		echo "====Expected result ($expect_sorted) differs from actual result ($actual_sorted)"
-		$DIFF $expect_sorted $actual_sorted |sed 's/^/    /'
-		echo "====The actual output ($actual_sav)"
-		sed 's/^/    /' < $actual_sav 
-		echo "====The actual stderr ($actual_err_sav)"
-		sed 's/^/    /' < $actual_err_sav 
-		echo "====End of actual stderr ($actual_err_sav)"
-		echo ""
-	    fi
-	fi
-    fi
-
-    # Clean up output file
-    if test -z "$HDF5_NOCLEANUP"; then
-	    rm -f $actual $actual_err $actual_sav $actual_err_sav
-    	rm -f $actual_sorted $expect_sorted
-    fi
-}
-
-
-# Print a "SKIP" message
-SKIP() {
-	 TESTING $H5DIFF $@
-	  echo  " -SKIP-"
-}
-
-
-
-##############################################################################
-# The tests 
-# To avoid the printing of the complete full path of the test file, that hides
-# all the other parameters for long paths, the printing of the command line 
-# is done first in
-# TESTING with the name only of the test file $TOOL, not its full path $TESTFILE
-##############################################################################
-# prepare for test
-COPY_TESTFILES_TO_TESTDIR
-
-# ############################################################################
-# # Common usage
-# ############################################################################
-
-# 1.0
-TOOLTEST h5diff_10.txt -h
-
-# 1.1 normal mode
-TOOLTEST h5diff_11.txt  h5diff_basic1.h5 h5diff_basic2.h5 
-
-# 1.2 normal mode with objects
-TOOLTEST h5diff_12.txt  h5diff_basic1.h5 h5diff_basic2.h5  g1/dset1 g1/dset2
-
-# 1.3 report mode
-TOOLTEST h5diff_13.txt -r h5diff_basic1.h5 h5diff_basic2.h5 
-
-# 1.4 report  mode with objects
-TOOLTEST h5diff_14.txt  -r h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2
-
-# 1.5 with -d
-TOOLTEST h5diff_15.txt --report --delta=5 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 1.6.1 with -p (int)
-TOOLTEST h5diff_16_1.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset5 g1/dset6
-
-# 1.6.2 with -p (unsigned long_long)
-TOOLTEST h5diff_16_2.txt --verbose --relative=0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset7 g1/dset8
-
-# 1.6.3 with -p (double)
-TOOLTEST h5diff_16_3.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset9 g1/dset10
-
-# 1.7 verbose mode
-TOOLTEST h5diff_17.txt -v h5diff_basic1.h5 h5diff_basic2.h5   
-
-# 1.7 test 32-bit INFINITY
-TOOLTEST h5diff_171.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp19 /g1/fp19_COPY
-
-# 1.7 test 64-bit INFINITY
-TOOLTEST h5diff_172.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp20 /g1/fp20_COPY
-
-# 1.8 quiet mode 
-TOOLTEST h5diff_18.txt -q h5diff_basic1.h5 h5diff_basic2.h5 
-
-# 1.8 -v and -q
-TOOLTEST h5diff_18_1.txt -v -q h5diff_basic1.h5 h5diff_basic2.h5
-
-
-# ##############################################################################
-# # not comparable types
-# ##############################################################################
-
-# 2.0
-TOOLTEST h5diff_20.txt -v h5diff_types.h5 h5diff_types.h5  dset g1
-
-# 2.1
-TOOLTEST h5diff_21.txt -v h5diff_types.h5 h5diff_types.h5 dset l1
-
-# 2.2
-TOOLTEST h5diff_22.txt -v  h5diff_types.h5 h5diff_types.h5 dset t1
-
-# ##############################################################################
-# # compare groups, types, links (no differences and differences)
-# ##############################################################################
-
-# 2.3
-TOOLTEST h5diff_23.txt -v h5diff_types.h5 h5diff_types.h5 g1 g1
-
-# 2.4
-TOOLTEST h5diff_24.txt -v h5diff_types.h5 h5diff_types.h5 t1 t1
-
-# 2.5
-TOOLTEST h5diff_25.txt -v h5diff_types.h5 h5diff_types.h5 l1 l1 
-
-# 2.6
-TOOLTEST h5diff_26.txt -v h5diff_types.h5 h5diff_types.h5 g1 g2
-
-# 2.7
-TOOLTEST h5diff_27.txt -v h5diff_types.h5 h5diff_types.h5 t1 t2
-
-# 2.8
-TOOLTEST h5diff_28.txt -v h5diff_types.h5 h5diff_types.h5 l1 l2
-
-
-# ##############################################################################
-# # Enum value tests (may become more comprehensive in the future)
-# ##############################################################################
-
-# 3.0
-# test enum types which may have invalid values
-TOOLTEST h5diff_30.txt -v h5diff_enum_invalid_values.h5 h5diff_enum_invalid_values.h5 dset1 dset2
-
-
-
-
-# ##############################################################################
-# # Dataset datatypes
-# ##############################################################################
-
-# 5.0
-TOOLTEST h5diff_50.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset0a dset0b
-
-# 5.1
-TOOLTEST h5diff_51.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset1a dset1b
-
-# 5.2
-TOOLTEST h5diff_52.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset2a dset2b
-
-# 5.3
-TOOLTEST h5diff_53.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset3a dset4b
-
-# 5.4
-TOOLTEST h5diff_54.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset4a dset4b
-
-# 5.5
-TOOLTEST h5diff_55.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset5a dset5b
-
-# 5.6
-TOOLTEST h5diff_56.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset6a dset6b
-
-# 5.7
-TOOLTEST h5diff_57.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset7a dset7b
-
-# 5.8 (region reference)
-TOOLTEST h5diff_58.txt -v h5diff_dset1.h5 h5diff_dset2.h5 refreg
-
-# ##############################################################################
-# # Error messages
-# ##############################################################################
-
-
-# 6.0: Check if the command line number of arguments is less than 3
-TOOLTEST h5diff_600.txt h5diff_basic1.h5 
-
-# 6.1: Check if non-exist object name is specified 
-TOOLTEST h5diff_601.txt h5diff_basic1.h5 h5diff_basic1.h5 nono_obj
-
-
-# ##############################################################################
-# # -d 
-# ##############################################################################
-
-
-# 6.3: negative value
-TOOLTEST h5diff_603.txt -d -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.4: zero
-TOOLTEST h5diff_604.txt -d 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.5: non number
-TOOLTEST h5diff_605.txt -d u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.6: hexadecimal
-TOOLTEST h5diff_606.txt -d 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.7: string
-TOOLTEST h5diff_607.txt -d "1" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.8: use system epsilon 
-TOOLTEST h5diff_608.txt --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5  g1/dset3 g1/dset4
-
-# 6.9: number larger than biggest difference
-TOOLTEST h5diff_609.txt -d 200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.10: number smaller than smallest difference
-TOOLTEST h5diff_610.txt -d 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-
-# ##############################################################################
-# # -p
-# ##############################################################################
-
-
-# 6.12: negative value
-TOOLTEST h5diff_612.txt -p -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.13: zero
-TOOLTEST h5diff_613.txt -p 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.14: non number
-TOOLTEST h5diff_614.txt -p u h5diff_basic1.h5 h5diff_basic2.h5  g1/dset3 g1/dset4
-
-# 6.15: hexadecimal
-TOOLTEST h5diff_615.txt -p 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.16: string
-TOOLTEST h5diff_616.txt -p "0.21" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.17: repeated option
-TOOLTEST h5diff_617.txt -p 0.21 -p 0.22 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.18: number larger than biggest difference
-TOOLTEST h5diff_618.txt -p 2 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.19: number smaller than smallest difference
-TOOLTEST h5diff_619.txt -p 0.005 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-
-
-# ##############################################################################
-# # -n
-# ##############################################################################
-
-# 6.21: negative value
-TOOLTEST h5diff_621.txt -n -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.22: zero
-TOOLTEST h5diff_622.txt -n 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.23: non number
-TOOLTEST h5diff_623.txt -n u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.24: hexadecimal
-TOOLTEST h5diff_624.txt -n 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.25: string
-TOOLTEST h5diff_625.txt -n "2" h5diff_basic1.h5 h5diff_basic2.h5  g1/dset3 g1/dset4
-
-# 6.26: repeated option
-TOOLTEST h5diff_626.txt -n 2 -n 3 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.27: number larger than biggest difference
-TOOLTEST h5diff_627.txt --count=200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# 6.28: number smaller than smallest difference
-TOOLTEST h5diff_628.txt -n 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
-
-# Disabling this test as it hangs - LRK 20090618
-# 6.29  non valid files
-#TOOLTEST h5diff_629.txt file1.h6 file2.h6
-
-# ##############################################################################
-# # NaN
-# ##############################################################################
-# 6.30: test (NaN == NaN) must be true based on our documentation -- XCAO
-TOOLTEST h5diff_630.txt -v -d "0.0001" h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY
-TOOLTEST h5diff_631.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY
-
-
-# ##############################################################################
-# 7.  attributes
-# ##############################################################################
-TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 
-
-# ##################################################
-#  attrs with verbose option level
-# ##################################################
-
-TOOLTEST h5diff_700.txt -v1 h5diff_attr1.h5 h5diff_attr2.h5 
-TOOLTEST h5diff_701.txt -v2 h5diff_attr1.h5 h5diff_attr2.h5 
-TOOLTEST h5diff_702.txt --verbose=1 h5diff_attr1.h5 h5diff_attr2.h5 
-TOOLTEST h5diff_703.txt --verbose=2 h5diff_attr1.h5 h5diff_attr2.h5 
-
-# same attr number , all same attr name
-TOOLTEST h5diff_704.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g
-
-# same attr number , some same attr name
-TOOLTEST h5diff_705.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /dset
-
-# same attr number , all different attr name
-TOOLTEST h5diff_706.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /ntype
-
-# different attr number , same attr name (intersected)
-TOOLTEST h5diff_707.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g2
-
-# different attr number , all different attr name 
-TOOLTEST h5diff_708.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g3
-
-# when no attributes exist in both objects
-TOOLTEST h5diff_709.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g4
-
-# file vs file
-TOOLTEST h5diff_710.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5
-
-# ##############################################################################
-# 8.  all dataset datatypes
-# ##############################################################################
-TOOLTEST h5diff_80.txt -v h5diff_dset1.h5 h5diff_dset2.h5 
-
-# 9. compare a file with itself
-TOOLTEST h5diff_90.txt -v h5diff_basic2.h5 h5diff_basic2.h5
-
-# 10. read by hyperslab, print indexes
-if test -n "$pmode" -a "$mydomainname" = hdfgroup.uiuc.edu; then
-    # skip this test which sometimes hangs in some THG machines
-    SKIP -v h5diff_hyper1.h5 h5diff_hyper2.h5
-else
-    TOOLTEST h5diff_100.txt -v h5diff_hyper1.h5 h5diff_hyper2.h5 
-fi
-
-# 11. floating point comparison
-# double value
-TOOLTEST h5diff_101.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/d1  g1/d2 
-
-# float value
-TOOLTEST h5diff_102.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 
-
-# with --use-system-epsilon for double value 
-TOOLTEST h5diff_103.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/d1  g1/d2 
-
-# with --use-system-epsilon for float value
-TOOLTEST h5diff_104.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 
-
-
-# not comparable -c flag
-TOOLTEST h5diff_200.txt h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1  g2/dset2 
-
-TOOLTEST h5diff_201.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1  g2/dset2 
-
-TOOLTEST h5diff_202.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset2  g2/dset3
-
-TOOLTEST h5diff_203.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset3  g2/dset4
-
-TOOLTEST h5diff_204.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset4  g2/dset5
-
-TOOLTEST h5diff_205.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset5  g2/dset6
-
-# not comparable in compound
-TOOLTEST h5diff_206.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset7  g2/dset8
-
-TOOLTEST h5diff_207.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset8  g2/dset9
-
-# not comparable in dataspace of zero dimension size
-TOOLTEST h5diff_208.txt -c h5diff_dset_zero_dim_size1.h5 h5diff_dset_zero_dim_size2.h5 
-
-# non-comparable dataset with comparable attribute, and other comparable datasets. 
-# Also test non-compatible attributes with different type, dimention, rank.
-# All the comparables should display differences.
-TOOLTEST h5diff_220.txt -c non_comparables1.h5 non_comparables2.h5 /g1
-
-# comparable dataset with non-comparable attribute and other comparable attributes.
-# All the comparables should display differences.
-TOOLTEST h5diff_221.txt -c non_comparables1.h5 non_comparables2.h5 /g2
-
-# entire file
-# All the comparables should display differences.
-if test -n "$pmode"; then
-    # parallel mode: 
-    # skip due to ph5diff hangs on koala (linux64-LE) and ember intermittently.
-    # (HDFFV-8003 - TBD)
-    SKIP -c non_comparables1.h5 non_comparables2.h5
-else
-    TOOLTEST h5diff_222.txt -c non_comparables1.h5 non_comparables2.h5
-fi    
-
-# non-comparable test for common objects (same name) with different object types
-# (HDFFV-7644)
-TOOLTEST h5diff_223.txt -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes
-# swap files
-TOOLTEST h5diff_224.txt -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes
-    
-# ##############################################################################
-# # Links compare without --follow-symlinks nor --no-dangling-links
-# ##############################################################################
-# test for bug1749
-TOOLTEST h5diff_300.txt -v h5diff_links.h5 h5diff_links.h5 /link_g1 /link_g2
-
-# ##############################################################################
-# # Links compare with --follow-symlinks Only
-# ##############################################################################
-# soft links file to file
-TOOLTEST h5diff_400.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5
-
-# softlink vs dset"
-TOOLTEST h5diff_401.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /target_dset2
-
-# dset vs softlink"
-TOOLTEST h5diff_402.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /target_dset2 /softlink_dset1_1
-
-# softlink vs softlink"
-TOOLTEST h5diff_403.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /softlink_dset2
-
-# extlink vs extlink (FILE)"
-TOOLTEST h5diff_404.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5
-
-# extlink vs dset"
-TOOLTEST h5diff_405.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_trg.h5 /ext_link_dset1 /target_group2/x_dset
-
-# dset vs extlink"
-TOOLTEST h5diff_406.txt --follow-symlinks -v h5diff_extlink_trg.h5 h5diff_extlink_src.h5 /target_group2/x_dset /ext_link_dset1
-
-# extlink vs extlink"
-TOOLTEST h5diff_407.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_dset2
-
-# softlink vs extlink"
-TOOLTEST h5diff_408.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_extlink_src.h5 /softlink_dset1_1 /ext_link_dset2
-
-# extlink vs softlink "
-TOOLTEST h5diff_409.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_softlinks.h5 /ext_link_dset2 /softlink_dset1_1
-
-# linked_softlink vs linked_softlink (FILE)"
-TOOLTEST h5diff_410.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5
-
-# dset2 vs linked_softlink_dset1"
-TOOLTEST h5diff_411.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_dset2 /softlink1_to_slink2
-
-# linked_softlink_dset1 vs dset2"
-TOOLTEST h5diff_412.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /target_dset2
-
-# linked_softlink_to_dset1 vs linked_softlink_to_dset2"
-TOOLTEST h5diff_413.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /softlink2_to_slink2
-
-# group vs linked_softlink_group1"
-TOOLTEST h5diff_414.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_group /softlink3_to_slink2
-
-# linked_softlink_group1 vs group"
-TOOLTEST h5diff_415.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /target_group
-
-# linked_softlink_to_group1 vs linked_softlink_to_group2"
-TOOLTEST h5diff_416.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /softlink4_to_slink2
-
-# non-exist-softlink vs softlink"
-TOOLTEST h5diff_417.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_dset2
-
-# softlink vs non-exist-softlink"
-TOOLTEST h5diff_418.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist
-
-# non-exist-extlink_file vs extlink"
-TOOLTEST h5diff_419.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist2 /ext_link_dset2
-
-# exlink vs non-exist-extlink_file"
-TOOLTEST h5diff_420.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist2
-
-# extlink vs non-exist-extlink_obj"
-TOOLTEST h5diff_421.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist1
-
-# non-exist-extlink_obj vs extlink"
-TOOLTEST h5diff_422.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_dset2
-
-# extlink_to_softlink_to_dset1 vs dset2"
-TOOLTEST h5diff_423.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_trg.h5 /ext_link_to_slink1 /dset2
-
-# dset2 vs extlink_to_softlink_to_dset1"
-TOOLTEST h5diff_424.txt --follow-symlinks -v h5diff_ext2softlink_trg.h5 h5diff_ext2softlink_src.h5 /dset2 /ext_link_to_slink1
-
-# extlink_to_softlink_to_dset1 vs extlink_to_softlink_to_dset2"
-TOOLTEST h5diff_425.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_src.h5 /ext_link_to_slink1 /ext_link_to_slink2
-
-
-# ##############################################################################
-# # Dangling links compare (--follow-symlinks and --no-dangling-links)
-# ##############################################################################
-# dangling links --follow-symlinks (FILE to FILE)
-TOOLTEST h5diff_450.txt  --follow-symlinks -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5
-
-# dangling links --follow-symlinks and --no-dangling-links (FILE to FILE)
-TOOLTEST h5diff_451.txt  --follow-symlinks -v --no-dangling-links  h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 
-
-# try --no-dangling-links without --follow-symlinks options
-TOOLTEST h5diff_452.txt  --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5
-
-# dangling link found for soft links (FILE to FILE)
-TOOLTEST h5diff_453.txt  --follow-symlinks -v --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5  
-
-# dangling link found for soft links (obj to obj)
-TOOLTEST h5diff_454.txt  --follow-symlinks -v --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist 
-
-# dangling link found for soft links (obj to obj) Both dangle links
-TOOLTEST h5diff_455.txt  --follow-symlinks -v --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_noexist 
-
-# dangling link found for ext links (FILE to FILE)
-TOOLTEST h5diff_456.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 
-
-# dangling link found for ext links (obj to obj). target file exist
-TOOLTEST h5diff_457.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist1 
-
-# dangling link found for ext links (obj to obj). target file NOT exist
-TOOLTEST h5diff_458.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist2  
-
-# dangling link found for ext links (obj to obj). Both dangle links
-TOOLTEST h5diff_459.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_noexist2
-
-# dangling link --follow-symlinks (obj vs obj)
-# (HDFFV-7836)
-TOOLTEST h5diff_465.txt --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1
-# (HDFFV-7835)
-# soft dangling vs. soft dangling
-TOOLTEST h5diff_466.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1
-# soft link  vs. soft dangling
-TOOLTEST h5diff_467.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2
-# ext dangling vs. ext dangling
-TOOLTEST h5diff_468.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 
-# ext link vs. ext dangling
-TOOLTEST h5diff_469.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2
-
-# ##############################################################################
-# # test for group diff recursivly
-# ##############################################################################
-# root 
-TOOLTEST h5diff_500.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /
-TOOLTEST h5diff_501.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /
-
-# root vs group
-TOOLTEST h5diff_502.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /grp1/grp2/grp3
-
-# group vs group (same name and structure)
-TOOLTEST h5diff_503.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /grp1
-
-# group vs group (different name and structure)
-TOOLTEST h5diff_504.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /grp1/grp2/grp3
-
-# groups vs soft-link
-TOOLTEST h5diff_505.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /slink_grp1
-TOOLTEST h5diff_506.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /slink_grp2
-
-# groups vs ext-link
-TOOLTEST h5diff_507.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1
-TOOLTEST h5diff_508.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1
-
-# soft-link vs ext-link
-TOOLTEST h5diff_509.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1
-TOOLTEST h5diff_510.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1
-
-# circled ext links
-TOOLTEST h5diff_511.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11
-TOOLTEST h5diff_512.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11
-
-# circled soft2ext-link vs soft2ext-link
-TOOLTEST h5diff_513.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11
-TOOLTEST h5diff_514.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11
-
-###############################################################################
-# Test for group recursive diff via multi-linked external links 
-# With follow-symlinks, file h5diff_grp_recurse_ext1.h5 and h5diff_grp_recurse_ext2-1.h5 should
-# be same with the external links.
-###############################################################################
-# file vs file
-TOOLTEST h5diff_515.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5
-TOOLTEST h5diff_516.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5
-# group vs group
-TOOLTEST h5diff_517.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1
-TOOLTEST h5diff_518.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1
-
-# ##############################################################################
-# # Exclude objects (--exclude-path)
-# ##############################################################################
-#
-# Same structure, same names and different value.
-#
-# Exclude the object with different value. Expect return - same
-TOOLTEST h5diff_480.txt -v --exclude-path /group1/dset3 h5diff_exclude1-1.h5 h5diff_exclude1-2.h5
-# Verify different by not excluding. Expect return - diff
-TOOLTEST h5diff_481.txt -v h5diff_exclude1-1.h5 h5diff_exclude1-2.h5
-
-#
-# Different structure, different names. 
-#
-# Exclude all the different objects. Expect return - same
-TOOLTEST h5diff_482.txt -v --exclude-path "/group1" --exclude-path "/dset1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5
-# Exclude only some different objects. Expect return - diff
-TOOLTEST h5diff_483.txt -v --exclude-path "/group1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5
-
-# Exclude from group compare
-TOOLTEST h5diff_484.txt -v --exclude-path "/dset3" h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 /group1
-
-#
-# Only one file contains unique objs. Common objs are same.
-# (HDFFV-7837)
-#
-TOOLTEST h5diff_485.txt -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5
-TOOLTEST h5diff_486.txt -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5
-TOOLTEST h5diff_487.txt -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5
-
-
-# ##############################################################################
-# # diff various multiple vlen and fixed strings in a compound type dataset
-# ##############################################################################
-TOOLTEST h5diff_530.txt -v  h5diff_comp_vl_strs.h5 h5diff_comp_vl_strs.h5 /group /group_copy
-
-# ##############################################################################
-# # Test container types (array,vlen) with multiple nested compound types
-# # Complex compound types in dataset and attribute
-# ##############################################################################
-TOOLTEST h5diff_540.txt -v compounds_array_vlen1.h5 compounds_array_vlen2.h5
-
-# ##############################################################################
-# # Test mutually exclusive options 
-# ##############################################################################
-# Test with -d , -p and --use-system-epsilon. 
-TOOLTEST h5diff_640.txt -v -d 5 -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-TOOLTEST h5diff_641.txt -v -d 5 -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-TOOLTEST h5diff_642.txt -v -p 0.05 -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-TOOLTEST h5diff_643.txt -v -d 5 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-TOOLTEST h5diff_644.txt -v --use-system-epsilon -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-TOOLTEST h5diff_645.txt -v -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-TOOLTEST h5diff_646.txt -v --use-system-epsilon -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
-
-
-# ##############################################################################
-# # END
-# ##############################################################################
-
-if test $nerrors -eq 0 ; then
-    echo "All $TESTNAME tests passed."
-    exit $EXIT_SUCCESS
-else
-    echo "$TESTNAME tests failed with $nerrors errors."
-    exit $EXIT_FAILURE
-fi
diff --git a/tools/h5diff/testh5diff.sh.in b/tools/h5diff/testh5diff.sh.in
new file mode 100755
index 0000000..3455287
--- /dev/null
+++ b/tools/h5diff/testh5diff.sh.in
@@ -0,0 +1,1105 @@
+#! /bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5.  The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html.  COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page.  It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+# access to either file, you may request a copy from help at hdfgroup.org.
+#
+# Tests for the h5diff tool
+#
+# Modification:
+#   Albert Cheng, 2005/08/17
+#   Added the SKIP feature.
+#   Albert Cheng, 2005/2/3
+#   Added -p option for parallel h5diff tests.
+#   Pedro Vicente Nunes:
+#    10/25/2005: Added test #9
+#    11/27/2006: Added test #10, #11
+#   Jonathan Kim:
+#    Improved to use single line
+#    Improved to check exit code (only serial mode, not necessary for parallel)
+#    Added test 400 - 425  (links with --follow-symlinks option)
+#    Added test 450 - 459  (dangling links)
+
+srcdir=@srcdir@
+
+TESTNAME=h5diff
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+H5DIFF=h5diff               # The tool name
+H5DIFF_BIN=`pwd`/$H5DIFF    # The path of the tool binary
+
+CMP='cmp -s'
+DIFF='diff -c'
+CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
+
+nerrors=0
+verbose=yes
+h5haveexitcode=yes	    # default is yes
+pmode=			    # default to run h5diff tests
+mydomainname=`domainname 2>/dev/null`
+
+# source dirs
+SRC_TOOLS="$srcdir/.."
+SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+# testfiles source dirs for tools
+SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
+SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
+SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
+SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
+SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
+SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
+
+TESTDIR=./testfiles
+test -d $TESTDIR || mkdir $TESTDIR
+
+######################################################################
+# test files
+# --------------------------------------------------------------------
+# All the test files copy from source directory to test directory
+# NOTE: Keep this framework to add/remove test files.
+#       Any test files from other tools can be used in this framework.
+#       This list are also used for checking exist.
+#       Comment '#' without space can be used.
+# --------------------------------------------------------------------
+LIST_HDF5_TEST_FILES="
+$SRC_H5DIFF_TESTFILES/h5diff_basic1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_basic2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_types.h5
+$SRC_H5DIFF_TESTFILES/h5diff_dtypes.h5
+$SRC_H5DIFF_TESTFILES/h5diff_attr1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_attr2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_dset1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_dset2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_hyper1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_hyper2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_empty.h5
+$SRC_H5DIFF_TESTFILES/h5diff_links.h5
+$SRC_H5DIFF_TESTFILES/h5diff_softlinks.h5
+$SRC_H5DIFF_TESTFILES/h5diff_linked_softlink.h5
+$SRC_H5DIFF_TESTFILES/h5diff_extlink_src.h5
+$SRC_H5DIFF_TESTFILES/h5diff_extlink_trg.h5
+$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_src.h5
+$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_trg.h5
+$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_danglelinks1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_danglelinks2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-3.h5
+$SRC_H5DIFF_TESTFILES/h5diff_exclude1-1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_exclude1-2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_exclude2-1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_exclude2-2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_exclude3-1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_exclude3-2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_comp_vl_strs.h5
+$SRC_H5DIFF_TESTFILES/compounds_array_vlen1.h5
+$SRC_H5DIFF_TESTFILES/compounds_array_vlen2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level1.h5
+$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level2.h5
+$SRC_H5DIFF_TESTFILES/h5diff_enum_invalid_values.h5
+$SRC_H5DIFF_TESTFILES/non_comparables1.h5
+$SRC_H5DIFF_TESTFILES/non_comparables2.h5
+"
+
+LIST_OTHER_TEST_FILES="
+$SRC_H5DIFF_TESTFILES/h5diff_10.txt
+$SRC_H5DIFF_TESTFILES/h5diff_100.txt
+$SRC_H5DIFF_TESTFILES/h5diff_101.txt
+$SRC_H5DIFF_TESTFILES/h5diff_102.txt
+$SRC_H5DIFF_TESTFILES/h5diff_103.txt
+$SRC_H5DIFF_TESTFILES/h5diff_104.txt
+$SRC_H5DIFF_TESTFILES/h5diff_11.txt
+$SRC_H5DIFF_TESTFILES/h5diff_12.txt
+$SRC_H5DIFF_TESTFILES/h5diff_13.txt
+$SRC_H5DIFF_TESTFILES/h5diff_14.txt
+$SRC_H5DIFF_TESTFILES/h5diff_15.txt
+$SRC_H5DIFF_TESTFILES/h5diff_16_1.txt
+$SRC_H5DIFF_TESTFILES/h5diff_16_2.txt
+$SRC_H5DIFF_TESTFILES/h5diff_16_3.txt
+$SRC_H5DIFF_TESTFILES/h5diff_17.txt
+$SRC_H5DIFF_TESTFILES/h5diff_171.txt
+$SRC_H5DIFF_TESTFILES/h5diff_172.txt
+$SRC_H5DIFF_TESTFILES/h5diff_18_1.txt
+$SRC_H5DIFF_TESTFILES/h5diff_18.txt
+$SRC_H5DIFF_TESTFILES/h5diff_20.txt
+$SRC_H5DIFF_TESTFILES/h5diff_200.txt
+$SRC_H5DIFF_TESTFILES/h5diff_201.txt
+$SRC_H5DIFF_TESTFILES/h5diff_202.txt
+$SRC_H5DIFF_TESTFILES/h5diff_203.txt
+$SRC_H5DIFF_TESTFILES/h5diff_204.txt
+$SRC_H5DIFF_TESTFILES/h5diff_205.txt
+$SRC_H5DIFF_TESTFILES/h5diff_206.txt
+$SRC_H5DIFF_TESTFILES/h5diff_207.txt
+$SRC_H5DIFF_TESTFILES/h5diff_208.txt
+$SRC_H5DIFF_TESTFILES/h5diff_220.txt
+$SRC_H5DIFF_TESTFILES/h5diff_221.txt
+$SRC_H5DIFF_TESTFILES/h5diff_222.txt
+$SRC_H5DIFF_TESTFILES/h5diff_223.txt
+$SRC_H5DIFF_TESTFILES/h5diff_224.txt
+$SRC_H5DIFF_TESTFILES/h5diff_21.txt
+$SRC_H5DIFF_TESTFILES/h5diff_22.txt
+$SRC_H5DIFF_TESTFILES/h5diff_23.txt
+$SRC_H5DIFF_TESTFILES/h5diff_24.txt
+$SRC_H5DIFF_TESTFILES/h5diff_25.txt
+$SRC_H5DIFF_TESTFILES/h5diff_26.txt
+$SRC_H5DIFF_TESTFILES/h5diff_27.txt
+$SRC_H5DIFF_TESTFILES/h5diff_28.txt
+$SRC_H5DIFF_TESTFILES/h5diff_30.txt
+$SRC_H5DIFF_TESTFILES/h5diff_300.txt
+$SRC_H5DIFF_TESTFILES/h5diff_400.txt
+$SRC_H5DIFF_TESTFILES/h5diff_401.txt
+$SRC_H5DIFF_TESTFILES/h5diff_402.txt
+$SRC_H5DIFF_TESTFILES/h5diff_403.txt
+$SRC_H5DIFF_TESTFILES/h5diff_404.txt
+$SRC_H5DIFF_TESTFILES/h5diff_405.txt
+$SRC_H5DIFF_TESTFILES/h5diff_406.txt
+$SRC_H5DIFF_TESTFILES/h5diff_407.txt
+$SRC_H5DIFF_TESTFILES/h5diff_408.txt
+$SRC_H5DIFF_TESTFILES/h5diff_409.txt
+$SRC_H5DIFF_TESTFILES/h5diff_410.txt
+$SRC_H5DIFF_TESTFILES/h5diff_411.txt
+$SRC_H5DIFF_TESTFILES/h5diff_412.txt
+$SRC_H5DIFF_TESTFILES/h5diff_413.txt
+$SRC_H5DIFF_TESTFILES/h5diff_414.txt
+$SRC_H5DIFF_TESTFILES/h5diff_415.txt
+$SRC_H5DIFF_TESTFILES/h5diff_416.txt
+$SRC_H5DIFF_TESTFILES/h5diff_417.txt
+$SRC_H5DIFF_TESTFILES/h5diff_418.txt
+$SRC_H5DIFF_TESTFILES/h5diff_419.txt
+$SRC_H5DIFF_TESTFILES/h5diff_420.txt
+$SRC_H5DIFF_TESTFILES/h5diff_421.txt
+$SRC_H5DIFF_TESTFILES/h5diff_422.txt
+$SRC_H5DIFF_TESTFILES/h5diff_423.txt
+$SRC_H5DIFF_TESTFILES/h5diff_424.txt
+$SRC_H5DIFF_TESTFILES/h5diff_425.txt
+$SRC_H5DIFF_TESTFILES/h5diff_450.txt
+$SRC_H5DIFF_TESTFILES/h5diff_451.txt
+$SRC_H5DIFF_TESTFILES/h5diff_452.txt
+$SRC_H5DIFF_TESTFILES/h5diff_453.txt
+$SRC_H5DIFF_TESTFILES/h5diff_454.txt
+$SRC_H5DIFF_TESTFILES/h5diff_455.txt
+$SRC_H5DIFF_TESTFILES/h5diff_456.txt
+$SRC_H5DIFF_TESTFILES/h5diff_457.txt
+$SRC_H5DIFF_TESTFILES/h5diff_458.txt
+$SRC_H5DIFF_TESTFILES/h5diff_459.txt
+$SRC_H5DIFF_TESTFILES/h5diff_465.txt
+$SRC_H5DIFF_TESTFILES/h5diff_466.txt
+$SRC_H5DIFF_TESTFILES/h5diff_467.txt
+$SRC_H5DIFF_TESTFILES/h5diff_468.txt
+$SRC_H5DIFF_TESTFILES/h5diff_469.txt
+$SRC_H5DIFF_TESTFILES/h5diff_471.txt
+$SRC_H5DIFF_TESTFILES/h5diff_472.txt
+$SRC_H5DIFF_TESTFILES/h5diff_473.txt
+$SRC_H5DIFF_TESTFILES/h5diff_474.txt
+$SRC_H5DIFF_TESTFILES/h5diff_475.txt
+$SRC_H5DIFF_TESTFILES/h5diff_480.txt
+$SRC_H5DIFF_TESTFILES/h5diff_481.txt
+$SRC_H5DIFF_TESTFILES/h5diff_482.txt
+$SRC_H5DIFF_TESTFILES/h5diff_483.txt
+$SRC_H5DIFF_TESTFILES/h5diff_484.txt
+$SRC_H5DIFF_TESTFILES/h5diff_485.txt
+$SRC_H5DIFF_TESTFILES/h5diff_486.txt
+$SRC_H5DIFF_TESTFILES/h5diff_487.txt
+$SRC_H5DIFF_TESTFILES/h5diff_50.txt
+$SRC_H5DIFF_TESTFILES/h5diff_51.txt
+$SRC_H5DIFF_TESTFILES/h5diff_52.txt
+$SRC_H5DIFF_TESTFILES/h5diff_53.txt
+$SRC_H5DIFF_TESTFILES/h5diff_54.txt
+$SRC_H5DIFF_TESTFILES/h5diff_55.txt
+$SRC_H5DIFF_TESTFILES/h5diff_56.txt
+$SRC_H5DIFF_TESTFILES/h5diff_57.txt
+$SRC_H5DIFF_TESTFILES/h5diff_58.txt
+$SRC_H5DIFF_TESTFILES/h5diff_59.txt
+$SRC_H5DIFF_TESTFILES/h5diff_500.txt
+$SRC_H5DIFF_TESTFILES/h5diff_501.txt
+$SRC_H5DIFF_TESTFILES/h5diff_502.txt
+$SRC_H5DIFF_TESTFILES/h5diff_503.txt
+$SRC_H5DIFF_TESTFILES/h5diff_504.txt
+$SRC_H5DIFF_TESTFILES/h5diff_505.txt
+$SRC_H5DIFF_TESTFILES/h5diff_506.txt
+$SRC_H5DIFF_TESTFILES/h5diff_507.txt
+$SRC_H5DIFF_TESTFILES/h5diff_508.txt
+$SRC_H5DIFF_TESTFILES/h5diff_509.txt
+$SRC_H5DIFF_TESTFILES/h5diff_510.txt
+$SRC_H5DIFF_TESTFILES/h5diff_511.txt
+$SRC_H5DIFF_TESTFILES/h5diff_512.txt
+$SRC_H5DIFF_TESTFILES/h5diff_513.txt
+$SRC_H5DIFF_TESTFILES/h5diff_514.txt
+$SRC_H5DIFF_TESTFILES/h5diff_515.txt
+$SRC_H5DIFF_TESTFILES/h5diff_516.txt
+$SRC_H5DIFF_TESTFILES/h5diff_517.txt
+$SRC_H5DIFF_TESTFILES/h5diff_518.txt
+$SRC_H5DIFF_TESTFILES/h5diff_530.txt
+$SRC_H5DIFF_TESTFILES/h5diff_540.txt
+$SRC_H5DIFF_TESTFILES/h5diff_600.txt
+$SRC_H5DIFF_TESTFILES/h5diff_601.txt
+$SRC_H5DIFF_TESTFILES/h5diff_603.txt
+$SRC_H5DIFF_TESTFILES/h5diff_604.txt
+$SRC_H5DIFF_TESTFILES/h5diff_605.txt
+$SRC_H5DIFF_TESTFILES/h5diff_606.txt
+$SRC_H5DIFF_TESTFILES/h5diff_607.txt
+$SRC_H5DIFF_TESTFILES/h5diff_608.txt
+$SRC_H5DIFF_TESTFILES/h5diff_609.txt
+$SRC_H5DIFF_TESTFILES/h5diff_610.txt
+$SRC_H5DIFF_TESTFILES/h5diff_612.txt
+$SRC_H5DIFF_TESTFILES/h5diff_613.txt
+$SRC_H5DIFF_TESTFILES/h5diff_614.txt
+$SRC_H5DIFF_TESTFILES/h5diff_615.txt
+$SRC_H5DIFF_TESTFILES/h5diff_616.txt
+$SRC_H5DIFF_TESTFILES/h5diff_617.txt
+$SRC_H5DIFF_TESTFILES/h5diff_618.txt
+$SRC_H5DIFF_TESTFILES/h5diff_619.txt
+$SRC_H5DIFF_TESTFILES/h5diff_621.txt
+$SRC_H5DIFF_TESTFILES/h5diff_622.txt
+$SRC_H5DIFF_TESTFILES/h5diff_623.txt
+$SRC_H5DIFF_TESTFILES/h5diff_624.txt
+$SRC_H5DIFF_TESTFILES/h5diff_625.txt
+$SRC_H5DIFF_TESTFILES/h5diff_626.txt
+$SRC_H5DIFF_TESTFILES/h5diff_627.txt
+$SRC_H5DIFF_TESTFILES/h5diff_628.txt
+$SRC_H5DIFF_TESTFILES/h5diff_629.txt
+$SRC_H5DIFF_TESTFILES/h5diff_630.txt
+$SRC_H5DIFF_TESTFILES/h5diff_631.txt
+$SRC_H5DIFF_TESTFILES/h5diff_640.txt
+$SRC_H5DIFF_TESTFILES/h5diff_641.txt
+$SRC_H5DIFF_TESTFILES/h5diff_642.txt
+$SRC_H5DIFF_TESTFILES/h5diff_643.txt
+$SRC_H5DIFF_TESTFILES/h5diff_644.txt
+$SRC_H5DIFF_TESTFILES/h5diff_645.txt
+$SRC_H5DIFF_TESTFILES/h5diff_646.txt
+$SRC_H5DIFF_TESTFILES/h5diff_70.txt
+$SRC_H5DIFF_TESTFILES/h5diff_700.txt
+$SRC_H5DIFF_TESTFILES/h5diff_701.txt
+$SRC_H5DIFF_TESTFILES/h5diff_702.txt
+$SRC_H5DIFF_TESTFILES/h5diff_703.txt
+$SRC_H5DIFF_TESTFILES/h5diff_704.txt
+$SRC_H5DIFF_TESTFILES/h5diff_705.txt
+$SRC_H5DIFF_TESTFILES/h5diff_706.txt
+$SRC_H5DIFF_TESTFILES/h5diff_707.txt
+$SRC_H5DIFF_TESTFILES/h5diff_708.txt
+$SRC_H5DIFF_TESTFILES/h5diff_709.txt
+$SRC_H5DIFF_TESTFILES/h5diff_710.txt
+$SRC_H5DIFF_TESTFILES/h5diff_80.txt
+$SRC_H5DIFF_TESTFILES/h5diff_90.txt
+"
+
+#
+# copy test files and expected output files from source dirs to test dir
+#
+COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML"
+
+COPY_TESTFILES_TO_TESTDIR()
+{
+    # copy test files. Used -f to make sure get a new copy
+    for tstfile in $COPY_TESTFILES
+    do
+        # ignore '#' comment
+        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
+        RET=$?
+        if [ $RET -eq 1 ]; then
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
+            fi
+        fi
+    done
+}
+
+# Parse option
+#   -p   run ph5diff tests
+#   -h   print help page
+while [ $# -gt 0 ]; do
+    case "$1" in
+    -p)	# reset the tool name and bin to run ph5diff tests
+	TESTNAME=ph5diff
+	H5DIFF=ph5diff               # The tool name
+	H5DIFF_BIN=`pwd`/$H5DIFF
+	pmode=yes
+	shift
+	;;
+    -h) # print help page
+	echo "$0 [-p] [-h]"
+	echo "    -p   run ph5diff tests"
+	echo "    -h   print help page"
+	shift
+	exit 0
+	;;
+    *)  # unknown option
+        echo "$0: Unknown option ($1)"
+	exit 1
+	;;
+    esac
+done
+
+# RUNSERIAL is used. Check if it can return exit code from executalbe correctly.
+if [ -n "$RUNSERIAL_NOEXITCODE" ]; then
+    echo "***Warning*** Serial Exit Code is not passed back to shell corretly."
+    echo "***Warning*** Exit code checking is skipped."
+    h5haveexitcode=no
+fi
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+#
+TESTING() {
+   SPACES="                                                               "
+   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Source in the output filter function definitions.
+. $srcdir/../../bin/output_filter.sh
+
+# Run a test and print PASS or *FAIL*.  If a test fails then increment
+# the `nerrors' global variable and (if $verbose is set) display the
+# difference between the actual output and the expected output. The
+# expected output is given as the first argument to this function and
+# the actual output file is calculated by replacing the `.ddl' with
+# `.out'.  The actual output is not removed if $HDF5_NOCLEANUP has a
+# non-zero value.
+#
+# Need eval before the RUNCMD command because some machines like
+# AIX, has RUNPARALLEL in the style as
+#   MP_PROCS=3 MP_TASKS_PER_NODE=3 poe ./a.out
+# that throws the shell script off.
+#
+TOOLTEST() {
+    expect="$TESTDIR/$1"
+    actual="$TESTDIR/`basename $1 .txt`.out"
+    actual_err="$TESTDIR/`basename $1 .txt`.err"
+    actual_sav=${actual}-sav
+    actual_err_sav=${actual_err}-sav
+    shift
+    if test -n "$pmode"; then
+        RUNCMD=$RUNPARALLEL
+    else
+        RUNCMD=$RUNSERIAL
+    fi
+
+    # Run test.
+    TESTING $H5DIFF $@
+    (
+	#echo "#############################"
+	#echo "Expected output for '$H5DIFF $@'" 
+	#echo "#############################"
+	cd $TESTDIR
+	eval $RUNCMD $H5DIFF_BIN "$@"
+    ) >$actual 2>$actual_err
+    EXIT_CODE=$?
+    # save actual and actual_err in case they are needed later.
+    cp $actual $actual_sav
+    STDOUT_FILTER $actual
+    cp $actual_err $actual_err_sav
+    STDERR_FILTER $actual_err
+    cat $actual_err >> $actual
+    # don't add exit code check in pmode, as it causes failure. (exit code 
+    # is from mpirun not tool)
+    # if any problem occurs relate to an exit code, it will be caught in 
+    # serial mode, so the test is fullfilled.
+    if test $h5haveexitcode = 'yes' -a -z "$pmode"; then
+      echo "EXIT CODE: $EXIT_CODE" >> $actual
+    fi
+
+    if [ ! -f $expect ]; then
+        # Create the expect file if it doesn't yet exist.
+        echo " CREATED"
+        cp $actual $expect
+    elif $CMP $expect $actual; then
+        echo " PASSED"
+    elif test $h5haveexitcode = 'yes' -a -z "$pmode"; then
+        echo "*FAILED*"
+        echo "    Expected result ($expect) differs from actual result ($actual)"
+        nerrors="`expr $nerrors + 1`"
+        test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    else
+	    # parallel mode output are often of different ordering from serial
+        # output.  If the sorted expected and actual files compare the same,
+        # it is safe to assume the actual output match the expected file.
+        expect_sorted=expect_sorted
+        actual_sorted=actual_sorted
+        sort $expect -o $expect_sorted
+        sort $actual -o $actual_sorted
+        # remove "EXIT CODE:" line from expect file. test for exit code
+        # is done by serial mode.
+        grep -v "EXIT CODE:" $expect_sorted > $expect_sorted.noexit
+        mv $expect_sorted.noexit $expect_sorted
+	if $CMP $expect_sorted $actual_sorted; then
+	    echo " PASSED"
+	else
+	    echo "*FAILED*"
+	    nerrors="`expr $nerrors + 1`"
+	    if test yes = "$verbose"; then
+		echo "====Expected result ($expect_sorted) differs from actual result ($actual_sorted)"
+		$DIFF $expect_sorted $actual_sorted |sed 's/^/    /'
+		echo "====The actual output ($actual_sav)"
+		sed 's/^/    /' < $actual_sav 
+		echo "====The actual stderr ($actual_err_sav)"
+		sed 's/^/    /' < $actual_err_sav 
+		echo "====End of actual stderr ($actual_err_sav)"
+		echo ""
+	    fi
+	fi
+    fi
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+	    rm -f $actual $actual_err $actual_sav $actual_err_sav
+    	rm -f $actual_sorted $expect_sorted
+    fi
+}
+
+
+# Print a "SKIP" message
+SKIP() {
+	 TESTING $H5DIFF $@
+	  echo  " -SKIP-"
+}
+
+
+
+##############################################################################
+# The tests 
+# To avoid the printing of the complete full path of the test file, that hides
+# all the other parameters for long paths, the printing of the command line 
+# is done first in
+# TESTING with the name only of the test file $TOOL, not its full path $TESTFILE
+##############################################################################
+# prepare for test
+COPY_TESTFILES_TO_TESTDIR
+
+# ############################################################################
+# # Common usage
+# ############################################################################
+
+# 1.0
+TOOLTEST h5diff_10.txt -h
+
+# 1.1 normal mode
+TOOLTEST h5diff_11.txt  h5diff_basic1.h5 h5diff_basic2.h5 
+
+# 1.2 normal mode with objects
+TOOLTEST h5diff_12.txt  h5diff_basic1.h5 h5diff_basic2.h5  g1/dset1 g1/dset2
+
+# 1.3 report mode
+TOOLTEST h5diff_13.txt -r h5diff_basic1.h5 h5diff_basic2.h5 
+
+# 1.4 report  mode with objects
+TOOLTEST h5diff_14.txt  -r h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2
+
+# 1.5 with -d
+TOOLTEST h5diff_15.txt --report --delta=5 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 1.6.1 with -p (int)
+TOOLTEST h5diff_16_1.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset5 g1/dset6
+
+# 1.6.2 with -p (unsigned long_long)
+TOOLTEST h5diff_16_2.txt --verbose --relative=0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset7 g1/dset8
+
+# 1.6.3 with -p (double)
+TOOLTEST h5diff_16_3.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset9 g1/dset10
+
+# 1.7 verbose mode
+TOOLTEST h5diff_17.txt -v h5diff_basic1.h5 h5diff_basic2.h5   
+
+# 1.7 test 32-bit INFINITY
+TOOLTEST h5diff_171.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp19 /g1/fp19_COPY
+
+# 1.7 test 64-bit INFINITY
+TOOLTEST h5diff_172.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp20 /g1/fp20_COPY
+
+# 1.8 quiet mode 
+TOOLTEST h5diff_18.txt -q h5diff_basic1.h5 h5diff_basic2.h5 
+
+# 1.8 -v and -q
+TOOLTEST h5diff_18_1.txt -v -q h5diff_basic1.h5 h5diff_basic2.h5
+
+
+# ##############################################################################
+# # not comparable types
+# ##############################################################################
+
+# 2.0
+TOOLTEST h5diff_20.txt -v h5diff_types.h5 h5diff_types.h5  dset g1
+
+# 2.1
+TOOLTEST h5diff_21.txt -v h5diff_types.h5 h5diff_types.h5 dset l1
+
+# 2.2
+TOOLTEST h5diff_22.txt -v  h5diff_types.h5 h5diff_types.h5 dset t1
+
+# ##############################################################################
+# # compare groups, types, links (no differences and differences)
+# ##############################################################################
+
+# 2.3
+TOOLTEST h5diff_23.txt -v h5diff_types.h5 h5diff_types.h5 g1 g1
+
+# 2.4
+TOOLTEST h5diff_24.txt -v h5diff_types.h5 h5diff_types.h5 t1 t1
+
+# 2.5
+TOOLTEST h5diff_25.txt -v h5diff_types.h5 h5diff_types.h5 l1 l1 
+
+# 2.6
+TOOLTEST h5diff_26.txt -v h5diff_types.h5 h5diff_types.h5 g1 g2
+
+# 2.7
+TOOLTEST h5diff_27.txt -v h5diff_types.h5 h5diff_types.h5 t1 t2
+
+# 2.8
+TOOLTEST h5diff_28.txt -v h5diff_types.h5 h5diff_types.h5 l1 l2
+
+
+# ##############################################################################
+# # Enum value tests (may become more comprehensive in the future)
+# ##############################################################################
+
+# 3.0
+# test enum types which may have invalid values
+TOOLTEST h5diff_30.txt -v h5diff_enum_invalid_values.h5 h5diff_enum_invalid_values.h5 dset1 dset2
+
+
+
+
+# ##############################################################################
+# # Dataset datatypes
+# ##############################################################################
+
+# 5.0
+TOOLTEST h5diff_50.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset0a dset0b
+
+# 5.1
+TOOLTEST h5diff_51.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset1a dset1b
+
+# 5.2
+TOOLTEST h5diff_52.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset2a dset2b
+
+# 5.3
+TOOLTEST h5diff_53.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset3a dset4b
+
+# 5.4
+TOOLTEST h5diff_54.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset4a dset4b
+
+# 5.5
+TOOLTEST h5diff_55.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset5a dset5b
+
+# 5.6
+TOOLTEST h5diff_56.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset6a dset6b
+
+# 5.7
+TOOLTEST h5diff_57.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset7a dset7b
+
+# 5.8 (region reference)
+TOOLTEST h5diff_58.txt -v h5diff_dset1.h5 h5diff_dset2.h5 refreg
+
+# test for both dset and attr with same type but with different size 
+# ( HDDFV-7942 )
+TOOLTEST h5diff_59.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset11a dset11b
+
+# ##############################################################################
+# # Error messages
+# ##############################################################################
+
+
+# 6.0: Check if the command line number of arguments is less than 3
+TOOLTEST h5diff_600.txt h5diff_basic1.h5 
+
+# 6.1: Check if non-exist object name is specified 
+TOOLTEST h5diff_601.txt h5diff_basic1.h5 h5diff_basic1.h5 nono_obj
+
+
+# ##############################################################################
+# # -d 
+# ##############################################################################
+
+
+# 6.3: negative value
+TOOLTEST h5diff_603.txt -d -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.4: zero
+TOOLTEST h5diff_604.txt -d 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.5: non number
+TOOLTEST h5diff_605.txt -d u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.6: hexadecimal
+TOOLTEST h5diff_606.txt -d 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.7: string
+TOOLTEST h5diff_607.txt -d "1" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.8: use system epsilon 
+TOOLTEST h5diff_608.txt --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5  g1/dset3 g1/dset4
+
+# 6.9: number larger than biggest difference
+TOOLTEST h5diff_609.txt -d 200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.10: number smaller than smallest difference
+TOOLTEST h5diff_610.txt -d 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+
+# ##############################################################################
+# # -p
+# ##############################################################################
+
+
+# 6.12: negative value
+TOOLTEST h5diff_612.txt -p -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.13: zero
+TOOLTEST h5diff_613.txt -p 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.14: non number
+TOOLTEST h5diff_614.txt -p u h5diff_basic1.h5 h5diff_basic2.h5  g1/dset3 g1/dset4
+
+# 6.15: hexadecimal
+TOOLTEST h5diff_615.txt -p 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.16: string
+TOOLTEST h5diff_616.txt -p "0.21" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.17: repeated option
+TOOLTEST h5diff_617.txt -p 0.21 -p 0.22 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.18: number larger than biggest difference
+TOOLTEST h5diff_618.txt -p 2 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.19: number smaller than smallest difference
+TOOLTEST h5diff_619.txt -p 0.005 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+
+
+# ##############################################################################
+# # -n
+# ##############################################################################
+
+# 6.21: negative value
+TOOLTEST h5diff_621.txt -n -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.22: zero
+TOOLTEST h5diff_622.txt -n 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.23: non number
+TOOLTEST h5diff_623.txt -n u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.24: hexadecimal
+TOOLTEST h5diff_624.txt -n 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.25: string
+TOOLTEST h5diff_625.txt -n "2" h5diff_basic1.h5 h5diff_basic2.h5  g1/dset3 g1/dset4
+
+# 6.26: repeated option
+TOOLTEST h5diff_626.txt -n 2 -n 3 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.27: number larger than biggest difference
+TOOLTEST h5diff_627.txt --count=200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# 6.28: number smaller than smallest difference
+TOOLTEST h5diff_628.txt -n 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4
+
+# Disabling this test as it hangs - LRK 20090618
+# 6.29  non valid files
+#TOOLTEST h5diff_629.txt file1.h6 file2.h6
+
+# ##############################################################################
+# # NaN
+# ##############################################################################
+# 6.30: test (NaN == NaN) must be true based on our documentation -- XCAO
+TOOLTEST h5diff_630.txt -v -d "0.0001" h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY
+TOOLTEST h5diff_631.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY
+
+
+# ##############################################################################
+# 7.  attributes
+# ##############################################################################
+TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 
+
+# ##################################################
+#  attrs with verbose option level
+# ##################################################
+
+TOOLTEST h5diff_700.txt -v1 h5diff_attr1.h5 h5diff_attr2.h5 
+TOOLTEST h5diff_701.txt -v2 h5diff_attr1.h5 h5diff_attr2.h5 
+TOOLTEST h5diff_702.txt --verbose=1 h5diff_attr1.h5 h5diff_attr2.h5 
+TOOLTEST h5diff_703.txt --verbose=2 h5diff_attr1.h5 h5diff_attr2.h5 
+
+# same attr number , all same attr name
+TOOLTEST h5diff_704.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g
+
+# same attr number , some same attr name
+TOOLTEST h5diff_705.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /dset
+
+# same attr number , all different attr name
+TOOLTEST h5diff_706.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /ntype
+
+# different attr number , same attr name (intersected)
+TOOLTEST h5diff_707.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g2
+
+# different attr number , all different attr name 
+TOOLTEST h5diff_708.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g3
+
+# when no attributes exist in both objects
+TOOLTEST h5diff_709.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g4
+
+# file vs file
+TOOLTEST h5diff_710.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5
+
+# ##############################################################################
+# 8.  all dataset datatypes
+# ##############################################################################
+TOOLTEST h5diff_80.txt -v h5diff_dset1.h5 h5diff_dset2.h5 
+
+# 9. compare a file with itself
+TOOLTEST h5diff_90.txt -v h5diff_basic2.h5 h5diff_basic2.h5
+
+# 10. read by hyperslab, print indexes
+if test -n "$pmode" -a "$mydomainname" = hdfgroup.uiuc.edu; then
+    # skip this test which sometimes hangs in some THG machines
+    SKIP -v h5diff_hyper1.h5 h5diff_hyper2.h5
+else
+    TOOLTEST h5diff_100.txt -v h5diff_hyper1.h5 h5diff_hyper2.h5 
+fi
+
+# 11. floating point comparison
+# double value
+TOOLTEST h5diff_101.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/d1  g1/d2 
+
+# float value
+TOOLTEST h5diff_102.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 
+
+# with --use-system-epsilon for double value 
+TOOLTEST h5diff_103.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/d1  g1/d2 
+
+# with --use-system-epsilon for float value
+TOOLTEST h5diff_104.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 
+
+
+# not comparable -c flag
+TOOLTEST h5diff_200.txt h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1  g2/dset2 
+
+TOOLTEST h5diff_201.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1  g2/dset2 
+
+TOOLTEST h5diff_202.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset2  g2/dset3
+
+TOOLTEST h5diff_203.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset3  g2/dset4
+
+TOOLTEST h5diff_204.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset4  g2/dset5
+
+TOOLTEST h5diff_205.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset5  g2/dset6
+
+# not comparable in compound
+TOOLTEST h5diff_206.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset7  g2/dset8
+
+TOOLTEST h5diff_207.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset8  g2/dset9
+
+# not comparable in dataspace of zero dimension size
+TOOLTEST h5diff_208.txt -c h5diff_dset_zero_dim_size1.h5 h5diff_dset_zero_dim_size2.h5 
+
+# non-comparable dataset with comparable attribute, and other comparable datasets. 
+# Also test non-compatible attributes with different type, dimention, rank.
+# All the comparables should display differences.
+TOOLTEST h5diff_220.txt -c non_comparables1.h5 non_comparables2.h5 /g1
+
+# comparable dataset with non-comparable attribute and other comparable attributes.
+# All the comparables should display differences.
+TOOLTEST h5diff_221.txt -c non_comparables1.h5 non_comparables2.h5 /g2
+
+# entire file
+# All the comparables should display differences.
+TOOLTEST h5diff_222.txt -c non_comparables1.h5 non_comparables2.h5
+
+# non-comparable test for common objects (same name) with different object types
+# (HDFFV-7644)
+TOOLTEST h5diff_223.txt -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes
+# swap files
+TOOLTEST h5diff_224.txt -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes
+    
+# ##############################################################################
+# # Links compare without --follow-symlinks nor --no-dangling-links
+# ##############################################################################
+# test for bug1749
+TOOLTEST h5diff_300.txt -v h5diff_links.h5 h5diff_links.h5 /link_g1 /link_g2
+
+# ##############################################################################
+# # Links compare with --follow-symlinks Only
+# ##############################################################################
+# soft links file to file
+TOOLTEST h5diff_400.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5
+
+# softlink vs dset"
+TOOLTEST h5diff_401.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /target_dset2
+
+# dset vs softlink"
+TOOLTEST h5diff_402.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /target_dset2 /softlink_dset1_1
+
+# softlink vs softlink"
+TOOLTEST h5diff_403.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /softlink_dset2
+
+# extlink vs extlink (FILE)"
+TOOLTEST h5diff_404.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5
+
+# extlink vs dset"
+TOOLTEST h5diff_405.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_trg.h5 /ext_link_dset1 /target_group2/x_dset
+
+# dset vs extlink"
+TOOLTEST h5diff_406.txt --follow-symlinks -v h5diff_extlink_trg.h5 h5diff_extlink_src.h5 /target_group2/x_dset /ext_link_dset1
+
+# extlink vs extlink"
+TOOLTEST h5diff_407.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_dset2
+
+# softlink vs extlink"
+TOOLTEST h5diff_408.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_extlink_src.h5 /softlink_dset1_1 /ext_link_dset2
+
+# extlink vs softlink "
+TOOLTEST h5diff_409.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_softlinks.h5 /ext_link_dset2 /softlink_dset1_1
+
+# linked_softlink vs linked_softlink (FILE)"
+TOOLTEST h5diff_410.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5
+
+# dset2 vs linked_softlink_dset1"
+TOOLTEST h5diff_411.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_dset2 /softlink1_to_slink2
+
+# linked_softlink_dset1 vs dset2"
+TOOLTEST h5diff_412.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /target_dset2
+
+# linked_softlink_to_dset1 vs linked_softlink_to_dset2"
+TOOLTEST h5diff_413.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /softlink2_to_slink2
+
+# group vs linked_softlink_group1"
+TOOLTEST h5diff_414.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_group /softlink3_to_slink2
+
+# linked_softlink_group1 vs group"
+TOOLTEST h5diff_415.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /target_group
+
+# linked_softlink_to_group1 vs linked_softlink_to_group2"
+TOOLTEST h5diff_416.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /softlink4_to_slink2
+
+# non-exist-softlink vs softlink"
+TOOLTEST h5diff_417.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_dset2
+
+# softlink vs non-exist-softlink"
+TOOLTEST h5diff_418.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist
+
+# non-exist-extlink_file vs extlink"
+TOOLTEST h5diff_419.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist2 /ext_link_dset2
+
+# exlink vs non-exist-extlink_file"
+TOOLTEST h5diff_420.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist2
+
+# extlink vs non-exist-extlink_obj"
+TOOLTEST h5diff_421.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist1
+
+# non-exist-extlink_obj vs extlink"
+TOOLTEST h5diff_422.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_dset2
+
+# extlink_to_softlink_to_dset1 vs dset2"
+TOOLTEST h5diff_423.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_trg.h5 /ext_link_to_slink1 /dset2
+
+# dset2 vs extlink_to_softlink_to_dset1"
+TOOLTEST h5diff_424.txt --follow-symlinks -v h5diff_ext2softlink_trg.h5 h5diff_ext2softlink_src.h5 /dset2 /ext_link_to_slink1
+
+# extlink_to_softlink_to_dset1 vs extlink_to_softlink_to_dset2"
+TOOLTEST h5diff_425.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_src.h5 /ext_link_to_slink1 /ext_link_to_slink2
+
+
+# ##############################################################################
+# # Dangling links compare (--follow-symlinks and --no-dangling-links)
+# ##############################################################################
+# dangling links --follow-symlinks (FILE to FILE)
+TOOLTEST h5diff_450.txt  --follow-symlinks -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5
+
+# dangling links --follow-symlinks and --no-dangling-links (FILE to FILE)
+TOOLTEST h5diff_451.txt  --follow-symlinks -v --no-dangling-links  h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 
+
+# try --no-dangling-links without --follow-symlinks options
+TOOLTEST h5diff_452.txt  --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5
+
+# dangling link found for soft links (FILE to FILE)
+TOOLTEST h5diff_453.txt  --follow-symlinks -v --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5  
+
+# dangling link found for soft links (obj to obj)
+TOOLTEST h5diff_454.txt  --follow-symlinks -v --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist 
+
+# dangling link found for soft links (obj to obj) Both dangle links
+TOOLTEST h5diff_455.txt  --follow-symlinks -v --no-dangling-links  h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_noexist 
+
+# dangling link found for ext links (FILE to FILE)
+TOOLTEST h5diff_456.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 
+
+# dangling link found for ext links (obj to obj). target file exist
+TOOLTEST h5diff_457.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist1 
+
+# dangling link found for ext links (obj to obj). target file NOT exist
+TOOLTEST h5diff_458.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist2  
+
+# dangling link found for ext links (obj to obj). Both dangle links
+TOOLTEST h5diff_459.txt  --follow-symlinks -v --no-dangling-links  h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_noexist2
+
+# dangling link --follow-symlinks (obj vs obj)
+# (HDFFV-7836)
+TOOLTEST h5diff_465.txt --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1
+# (HDFFV-7835)
+# soft dangling vs. soft dangling
+TOOLTEST h5diff_466.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1
+# soft link  vs. soft dangling
+TOOLTEST h5diff_467.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2
+# ext dangling vs. ext dangling
+TOOLTEST h5diff_468.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 
+# ext link vs. ext dangling
+TOOLTEST h5diff_469.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2
+
+#----------------------------------------
+# dangling links without follow symlink 
+# (HDFFV-7998)
+# test - soft dangle links (same and different paths), 
+#      - external dangle links (same and different paths)
+TOOLTEST h5diff_471.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5
+TOOLTEST h5diff_472.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1
+TOOLTEST h5diff_473.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link4
+TOOLTEST h5diff_474.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4
+TOOLTEST h5diff_475.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link1
+
+# ##############################################################################
+# # test for group diff recursivly
+# ##############################################################################
+# root 
+TOOLTEST h5diff_500.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /
+TOOLTEST h5diff_501.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /
+
+# root vs group
+TOOLTEST h5diff_502.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /grp1/grp2/grp3
+
+# group vs group (same name and structure)
+TOOLTEST h5diff_503.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /grp1
+
+# group vs group (different name and structure)
+TOOLTEST h5diff_504.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /grp1/grp2/grp3
+
+# groups vs soft-link
+TOOLTEST h5diff_505.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /slink_grp1
+TOOLTEST h5diff_506.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /slink_grp2
+
+# groups vs ext-link
+TOOLTEST h5diff_507.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1
+TOOLTEST h5diff_508.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1
+
+# soft-link vs ext-link
+TOOLTEST h5diff_509.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1
+TOOLTEST h5diff_510.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1
+
+# circled ext links
+TOOLTEST h5diff_511.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11
+TOOLTEST h5diff_512.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11
+
+# circled soft2ext-link vs soft2ext-link
+TOOLTEST h5diff_513.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11
+TOOLTEST h5diff_514.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11
+
+###############################################################################
+# Test for group recursive diff via multi-linked external links 
+# With follow-symlinks, file h5diff_grp_recurse_ext1.h5 and h5diff_grp_recurse_ext2-1.h5 should
+# be same with the external links.
+###############################################################################
+# file vs file
+TOOLTEST h5diff_515.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5
+TOOLTEST h5diff_516.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5
+# group vs group
+TOOLTEST h5diff_517.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1
+TOOLTEST h5diff_518.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1
+
+# ##############################################################################
+# # Exclude objects (--exclude-path)
+# ##############################################################################
+#
+# Same structure, same names and different value.
+#
+# Exclude the object with different value. Expect return - same
+TOOLTEST h5diff_480.txt -v --exclude-path /group1/dset3 h5diff_exclude1-1.h5 h5diff_exclude1-2.h5
+# Verify different by not excluding. Expect return - diff
+TOOLTEST h5diff_481.txt -v h5diff_exclude1-1.h5 h5diff_exclude1-2.h5
+
+#
+# Different structure, different names. 
+#
+# Exclude all the different objects. Expect return - same
+TOOLTEST h5diff_482.txt -v --exclude-path "/group1" --exclude-path "/dset1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5
+# Exclude only some different objects. Expect return - diff
+TOOLTEST h5diff_483.txt -v --exclude-path "/group1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5
+
+# Exclude from group compare
+TOOLTEST h5diff_484.txt -v --exclude-path "/dset3" h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 /group1
+
+#
+# Only one file contains unique objs. Common objs are same.
+# (HDFFV-7837)
+#
+TOOLTEST h5diff_485.txt -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5
+TOOLTEST h5diff_486.txt -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5
+TOOLTEST h5diff_487.txt -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5
+
+
+# ##############################################################################
+# # diff various multiple vlen and fixed strings in a compound type dataset
+# ##############################################################################
+TOOLTEST h5diff_530.txt -v  h5diff_comp_vl_strs.h5 h5diff_comp_vl_strs.h5 /group /group_copy
+
+# ##############################################################################
+# # Test container types (array,vlen) with multiple nested compound types
+# # Complex compound types in dataset and attribute
+# ##############################################################################
+TOOLTEST h5diff_540.txt -v compounds_array_vlen1.h5 compounds_array_vlen2.h5
+
+# ##############################################################################
+# # Test mutually exclusive options 
+# ##############################################################################
+# Test with -d , -p and --use-system-epsilon. 
+TOOLTEST h5diff_640.txt -v -d 5 -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+TOOLTEST h5diff_641.txt -v -d 5 -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+TOOLTEST h5diff_642.txt -v -p 0.05 -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+TOOLTEST h5diff_643.txt -v -d 5 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+TOOLTEST h5diff_644.txt -v --use-system-epsilon -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+TOOLTEST h5diff_645.txt -v -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+TOOLTEST h5diff_646.txt -v --use-system-epsilon -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4
+
+
+# ##############################################################################
+# # END
+# ##############################################################################
+
+if test $nerrors -eq 0 ; then
+    echo "All $TESTNAME tests passed."
+    exit $EXIT_SUCCESS
+else
+    echo "$TESTNAME tests failed with $nerrors errors."
+    exit $EXIT_FAILURE
+fi
diff --git a/tools/h5diff/testph5diff.sh b/tools/h5diff/testph5diff.sh
deleted file mode 100755
index c619ab5..0000000
--- a/tools/h5diff/testph5diff.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5.  The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html.  COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page.  It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
-# access to either file, you may request a copy from help at hdfgroup.org.
-#
-
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
-TESTNAME=ph5diff
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-TOOL=${srcdir}/testh5diff.sh
-
-nerrors=0
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-#
-TESTING() {
-   SPACES="                                                               "
-   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Run a test.  If a test fails then increment the `nerrors' global variable.
-#
-TOOLTEST() {
-    # Run test.
-    echo $TOOL "$@"
-    /bin/sh $TOOL "$@"
-
-    # Check if the command failed and increment nerrors if so.
-    if test $? -ne 0 ; then
-        nerrors="`expr $nerrors + 1`"
-    fi
-}
-
-##############################################################################
-##############################################################################
-###			  T H E   T E S T S                                ###
-##############################################################################
-##############################################################################
-
-# Invoke the regular h5diff testing script, with the -p parameter to indicate
-#       that it should run the parallel version of the tests
-TOOLTEST -p
-
-# no need to print any message since this is just a shell to invoke
-# testh5diff.sh which has already printed the result.  Just exit.
-if test $nerrors -eq 0 ; then
-    exit $EXIT_SUCCESS
-else
-    exit $EXIT_FAILURE
-fi
diff --git a/tools/h5diff/testph5diff.sh.in b/tools/h5diff/testph5diff.sh.in
new file mode 100755
index 0000000..ca212a1
--- /dev/null
+++ b/tools/h5diff/testph5diff.sh.in
@@ -0,0 +1,64 @@
+#! /bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5.  The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html.  COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page.  It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+# access to either file, you may request a copy from help at hdfgroup.org.
+#
+
+srcdir=@srcdir@
+
+TESTNAME=ph5diff
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+TOOL=testh5diff.sh
+
+nerrors=0
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+#
+TESTING() {
+   SPACES="                                                               "
+   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Run a test.  If a test fails then increment the `nerrors' global variable.
+#
+TOOLTEST() {
+    # Run test.
+    echo $TOOL "$@"
+    /bin/sh $TOOL "$@"
+
+    # Check if the command failed and increment nerrors if so.
+    if test $? -ne 0 ; then
+        nerrors="`expr $nerrors + 1`"
+    fi
+}
+
+##############################################################################
+##############################################################################
+###			  T H E   T E S T S                                ###
+##############################################################################
+##############################################################################
+
+# Invoke the regular h5diff testing script, with the -p parameter to indicate
+#       that it should run the parallel version of the tests
+TOOLTEST -p
+
+# no need to print any message since this is just a shell to invoke
+# testh5diff.sh which has already printed the result.  Just exit.
+if test $nerrors -eq 0 ; then
+    exit $EXIT_SUCCESS
+else
+    exit $EXIT_FAILURE
+fi
diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt
index 91e7ec6..03efa58 100644
--- a/tools/h5dump/CMakeLists.txt
+++ b/tools/h5dump/CMakeLists.txt
@@ -43,352 +43,419 @@ IF (BUILD_TESTING)
   # Copy all the HDF5 files from the test directory into the source directory
   # --------------------------------------------------------------------
   SET (HDF5_REFERENCE_FILES
-      filter_fail.ddl
-      packedbits.ddl
-      tall-1.ddl
-      tall-2.ddl
-      tall-2A.ddl
-      tall-2B.ddl
-      tall-3.ddl
-      tall-4s.ddl
-      tall-5s.ddl
-      tall-6.ddl
-      tallfilters.ddl
-      tarray1.ddl
-      tarray1_big.ddl
-      tarray2.ddl
-      tarray3.ddl
-      tarray4.ddl
-      tarray5.ddl
-      tarray6.ddl
-      tarray7.ddl
-      tarray8.ddl
-      tattr-1.ddl
-      tattr-2.ddl
-      tattr-3.ddl
-      tattr-4_be.ddl
-      tattrreg.ddl
-      tattrregR.ddl
-      tbin1.ddl
-      tbin1.ddl
-      tbin2.ddl
-      tbin3.ddl
-      tbin4.ddl
-      tbinregR.ddl
-      tbigdims.ddl
-      tboot1.ddl
-      tboot2.ddl
-      tchar1.ddl
-      tchunked.ddl
-      tcomp-1.ddl
-      tcomp-2.ddl
-      tcomp-3.ddl
-      tcomp-4.ddl
-      tcompact.ddl
-      tcontents.ddl
-      tcontiguos.ddl
-      tdatareg.ddl
-      tdataregR.ddl
-      tdeflate.ddl
-      tdset-1.ddl
-      tdset-2.ddl
-      tdset-3s.ddl
-      tempty.ddl
-      texceedsubstart.ddl
-      texceedsubcount.ddl
-      texceedsubstride.ddl
-      texceedsubblock.ddl
-      texternal.ddl
-      textlinksrc.ddl
-      textlinkfar.ddl
-      textlink.ddl
-      tfamily.ddl
-      tfill.ddl
-      tfletcher32.ddl
-      tfpformat.ddl
-      tgroup-1.ddl
-      tgroup-2.ddl
-      tgrp_comments.ddl
-      thlink-1.ddl
-      thlink-2.ddl
-      thlink-3.ddl
-      thlink-4.ddl
-      thlink-5.ddl
-      thyperslab.ddl
-      tindicesno.ddl
-      tindicessub1.ddl
-      tindicessub2.ddl
-      tindicessub3.ddl
-      tindicessub4.ddl
-      tindicesyes.ddl
-      tlarge_objname.ddl
-      #tldouble.ddl
-      tlonglinks.ddl
-      tloop-1.ddl
-      tmulti.ddl
-      tmultifile.ddl
-#      tqmarkfile.ddl
-#      tstarfile.ddl
-      tnamed_dtype_attr.ddl
-      tnestcomp-1.ddl
-      tnbit.ddl
-      tno-subset.ddl
-      tnullspace.ddl
-      zerodim.ddl
-      tordergr1.ddl
-      tordergr2.ddl
-      tordergr3.ddl
-      tordergr4.ddl
-      tordergr5.ddl
-      torderattr1.ddl
-      torderattr2.ddl
-      torderattr3.ddl
-      torderattr4.ddl
-      tperror.ddl
-      treference.ddl
-      tsaf.ddl
-      tscaleoffset.ddl
-      tshuffle.ddl
-      tslink-1.ddl
-      tslink-2.ddl
-      tslink-D.ddl
-      tsplit_file.ddl
-      tstr-1.ddl
-      tstr-2.ddl
-      tstring.ddl
-      tstring2.ddl
-      tstringe.ddl
-      tszip.ddl
-      tudlink-1.ddl
-      tudlink-2.ddl
-      tuserfilter.ddl
-      tvldtypes1.ddl
-      tvldtypes2.ddl
-      tvldtypes3.ddl
-      tvldtypes4.ddl
-      tvldtypes5.ddl
-      tvlstr.ddl
-      tvms.ddl
-      h5dump-help.txt
-      out3.h5import
-  )
-  SET (HDF5_XML_REFERENCE_FILES
-      tall.h5.xml
-      tall-2A.h5.xml
-      tarray1.h5.xml
-      tarray2.h5.xml
-      tarray3.h5.xml
-      tarray6.h5.xml
-      tarray7.h5.xml
-      tattr.h5.xml
-      tbitfields.h5.xml
-      tcompound_complex.h5.xml
-      tcompound.h5.xml
-      tcompound2.h5.xml
-      tdatareg.h5.xml
-      tdset.h5.xml
-      tdset2.h5.xml
-      tempty.h5.xml
-      tempty-dtd.h5.xml
-      tempty-dtd-2.h5.xml
-      tempty-dtd-uri.h5.xml
-      tempty-nons.h5.xml
-      tempty-nons-2.h5.xml
-      tempty-nons-uri.h5.xml
-      tempty-ns.h5.xml
-      tempty-ns-2.h5.xml
-      tenum.h5.xml
-      textlink.h5.xml
-      tfpformat.h5.xml
-      tgroup.h5.xml
-      thlink.h5.xml
-      tloop.h5.xml
-      tloop2.h5.xml
-      tmany.h5.xml
-      tname-amp.h5.xml
-      tname-apos.h5.xml
-      tnamed_dtype_attr.h5.xml
-      tname-gt.h5.xml
-      tname-lt.h5.xml
-      tname-quot.h5.xml
-      tname-sp.h5.xml
-      tnestedcomp.h5.xml
-      tnodata.h5.xml
-      tobjref.h5.xml
-      topaque.h5.xml
-      torderattr1.h5.xml
-      torderattr2.h5.xml
-      torderattr3.h5.xml
-      torderattr4.h5.xml
-      tref.h5.xml
-      tref-escapes.h5.xml
-      tref-escapes-at.h5.xml
-      tsaf.h5.xml
-      tslink.h5.xml
-      tstr.h5.xml
-      tstr2.h5.xml
-      tstring.h5.xml
-      tstring-at.h5.xml
-      tudlink.h5.xml
-      tvldtypes1.h5.xml
-      tvldtypes2.h5.xml
-      tvldtypes3.h5.xml
-      tvldtypes4.h5.xml
-      tvldtypes5.h5.xml
-      tvlstr.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/charsets.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/filter_fail.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/packedbits.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2A.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2B.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-4s.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-5s.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-6.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tallfilters.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1_big.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray5.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray6.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray7.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray8.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-4_be.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrcontents1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrcontents2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrintsize.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrreg.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrregR.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbin1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbin1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbin2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbin3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbin4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbigdims.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tboot1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tboot2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tchar1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tchunked.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdattrintsize.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdintsize.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcomp-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcomp-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcomp-3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcomp-4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompact.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcontents.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcontiguos.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdatareg.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdataregR.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdeflate.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset-3s.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/texceedsubstart.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/texceedsubcount.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/texceedsubstride.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/texceedsubblock.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/texternal.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlinksrc.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlinkfar.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlink.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfill.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfletcher32.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfpformat.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tgroup-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tgroup-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tgrp_comments.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink-3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink-4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink-5.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thyperslab.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tindicesno.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tindicessub1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tindicessub2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tindicessub3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tindicessub4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tindicesyes.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tlarge_objname.ddl
+      #${HDF5_TOOLS_SRC_DIR}/testfiles/tldouble.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tlonglinks.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tloop-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmultifile.ddl
+      #${HDF5_TOOLS_SRC_DIR}/testfiles/tqmarkfile.ddl
+      #${HDF5_TOOLS_SRC_DIR}/testfiles/tstarfile.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnamed_dtype_attr.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnestcomp-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnestedcmpddt.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnbit.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tno-subset.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnullspace.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/zerodim.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr5.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordercontents1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordercontents2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderlinks1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderlinks2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tperror.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/treference.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsaf.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tscaleoffset.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tshuffle.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tslink-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tslink-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tslink-D.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsplit_file.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstring.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstring2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstringe.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tszip.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tudlink-1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tudlink-2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tuserfilter.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes3.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes5.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvlstr.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvms.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/twidedisplay.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/h5dump-help.txt
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/out3.h5import
   )
   SET (HDF5_REFERENCE_TEST_FILES
-      filter_fail.h5
-      packedbits.h5
-      taindices.h5
-      tall.h5
-      tarray1.h5
-      tarray1_big.h5
-      tarray2.h5
-      tarray3.h5
-      tarray4.h5
-      tarray5.h5
-      tarray6.h5
-      tarray7.h5
-      tarray8.h5
-      tattr.h5
-      tattr2.h5
-      tattr4_be.h5
-      tattrreg.h5
-      tbigdims.h5
-      tbinary.h5
-      tchar.h5
-      tcompound.h5
-      tcompound_complex.h5
-      tdatareg.h5
-      tdset.h5
-      tempty.h5
-      tsoftlinks.h5
-      textlinkfar.h5
-      textlinksrc.h5
-      textlinktar.h5
-      textlink.h5
-      tfamily00000.h5
-      tfamily00001.h5
-      tfamily00002.h5
-      tfamily00003.h5
-      tfamily00004.h5
-      tfamily00005.h5
-      tfamily00006.h5
-      tfamily00007.h5
-      tfamily00008.h5
-      tfamily00009.h5
-      tfamily00010.h5
-      tfcontents1.h5
-      tfcontents2.h5
-      tfilters.h5
-      tfpformat.h5
-      tfvalues.h5
-      tgroup.h5
-      tgrp_comments.h5
-      thlink.h5
-      thyperslab.h5
-      tlarge_objname.h5
-      #tldouble.h5
-      tlonglinks.h5
-      tloop.h5
-      tmulti-b.h5
-      tmulti-g.h5
-      tmulti-l.h5
-      tmulti-o.h5
-      tmulti-r.h5
-      tmulti-s.h5
-      tnamed_dtype_attr.h5
-      tnestedcomp.h5
-      tno-subset.h5
-      tnullspace.h5
-      zerodim.h5
-      torderattr.h5
-      tordergr.h5
-      tsaf.h5
-      tslink.h5
-      tsplit_file-m.h5
-      tsplit_file-r.h5
-      tstr.h5
-      tstr2.h5
-      tstr3.h5
-      tudlink.h5
-      tvldtypes1.h5
-      tvldtypes2.h5
-      tvldtypes3.h5
-      tvldtypes4.h5
-      tvldtypes5.h5
-      tvlstr.h5
-      tvms.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/charsets.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/filter_fail.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/packedbits.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/taindices.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1_big.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray3.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray4.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray5.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray6.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray7.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray8.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr4_be.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrintsize.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrreg.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbigdims.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinary.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tchar.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdattrintsize.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdintsize.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound_complex.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdatareg.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsoftlinks.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlinkfar.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlinksrc.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlinktar.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlink.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00000.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00001.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00002.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00003.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00004.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00005.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00006.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00007.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00008.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00009.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00010.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfcontents1.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfcontents2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfilters.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfpformat.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfvalues.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tgroup.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tgrp_comments.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thyperslab.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tlarge_objname.h5
+      #${HDF5_TOOLS_SRC_DIR}/testfiles/tldouble.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tlonglinks.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tloop.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti-b.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti-g.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti-l.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti-o.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti-r.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmulti-s.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnamed_dtype_attr.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnestedcomp.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnestedcmpddt.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tno-subset.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnullspace.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/zerodim.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsaf.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tslink.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsplit_file-m.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsplit_file-r.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr3.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tudlink.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes3.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes4.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes5.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvlstr.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvms.h5
   )
-  SET (HDF5_XML_REFERENCE_TEST_FILES
-      tbitfields.h5
-      tcompound2.h5
-      tdset2.h5
-      tenum.h5
-      textlink.h5
-      tloop2.h5
-      tmany.h5
-      tname-amp.h5
-      tname-apos.h5
-      tname-gt.h5
-      tname-lt.h5
-      tname-quot.h5
-      tname-sp.h5
-      tnodata.h5
-      tobjref.h5
-      topaque.h5
-      tref.h5
-      tref-escapes.h5
-      tref-escapes-at.h5
-      tstring.h5
-      tstring-at.h5
+  SET (HDF5_ERROR_REFERENCE_TEST_FILES
+      ${PROJECT_SOURCE_DIR}/errfiles/filter_fail.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tall-1.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tall-2A.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tall-2B.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tarray1_big.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tattrregR.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tattr-3.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tcomp-3.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tdataregR.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tdset-2.err
+      ${PROJECT_SOURCE_DIR}/errfiles/texceedsubblock.err
+      ${PROJECT_SOURCE_DIR}/errfiles/texceedsubcount.err
+      ${PROJECT_SOURCE_DIR}/errfiles/texceedsubstart.err
+      ${PROJECT_SOURCE_DIR}/errfiles/texceedsubstride.err
+      ${PROJECT_SOURCE_DIR}/errfiles/textlink.err
+      ${PROJECT_SOURCE_DIR}/errfiles/textlinkfar.err
+      ${PROJECT_SOURCE_DIR}/errfiles/textlinksrc.err
+      ${PROJECT_SOURCE_DIR}/errfiles/torderlinks1.err
+      ${PROJECT_SOURCE_DIR}/errfiles/torderlinks2.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tgroup-2.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tperror.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tslink-D.err
   )
 
-  FOREACH (ddl_file ${HDF5_REFERENCE_FILES})
-    SET (ddldest "${PROJECT_BINARY_DIR}/${ddl_file}")
-    #MESSAGE (STATUS " Copying ${ddl_file}")
+  # make test dir
+  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+
+  #
+  # copy test files from source dir to test dir
+  #
+  FOREACH (tst_h5_file ${HDF5_REFERENCE_TEST_FILES})
+    GET_FILENAME_COMPONENT(fname "${tst_h5_file}" NAME)
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${tst_h5_file}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${ddl_file} ${ddldest}
+        ARGS       -E copy_if_different ${tst_h5_file} ${dest}
     )
-  ENDFOREACH (ddl_file ${HDF5_REFERENCE_FILES})
+  ENDFOREACH (tst_h5_file ${HDF5_REFERENCE_TEST_FILES})
 
-  FOREACH (xml_file ${HDF5_XML_REFERENCE_FILES})
-    SET (xmldest "${PROJECT_BINARY_DIR}/${xml_file}")
-    #MESSAGE (STATUS " Copying ${xml_file}")
+  FOREACH (tst_other_file ${HDF5_REFERENCE_FILES})
+    GET_FILENAME_COMPONENT(fname "${tst_other_file}" NAME)
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${tst_other_file}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${xml_file} ${xmldest}
+        ARGS       -E copy_if_different ${tst_other_file} ${dest}
     )
-  ENDFOREACH (xml_file ${HDF5_XML_REFERENCE_FILES})
+  ENDFOREACH (tst_other_file ${HDF5_REFERENCE_FILES})
 
-  FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
+  FOREACH (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES})
+    GET_FILENAME_COMPONENT(fname "${tst_error_file}" NAME)
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${tst_error_file}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file} ${dest}
+        ARGS       -E copy_if_different ${tst_error_file} ${dest}
     )
-  ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  ENDFOREACH (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES})
+
+  #
+  # copy XML test files from source dir to test dir
+  #
+  SET (HDF5_XML_REFERENCE_TEST_FILES
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbitfields.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tenum.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlink.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tloop2.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmany.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-amp.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-apos.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-gt.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-lt.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-quot.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-sp.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnodata.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tobjref.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/topaque.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tref.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tref-escapes.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tref-escapes-at.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstring.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstring-at.h5
+  )
+  SET (HDF5_XML_REFERENCE_FILES
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2A.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray3.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray6.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray7.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tbitfields.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound_complex.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdatareg.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-dtd.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-dtd-2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-dtd-uri.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-nons.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-nons-2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-nons-uri.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-ns.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tempty-ns-2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tenum.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/textlink.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tfpformat.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tgroup.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/thlink.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tloop.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tloop2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tmany.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-amp.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-apos.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnamed_dtype_attr.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-gt.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-lt.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-quot.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tname-sp.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnestedcomp.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnodata.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tobjref.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/topaque.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr1.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr3.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/torderattr4.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tref.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tref-escapes.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tref-escapes-at.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tsaf.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tslink.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstring.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tstring-at.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tudlink.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes3.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes4.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes5.h5.xml
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tvlstr.h5.xml
+  )
 
-  FOREACH (h5_xml_file ${HDF5_XML_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/${h5_xml_file}")
-    #MESSAGE (STATUS " Copying ${h5_xml_file}")
+  FOREACH (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES})
+    GET_FILENAME_COMPONENT(fname "${tst_xml_h5_file}" NAME)
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${tst_xml_h5_file}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_xml_file} ${dest}
+        ARGS       -E copy_if_different ${tst_xml_h5_file} ${dest}
     )
-  ENDFOREACH (h5_xml_file ${HDF5_XML_REFERENCE_TEST_FILES})
+  ENDFOREACH (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES})
   
+  FOREACH (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES})
+    GET_FILENAME_COMPONENT(fname "${tst_xml_other_file}" NAME)
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${tst_xml_other_file}")
+    ADD_CUSTOM_COMMAND (
+        TARGET     h5dump
+        POST_BUILD
+        COMMAND    ${CMAKE_COMMAND}
+        ARGS       -E copy_if_different ${tst_xml_other_file} ${dest}
+    )
+  ENDFOREACH (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES})
+
   # --------------------------------------------------------------------
   # Special file handling
   # --------------------------------------------------------------------
@@ -396,18 +463,18 @@ IF (BUILD_TESTING)
       TARGET     h5dump
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
-      ARGS       -E copy_if_different ${HDF5_TOOLS_SOURCE_DIR}/testfiles/tbin1.ddl ${PROJECT_BINARY_DIR}/tbin1LE.ddl
+      ARGS       -E copy_if_different  ${HDF5_TOOLS_SOURCE_DIR}/testfiles/tbin1.ddl  ${PROJECT_BINARY_DIR}/testfiles/tbin1LE.ddl
   )
   
   IF (WIN32 AND NOT CYGWIN)
     FILE (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp TEST_STREAM)
-    FILE (WRITE ${PROJECT_BINARY_DIR}/tbinregR.exp "${TEST_STREAM}")
+    FILE (WRITE ${PROJECT_BINARY_DIR}/testfiles/tbinregR.exp "${TEST_STREAM}")
   ELSE (WIN32 AND NOT CYGWIN)
     ADD_CUSTOM_COMMAND (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp ${PROJECT_BINARY_DIR}/tbinregR.exp
+        ARGS       -E copy_if_different  ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp  ${PROJECT_BINARY_DIR}/testfiles/tbinregR.exp
     )
   ENDIF (WIN32 AND NOT CYGWIN)
   
@@ -416,71 +483,99 @@ IF (BUILD_TESTING)
   # --------------------------------------------------------------------
   #-- Copy all the HDF5 files from the test directory into the source directory
   SET (HDF5_REFERENCE_PBITS
-      tnofilename-with-packed-bits.ddl
-      tpbitsArray.ddl
-      tpbitsCompound.ddl
-      tpbitsIncomplete.ddl
-      tpbitsLengthExceeded.ddl
-      tpbitsCharLengthExceeded.ddl
-      tpbitsIntLengthExceeded.ddl
-      tpbitsLongLengthExceeded.ddl
-      tpbitsLengthPositive.ddl
-      tpbitsMax.ddl
-      tpbitsMaxExceeded.ddl
-      tpbitsOffsetExceeded.ddl
-      tpbitsCharOffsetExceeded.ddl
-      tpbitsIntOffsetExceeded.ddl
-      tpbitsLongOffsetExceeded.ddl
-      tpbitsOffsetNegative.ddl
-      tpbitsOverlapped.ddl
-      tpbitsSigned.ddl
-      tpbitsUnsigned.ddl
-      tpbitsSignedInt.ddl
-      tpbitsUnsignedInt.ddl
-      tpbitsSignedLong.ddl
-      tpbitsUnsignedLong.ddl
-      tpbitsSignedLongLong.ddl
-      tpbitsUnsignedLongLong.ddl
-      tpbitsSignedWhole.ddl
-      tpbitsUnsignedWhole.ddl
-      tpbitsSignedIntWhole.ddl
-      tpbitsUnsignedIntWhole.ddl
-      tpbitsSignedLongWhole.ddl
-      tpbitsUnsignedLongWhole.ddl
-      tpbitsSignedLongLongWhole.ddl
-      tpbitsUnsignedLongLongWhole.ddl
-      tpbitsSignedLongLongWhole1.ddl
-      tpbitsUnsignedLongLongWhole1.ddl
-      tpbitsSignedLongLongWhole63.ddl
-      tpbitsUnsignedLongLongWhole63.ddl
-      tpbitsSigned4.ddl
-      tpbitsUnsigned4.ddl
-      tpbitsSignedInt8.ddl
-      tpbitsUnsignedInt8.ddl
-      tpbitsSignedLong16.ddl
-      tpbitsUnsignedLong16.ddl
-      tpbitsSignedLongLong32.ddl
-      tpbitsUnsignedLongLong32.ddl
-      tpbitsSigned2.ddl
-      tpbitsUnsigned2.ddl
-      tpbitsSignedInt4.ddl
-      tpbitsUnsignedInt4.ddl
-      tpbitsSignedLong8.ddl
-      tpbitsUnsignedLong8.ddl
-      tpbitsSignedLongLong16.ddl
-      tpbitsUnsignedLongLong16.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tnofilename-with-packed-bits.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsArray.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsCompound.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsIncomplete.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsLengthExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsCharLengthExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsIntLengthExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsLongLengthExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsLengthPositive.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsMax.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsMaxExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsOffsetExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsCharOffsetExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsIntOffsetExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsLongOffsetExceeded.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsOffsetNegative.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsOverlapped.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSigned.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsigned.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedInt.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedInt.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLong.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLong.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLong.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLong.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedIntWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedIntWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLongWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLongWhole.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLongWhole1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLongWhole1.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLongWhole63.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLongWhole63.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSigned4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsigned4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedInt8.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedInt8.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLong16.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLong16.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLong32.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLong32.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSigned2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsigned2.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedInt4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedInt4.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLong8.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLong8.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLong16.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLong16.ddl
+  )
+  SET (HDF5_ERROR_REFERENCE_PBITS
+      ${PROJECT_SOURCE_DIR}/errfiles/tnofilename-with-packed-bits.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsCharLengthExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsCharOffsetExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsIncomplete.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsIntLengthExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsIntOffsetExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsLengthExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsLengthPositive.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsLongLengthExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsLongOffsetExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsMaxExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsOffsetExceeded.err
+      ${PROJECT_SOURCE_DIR}/errfiles/tpbitsOffsetNegative.err
   )
 
   FOREACH (ddl_pbits ${HDF5_REFERENCE_PBITS})
-    SET (ddldest "${PROJECT_BINARY_DIR}/${ddl_pbits}")
-    #MESSAGE (STATUS " Translating ${ddl_pbits}")
+    GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME)
+    SET (ddldest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${ddl_pbits}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
-        ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${ddl_pbits} ${ddldest}
+        ARGS       -E copy_if_different ${ddl_pbits} ${ddldest}
     )
   ENDFOREACH (ddl_pbits ${HDF5_REFERENCE_PBITS})
+
+  FOREACH (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS})
+    GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME)
+    SET (ddldest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #MESSAGE (STATUS " Copying ${ddl_pbits}")
+    ADD_CUSTOM_COMMAND (
+        TARGET     h5dump
+        POST_BUILD
+        COMMAND    ${CMAKE_COMMAND}
+        ARGS       -E copy_if_different ${ddl_pbits} ${ddldest}
+    )
+  ENDFOREACH (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS})
   
 ##############################################################################
 ##############################################################################
@@ -492,6 +587,7 @@ IF (BUILD_TESTING)
     # If using memchecker add tests without using scripts
     IF (HDF5_ENABLE_USING_MEMCHECKER)
       ADD_TEST (NAME H5DUMP-${testname} COMMAND $<TARGET_FILE:h5dump> ${ARGN})
+      SET_TESTS_PROPERTIES (H5DUMP-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       IF (NOT "${last_test}" STREQUAL "")
         SET_TESTS_PROPERTIES (H5DUMP-${testname} PROPERTIES DEPENDS ${last_test})
       ENDIF (NOT "${last_test}" STREQUAL "")
@@ -502,12 +598,13 @@ IF (BUILD_TESTING)
           COMMAND    ${CMAKE_COMMAND}
               -E remove h5dump-${testname}.out h5dump-${testname}.out.err
       )
+      SET_TESTS_PROPERTIES (H5DUMP-clear-h5dump-${testname}-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       ADD_TEST (
           NAME H5DUMP-h5dump-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
               -D "TEST_ARGS:STRING=${ARGN}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_OUTPUT=h5dump-${testname}.out"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_REFERENCE=h5dump-${testname}.txt"
@@ -534,6 +631,7 @@ IF (BUILD_TESTING)
     # If using memchecker add tests without using scripts
     IF (HDF5_ENABLE_USING_MEMCHECKER)
       ADD_TEST (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN})
+      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       IF (NOT ${resultcode} STREQUAL "0")
         SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
       ENDIF (NOT ${resultcode} STREQUAL "0")
@@ -547,12 +645,13 @@ IF (BUILD_TESTING)
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
+      SET_TESTS_PROPERTIES (H5DUMP-clear-${resultfile}-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       ADD_TEST (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
               -D "TEST_ARGS:STRING=${ARGN}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_OUTPUT=${resultfile}.out"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_REFERENCE=${resultfile}.ddl"
@@ -565,8 +664,9 @@ IF (BUILD_TESTING)
   MACRO (ADD_H5_EXPORT_TEST resultfile targetfile resultcode)
     ADD_TEST (
         NAME H5DUMP-output-${resultfile}
-        COMMAND $<TARGET_FILE:h5dump> ${ARGN} ${PROJECT_BINARY_DIR}/${resultfile}.txt ${PROJECT_BINARY_DIR}/${targetfile}
+        COMMAND $<TARGET_FILE:h5dump> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile}.txt ${PROJECT_BINARY_DIR}/testfiles/${targetfile}
     )
+      SET_TESTS_PROPERTIES (H5DUMP-output-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
     IF (NOT "${last_test}" STREQUAL "")
       SET_TESTS_PROPERTIES (H5DUMP-output-${resultfile} PROPERTIES DEPENDS ${last_test})
     ENDIF (NOT "${last_test}" STREQUAL "")
@@ -575,7 +675,7 @@ IF (BUILD_TESTING)
       ADD_TEST (
           NAME H5DUMP-output-cmp-${resultfile}
           COMMAND ${CMAKE_COMMAND}
-                -E compare_files ${PROJECT_BINARY_DIR}/${resultfile}.txt ${PROJECT_BINARY_DIR}/${resultfile}.exp
+                -E compare_files ${PROJECT_BINARY_DIR}/testfiles/${resultfile}.txt ${PROJECT_BINARY_DIR}/testfiles/${resultfile}.exp
       )
       IF (NOT "${last_test}" STREQUAL "")
         SET_TESTS_PROPERTIES (H5DUMP-output-cmp-${resultfile} PROPERTIES DEPENDS ${last_test})
@@ -591,12 +691,13 @@ IF (BUILD_TESTING)
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
+      SET_TESTS_PROPERTIES (H5DUMP-clear-${resultfile}-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       ADD_TEST (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
               -D "TEST_ARGS:STRING=${ARGN}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_OUTPUT=${resultfile}.out"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_REFERENCE=${resultfile}.ddl"
@@ -607,6 +708,31 @@ IF (BUILD_TESTING)
     ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_MASK_TEST file)
 
+  MACRO (ADD_H5ERR_MASK_TEST resultfile resultcode)
+    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      ADD_TEST (
+          NAME H5DUMP-clear-${resultfile}-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove ${resultfile}.out ${resultfile}.out.err
+      )
+      SET_TESTS_PROPERTIES (H5DUMP-clear-${resultfile}-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      ADD_TEST (
+          NAME H5DUMP-${resultfile}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
+              -D "TEST_ARGS:STRING=${ARGN}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+              -D "TEST_OUTPUT=${resultfile}.out"
+              -D "TEST_EXPECT=${resultcode}"
+              -D "TEST_REFERENCE=${resultfile}.ddl"
+              -D "TEST_ERRREF=${resultfile}.err"
+              -D "TEST_MASK_ERROR=true"
+              -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
+      )
+      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-clear-${resultfile}-objects")
+    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5ERR_MASK_TEST file)
+
   MACRO (ADD_XML_SKIP_H5_TEST skipresultfile skipresultcode testtype)
     IF (${testtype} STREQUAL "SKIP")
       IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
@@ -623,6 +749,7 @@ IF (BUILD_TESTING)
   MACRO (ADD_XML_H5_TEST resultfile resultcode)
     IF (HDF5_ENABLE_USING_MEMCHECKER)
       ADD_TEST (NAME H5DUMP-XML-${resultfile} COMMAND $<TARGET_FILE:h5dump> --xml ${ARGN})
+      SET_TESTS_PROPERTIES (H5DUMP-XML-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       IF (NOT ${resultcode} STREQUAL "0")
         SET_TESTS_PROPERTIES (H5DUMP-XML-${resultfile} PROPERTIES WILL_FAIL "true")
       ENDIF (NOT ${resultcode} STREQUAL "0")
@@ -636,12 +763,13 @@ IF (BUILD_TESTING)
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
+      SET_TESTS_PROPERTIES (H5DUMP-XML-clear-${resultfile}-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
       ADD_TEST (
           NAME H5DUMP-XML-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
               -D "TEST_ARGS:STRING=--xml;${ARGN}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_OUTPUT=${resultfile}.out"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_REFERENCE=${resultfile}.xml"
@@ -651,19 +779,9 @@ IF (BUILD_TESTING)
     ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_XML_H5_TEST file)
 
-  # --------------------------------------------------------------------
-  # Determine which filters are available
-  # --------------------------------------------------------------------
-  SET (USE_FILTER_SZIP H5_HAVE_FILTER_SZIP)
-  SET (USE_FILTER_DEFLATE H5_HAVE_FILTER_DEFLATE)
-  SET (USE_FILTER_SHUFFLE H5_HAVE_FILTER_SHUFFLE)
-  SET (USE_FILTER_FLETCHER32 H5_HAVE_FILTER_FLETCHER32)
-  SET (USE_FILTER_NBIT H5_HAVE_FILTER_NBIT)
-  SET (USE_FILTER_SCALEOFFSET H5_HAVE_FILTER_SCALEOFFSET)
-
 ##############################################################################
 ##############################################################################
-###           T H E   T E S T S                                            ###
+###           T H E   T E S T S                                          HDF5_ENABLE_USING_MEMCHECKER  ###
 ##############################################################################
 ##############################################################################
 
@@ -674,6 +792,8 @@ IF (BUILD_TESTING)
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
           h5dump-help.out
+          charsets.out
+          charsets.out.err
           filter_fail.out
           filter_fail.out.err
           packedbits.out
@@ -722,6 +842,12 @@ IF (BUILD_TESTING)
           tattr-3.out.err
           tattr-4_be.out
           tattr-4_be.out.err
+          tattrcontents1.out
+          tattrcontents1.out.err
+          tattrcontents2.out
+          tattrcontents2.out.err
+          tattrintsize.out
+          tattrintsize.out.err
           tattrreg.out
           tattrreg.out.err
           tattrregR.out
@@ -738,6 +864,10 @@ IF (BUILD_TESTING)
           tchar1.out.err
           tchunked.out
           tchunked.out.err
+          tcmpdattrintsize.out
+          tcmpdattrintsize.out.err
+          tcmpdintsize.out
+          tcmpdintsize.out.err
           tcomp-1.out
           tcomp-1.out.err
           tcomp-2.out
@@ -840,6 +970,8 @@ IF (BUILD_TESTING)
           tnamed_dtype_attr.out.err
           tnestcomp-1.out
           tnestcomp-1.out.err
+          tnestedcmpddt.out
+          tnestedcmpddt.out.err
           tnbit.out
           tnbit.out.err
           tno-subset.out
@@ -866,6 +998,14 @@ IF (BUILD_TESTING)
           torderattr3.out.err
           torderattr4.out
           torderattr4.out.err
+          tordercontents1.out
+          tordercontents1.out.err
+          tordercontents2.out
+          tordercontents2.out.err
+          torderlinks1.out
+          torderlinks1.out.err
+          torderlinks2.out
+          torderlinks2.out.err
           tperror.out
           tperror.out.err
           treference.out
@@ -916,7 +1056,10 @@ IF (BUILD_TESTING)
           tvlstr.out.err
           tvms.out
           tvms.out.err
+          twidedisplay.out
+          twidedisplay.out.err
     )
+    SET_TESTS_PROPERTIES (H5DUMP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
     IF (NOT "${last_test}" STREQUAL "")
       SET_TESTS_PROPERTIES (H5DUMP-clearall-objects PROPERTIES DEPENDS ${last_test})
     ENDIF (NOT "${last_test}" STREQUAL "")
@@ -925,26 +1068,33 @@ IF (BUILD_TESTING)
 
   ADD_HELP_TEST(help 0 -h)
 
+  # test for maximum display datasets
+  ADD_H5_TEST (twidedisplay 0 --enable-error-stack -w0 packedbits.h5)
+
   # test for signed/unsigned datasets
   ADD_H5_TEST (packedbits 0 --enable-error-stack packedbits.h5)
+  # test for compound signed/unsigned datasets
+  ADD_H5_TEST (tcmpdintsize 0 --enable-error-stack tcmpdintsize.h5)
+  # test for signed/unsigned attributes
+  ADD_H5_TEST (tattrintsize 0 --enable-error-stack tattrintsize.h5)
+  # test for compound signed/unsigned attributes
+  ADD_H5_TEST (tcmpdattrintsize 0 --enable-error-stack tcmpdattrintsize.h5)
   # test for displaying groups
   ADD_H5_TEST (tgroup-1 0 --enable-error-stack tgroup.h5)
   # test for displaying the selected groups
-  # JIRA HDFFV-7936 ADD_H5_MASK_TEST (tgroup-2 1 --enable-error-stack --group=/g2 --group / -g /y tgroup.h5)
-  # cannot use TEST_MASK_ERROR and --enable-error-stack on this test because group names are similar to version numbers
-  ADD_H5_TEST (tgroup-2 1 --group=/g2 --group / -g /y tgroup.h5)
+  ADD_H5ERR_MASK_TEST (tgroup-2 1 --enable-error-stack --group=/g2 --group / -g /y tgroup.h5)
 
   # test for displaying simple space datasets
   ADD_H5_TEST (tdset-1 0 --enable-error-stack tdset.h5)
   # test for displaying selected datasets
-  ADD_H5_MASK_TEST (tdset-2 1 --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5)
+  ADD_H5ERR_MASK_TEST (tdset-2 1 --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5)
 
   # test for displaying attributes
   ADD_H5_TEST (tattr-1 0 --enable-error-stack tattr.h5)
   # test for displaying the selected attributes of string type and scalar space
-  ADD_H5_TEST (tattr-2 0 --enable-error-stack -a /attr1 --attribute /attr4 --attribute=/attr5 tattr.h5)
+  ADD_H5_TEST (tattr-2 0 --enable-error-stack -a /\\\\/attr1 --attribute /attr4 --attribute=/attr5 tattr.h5)
   # test for header and error messages
-  ADD_H5_MASK_TEST (tattr-3 1 --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5)
+  ADD_H5ERR_MASK_TEST (tattr-3 1 --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5)
   # test for displaying attributes in shared datatype (also in group and dataset)
   ADD_H5_TEST (tnamed_dtype_attr 0 --enable-error-stack tnamed_dtype_attr.h5)
   # test for displaying at least 9 attributes on root from a be machine
@@ -957,7 +1107,7 @@ IF (BUILD_TESTING)
   ADD_H5_TEST (tslink-2 0 --enable-error-stack -l slink2 tslink.h5)
   ADD_H5_TEST (tudlink-2 0 --enable-error-stack -l udlink2 tudlink.h5)
   # test for displaying dangling soft links
-  ADD_H5_MASK_TEST (tslink-D 0 --enable-error-stack -d /slink1 tslink.h5)
+  ADD_H5ERR_MASK_TEST (tslink-D 0 --enable-error-stack -d /slink1 tslink.h5)
 
   # tests for hard links
   ADD_H5_TEST (thlink-1 0 --enable-error-stack thlink.h5)
@@ -971,18 +1121,16 @@ IF (BUILD_TESTING)
   # test for named data types
   ADD_H5_TEST (tcomp-2 0 --enable-error-stack -t /type1 --datatype /type2 --datatype=/group1/type3 tcompound.h5)
   # test for unamed type 
-  # JIRA HDFFV-7936 ADD_H5_TEST (tcomp-3 0 "--enable-error-stack;-t;/#6632;-g;/group2;tcompound.h5")
-  ADD_H5_TEST (tcomp-3 0 "-t;/#6632;-g;/group2;tcompound.h5")
+  ADD_H5ERR_MASK_TEST (tcomp-3 0 "--enable-error-stack;-t;/#6632;-g;/group2;tcompound.h5")
   # test complicated compound datatype
   ADD_H5_TEST (tcomp-4 0 --enable-error-stack tcompound_complex.h5)
 
   #test for the nested compound type
   ADD_H5_TEST (tnestcomp-1 0 --enable-error-stack tnestedcomp.h5)
+  ADD_H5_TEST (tnestedcmpddt 0 --enable-error-stack tnestedcmpddt.h5)
 
   # test for options
-  # JIRA HDFFV-7936 ADD_H5_MASK_TEST (tall-1 0 --enable-error-stack tall.h5)
-  # cannot use TEST_MASK_ERROR and --enable-error-stack on this test because group/dataset names are similar to version numbers
-  ADD_H5_TEST (tall-1 0 tall.h5)
+  ADD_H5ERR_MASK_TEST (tall-1 0 --enable-error-stack tall.h5)
   ADD_H5_TEST (tall-2 0 --enable-error-stack --header -g /g1/g1.1 -a attr2 tall.h5)
   ADD_H5_TEST (tall-3 0 --enable-error-stack -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5)
 
@@ -1009,8 +1157,7 @@ IF (BUILD_TESTING)
   # test for files with array data
   ADD_H5_TEST (tarray1 0 --enable-error-stack tarray1.h5)
   # # added for bug# 2092 - tarray1_big.h5
-  # JIRA HDFFV-7936 ADD_H5_TEST (tarray1_big 0 --enable-error-stack -R tarray1_big.h5)
-  ADD_H5_TEST (tarray1_big 0 -R tarray1_big.h5)
+  ADD_H5ERR_MASK_TEST (tarray1_big 0 --enable-error-stack -R tarray1_big.h5)
   ADD_H5_TEST (tarray2 0 --enable-error-stack tarray2.h5)
   ADD_H5_TEST (tarray3 0 --enable-error-stack tarray3.h5)
   ADD_H5_TEST (tarray4 0 --enable-error-stack tarray4.h5)
@@ -1039,13 +1186,10 @@ IF (BUILD_TESTING)
   ADD_H5_TEST (tlarge_objname 0 --enable-error-stack -w157 tlarge_objname.h5)
 
   # test '-A' to suppress data but print attr's
-  # JIRA HDFFV-7936 ADD_H5_MASK_TEST (tall-2A 0 --enable-error-stack -A tall.h5)
-  # cannot use TEST_MASK_ERROR and --enable-error-stack on this test because group/dataset names are similar to version numbers
-  ADD_H5_TEST (tall-2A 0 -A tall.h5)
+  ADD_H5ERR_MASK_TEST (tall-2A 0 --enable-error-stack -A tall.h5)
 
   # test '-r' to print attributes in ASCII instead of decimal
-  # JIRA HDFFV-7936 ADD_H5_TEST (tall-2B 0 --enable-error-stack -A -r tall.h5)
-  ADD_H5_TEST (tall-2B 0 -A -r tall.h5)
+  ADD_H5ERR_MASK_TEST (tall-2B 0 --enable-error-stack -A -r tall.h5)
 
   # test Subsetting
   ADD_H5_TEST (tall-4s 0 --enable-error-stack --dataset=/g1/g1.1/dset1.1.1 --start=1,1 --stride=2,3 --count=3,2 --block=1,1 tall.h5)
@@ -1056,16 +1200,23 @@ IF (BUILD_TESTING)
   # test printing characters in ASCII instead of decimal
   ADD_H5_TEST (tchar1 0 --enable-error-stack -r tchar.h5)
 
+  # test datatypes in ASCII and UTF8
+  ADD_H5_TEST (charsets 0 --enable-error-stack charsets.h5)
+
   # rev. 2004
   # tests for super block
   ADD_H5_TEST (tboot1 0 --enable-error-stack -H -B -d dset tfcontents1.h5)
   ADD_H5_TEST (tboot2 0 --enable-error-stack -B tfcontents2.h5)
 
   # test -p with a non existing dataset
-  ADD_H5_MASK_TEST (tperror 1 --enable-error-stack -p -d bogus tfcontents1.h5)
+  ADD_H5ERR_MASK_TEST (tperror 1 --enable-error-stack -p -d bogus tfcontents1.h5)
 
   # test for file contents
   ADD_H5_TEST (tcontents 0 --enable-error-stack -n tfcontents1.h5)
+  ADD_H5_TEST (tordercontents1 0 --enable-error-stack -n --sort_by=name --sort_order=ascending tfcontents1.h5)
+  ADD_H5_TEST (tordercontents2 0 --enable-error-stack -n --sort_by=name --sort_order=descending tfcontents1.h5)
+  ADD_H5_TEST (tattrcontents1 0 --enable-error-stack -n 1 --sort_order=ascending tall.h5)
+  ADD_H5_TEST (tattrcontents2 0 --enable-error-stack -n 1 --sort_order=descending tall.h5)
 
   # tests for storage layout
   # compact
@@ -1114,53 +1265,25 @@ IF (BUILD_TESTING)
 
   # tests for filters
   # SZIP
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP)
-  ADD_SKIP_H5_TEST (tszip 0 ${TESTTYPE} --enable-error-stack -H -p -d szip tfilters.h5)
+  ADD_H5_TEST (tszip 0 --enable-error-stack -H -p -d szip tfilters.h5)
 
   # deflate
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
-  ADD_SKIP_H5_TEST (tdeflate 0 ${TESTTYPE} --enable-error-stack -H -p -d deflate tfilters.h5)
+  ADD_H5_TEST (tdeflate 0 --enable-error-stack -H -p -d deflate tfilters.h5)
 
   # shuffle
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SHUFFLE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SHUFFLE)
-  ADD_SKIP_H5_TEST (tshuffle 0 ${TESTTYPE} --enable-error-stack -H -p -d shuffle tfilters.h5)
+  ADD_H5_TEST (tshuffle 0 --enable-error-stack -H -p -d shuffle tfilters.h5)
 
   # fletcher32
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_FLETCHER32)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_FLETCHER32)
-  ADD_SKIP_H5_TEST (tfletcher32 0 ${TESTTYPE} --enable-error-stack -H -p -d fletcher32  tfilters.h5)
+  ADD_H5_TEST (tfletcher32 0 --enable-error-stack -H -p -d fletcher32  tfilters.h5)
 
   # nbit
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_NBIT)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_NBIT)
-  ADD_SKIP_H5_TEST (tnbit 0 ${TESTTYPE} --enable-error-stack -H -p -d nbit  tfilters.h5)
+  ADD_H5_TEST (tnbit 0 --enable-error-stack -H -p -d nbit  tfilters.h5)
 
   # scaleoffset
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SCALEOFFSET)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SCALEOFFSET)
-  ADD_SKIP_H5_TEST (tscaleoffset 0 ${TESTTYPE} --enable-error-stack -H -p -d scaleoffset  tfilters.h5)
+  ADD_H5_TEST (tscaleoffset 0 --enable-error-stack -H -p -d scaleoffset  tfilters.h5)
 
   # all
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
-  ADD_SKIP_H5_TEST (tallfilters 0 ${TESTTYPE} --enable-error-stack -H -p -d all  tfilters.h5)
+  ADD_H5_TEST (tallfilters 0 --enable-error-stack -H -p -d all  tfilters.h5)
 
   # user defined
   ADD_H5_TEST (tuserfilter 0 --enable-error-stack -H  -p -d myfilter  tfilters.h5)
@@ -1191,20 +1314,32 @@ IF (BUILD_TESTING)
 
   # NATIVE default. the NATIVE test can be validated with h5import/h5diff
   ADD_H5_TEST (tbin1 0 --enable-error-stack -d integer -o out1.bin -b tbinary.h5)
+  IF (NOT "${last_test}" STREQUAL "")
+    SET_TESTS_PROPERTIES (H5DUMP-tbin1 PROPERTIES DEPENDS ${last_test})
+  ENDIF (NOT "${last_test}" STREQUAL "")
+  SET (last_test "H5DUMP-tbin1")
+  
   IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5DUMP-tbin1 PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5DUMP-tbin1")
+    ADD_TEST (NAME H5DUMP-clear-out1D COMMAND ${CMAKE_COMMAND} -E remove ./testfiles/out1D.h5)
+    SET_TESTS_PROPERTIES (H5DUMP-clear-out1D PROPERTIES DEPENDS H5DUMP-tbin1)
+    ADD_TEST (NAME H5DUMP-h5import-out1D COMMAND h5import out1.bin -c tbin1.out -o out1D.h5)
+    SET_TESTS_PROPERTIES (H5DUMP-h5import-out1D PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    SET_TESTS_PROPERTIES (H5DUMP-h5import-out1D PROPERTIES DEPENDS H5DUMP-clear-out1D)
+    ADD_TEST (NAME H5DUMP-h5diff-out1D COMMAND h5diff tbinary.h5 out1D.h5 /integer /integer)
+    SET_TESTS_PROPERTIES (H5DUMP-h5diff-out1D PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    SET_TESTS_PROPERTIES (H5DUMP-h5diff-out1D PROPERTIES DEPENDS H5DUMP-h5import-out1D)
+    SET (last_test "H5DUMP-h5diff-out1D")
   ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
   
-  ADD_TEST (NAME H5DUMP-clear-out1 COMMAND ${CMAKE_COMMAND} -E remove out1.h5)
+  ADD_TEST (NAME H5DUMP-clear-out1 COMMAND ${CMAKE_COMMAND} -E remove ./testfiles/out1.h5)
   IF (NOT "${last_test}" STREQUAL "")
     SET_TESTS_PROPERTIES (H5DUMP-clear-out1 PROPERTIES DEPENDS ${last_test})
   ENDIF (NOT "${last_test}" STREQUAL "")
   ADD_TEST (NAME H5DUMP-h5import-out1 COMMAND h5import out1.bin -c out3.h5import -o out1.h5)
+  SET_TESTS_PROPERTIES (H5DUMP-h5import-out1 PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
   SET_TESTS_PROPERTIES (H5DUMP-h5import-out1 PROPERTIES DEPENDS H5DUMP-clear-out1)
   ADD_TEST (NAME H5DUMP-h5diff-out1 COMMAND h5diff tbinary.h5 out1.h5 /integer /integer)
+  SET_TESTS_PROPERTIES (H5DUMP-h5diff-out1 PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
   SET_TESTS_PROPERTIES (H5DUMP-h5diff-out1 PROPERTIES DEPENDS H5DUMP-h5import-out1)
   SET (last_test "H5DUMP-h5diff-out1")
 
@@ -1218,20 +1353,32 @@ IF (BUILD_TESTING)
 
   # the NATIVE test can be validated with h5import/h5diff
   ADD_H5_TEST (tbin3 0 --enable-error-stack -d integer -o out3.bin -b NATIVE tbinary.h5)
+  IF (NOT "${last_test}" STREQUAL "")
+    SET_TESTS_PROPERTIES (H5DUMP-tbin3 PROPERTIES DEPENDS ${last_test})
+  ENDIF (NOT "${last_test}" STREQUAL "")
+  SET (last_test "H5DUMP-tbin3")
+   
   IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5DUMP-tbin3 PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5DUMP-tbin3")
+    ADD_TEST (NAME H5DUMP-clear-out3D COMMAND ${CMAKE_COMMAND} -E remove ./testfiles/out3D.h5)
+    SET_TESTS_PROPERTIES (H5DUMP-clear-out3D PROPERTIES DEPENDS H5DUMP-tbin3)
+    ADD_TEST (NAME H5DUMP-h5import-out3D COMMAND h5import out3.bin -c tbin3.out -o out3D.h5)
+    SET_TESTS_PROPERTIES (H5DUMP-h5import-out3D PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    SET_TESTS_PROPERTIES (H5DUMP-h5import-out3D PROPERTIES DEPENDS H5DUMP-clear-out3D)
+    ADD_TEST (NAME H5DUMP-h5diff-out3D COMMAND h5diff tbinary.h5 out3D.h5 /integer /integer -q)
+    SET_TESTS_PROPERTIES (H5DUMP-h5diff-out3D PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    SET_TESTS_PROPERTIES (H5DUMP-h5diff-out3D PROPERTIES DEPENDS H5DUMP-h5import-out3D)
+    SET (last_test "H5DUMP-h5diff-out3D")
   ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
   
-  ADD_TEST (NAME H5DUMP-clear-out3 COMMAND ${CMAKE_COMMAND} -E remove out3.h5)
+  ADD_TEST (NAME H5DUMP-clear-out3 COMMAND ${CMAKE_COMMAND} -E remove ./testfiles/out3.h5)
   IF (NOT "${last_test}" STREQUAL "")
     SET_TESTS_PROPERTIES (H5DUMP-clear-out3 PROPERTIES DEPENDS ${last_test})
   ENDIF (NOT "${last_test}" STREQUAL "")
   ADD_TEST (NAME H5DUMP-h5import-out3 COMMAND h5import out3.bin -c out3.h5import -o out3.h5)
+  SET_TESTS_PROPERTIES (H5DUMP-h5import-out3 PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
   SET_TESTS_PROPERTIES (H5DUMP-h5import-out3 PROPERTIES DEPENDS H5DUMP-clear-out3)
   ADD_TEST (NAME H5DUMP-h5diff-out3 COMMAND h5diff tbinary.h5 out3.h5 /integer /integer -q)
+  SET_TESTS_PROPERTIES (H5DUMP-h5diff-out3 PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
   SET_TESTS_PROPERTIES (H5DUMP-h5diff-out3 PROPERTIES DEPENDS H5DUMP-h5import-out3)
   SET (last_test "H5DUMP-h5diff-out3")
 
@@ -1257,19 +1404,17 @@ IF (BUILD_TESTING)
             out1.h5
             out3.h5
     )
+    SET_TESTS_PROPERTIES (H5DUMP-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    IF (NOT "${last_test}" STREQUAL "")
+      SET_TESTS_PROPERTIES (H5DUMP-clear-objects PROPERTIES DEPENDS ${last_test})
+    ENDIF (NOT "${last_test}" STREQUAL "")
+    SET (last_test "H5DUMP-clear-objects")
   ENDIF (NOT HDF5_NOCLEANUP)
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (H5DUMP-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "H5DUMP-clear-objects")
 
   # test for dataset region references 
   ADD_H5_TEST (tdatareg 0 --enable-error-stack tdatareg.h5)
-  # JIRA HDFFV-7936 ADD_H5_TEST (tdataregR 0 --enable-error-stack -R tdatareg.h5)
-  ADD_H5_TEST (tdataregR 0 -R tdatareg.h5)
-  ADD_H5_TEST (tattrreg 0 --enable-error-stack tattrreg.h5)
-  # JIRA HDFFV-7936 ADD_H5_TEST (tattrregR 0 --enable-error-stack -R tattrreg.h5)
-  ADD_H5_TEST (tattrregR 0 -R tattrreg.h5)
+  ADD_H5ERR_MASK_TEST (tdataregR 0 --enable-error-stack -R tdatareg.h5)
+  ADD_H5ERR_MASK_TEST (tattrregR 0 -R --enable-error-stack tattrreg.h5)
   ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 --enable-error-stack -d /Dataset1 -s 0 -R -y -o)
 
   # tests for group creation order
@@ -1286,20 +1431,22 @@ IF (BUILD_TESTING)
   ADD_H5_TEST (torderattr3 0 --enable-error-stack -H --sort_by=creation_order --sort_order=ascending torderattr.h5)
   ADD_H5_TEST (torderattr4 0 --enable-error-stack -H --sort_by=creation_order --sort_order=descending torderattr.h5)
 
+  # tests for link references and order
+  ADD_H5ERR_MASK_TEST (torderlinks1 0 --enable-error-stack --sort_by=name --sort_order=ascending tfcontents1.h5)
+  ADD_H5ERR_MASK_TEST (torderlinks2 0 --enable-error-stack --sort_by=name --sort_order=descending tfcontents1.h5)
+  
   # tests for floating point user defined printf format
   ADD_H5_TEST (tfpformat 0 --enable-error-stack -m %.7f tfpformat.h5)
 
   # tests for traversal of external links
-  # JIRA HDFFV-7936 ADD_H5_TEST (textlinksrc 0 --enable-error-stack textlinksrc.h5)
-  ADD_H5_TEST (textlinksrc 0 textlinksrc.h5)
-  # JIRA HDFFV-7936 ADD_H5_TEST (textlinkfar 0 --enable-error-stack textlinkfar.h5)
-  ADD_H5_TEST (textlinkfar 0 textlinkfar.h5)
+  ADD_H5ERR_MASK_TEST (textlinksrc 0 --enable-error-stack textlinksrc.h5)
+  ADD_H5ERR_MASK_TEST (textlinkfar 0 --enable-error-stack textlinkfar.h5)
 
   # test for dangling external links
-  ADD_H5_MASK_TEST (textlink 0 --enable-error-stack textlink.h5)
+  ADD_H5ERR_MASK_TEST (textlink 0 --enable-error-stack textlink.h5)
 
   # test for error stack display (BZ2048)
-  ADD_H5_MASK_TEST (filter_fail 1 --enable-error-stack filter_fail.h5)
+  ADD_H5ERR_MASK_TEST (filter_fail 1 --enable-error-stack filter_fail.h5)
 
   # test for -o -y for dataset with attributes
   ADD_H5_TEST (tall-6 0 --enable-error-stack -y -o data -d /g1/g1.1/dset1.1.1 tall.h5)
@@ -1418,6 +1565,7 @@ IF (BUILD_TESTING)
           tpbitsUnsignedLongLong16.out
           tpbitsUnsignedLongLong16.out.err
     )
+    SET_TESTS_PROPERTIES (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
     IF (NOT "${last_test}" STREQUAL "")
       SET_TESTS_PROPERTIES (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES DEPENDS ${last_test})
     ENDIF (NOT "${last_test}" STREQUAL "")
@@ -1638,6 +1786,7 @@ IF (BUILD_TESTING)
           tvlstr.h5.out
           tvlstr.h5.out.err
     )
+    SET_TESTS_PROPERTIES (H5DUMP-XML-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
     IF (NOT "${last_test}" STREQUAL "")
       SET_TESTS_PROPERTIES (H5DUMP-XML-clearall-objects PROPERTIES DEPENDS ${last_test})
     ENDIF (NOT "${last_test}" STREQUAL "")
@@ -1745,11 +1894,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5dump ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5dump
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5dump/Makefile.am b/tools/h5dump/Makefile.am
index 97d81c2..f80d12e 100644
--- a/tools/h5dump/Makefile.am
+++ b/tools/h5dump/Makefile.am
@@ -25,7 +25,7 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG=h5dumpgentest
-TEST_SCRIPT=testh5dump.sh testh5dumpxml.sh
+TEST_SCRIPT=testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh
 
 check_PROGRAMS=$(TEST_PROG) binread
 check_SCRIPTS=$(TEST_SCRIPT)
@@ -46,6 +46,6 @@ h5dump_SOURCES=h5dump.c h5dump_ddl.c h5dump_xml.c
 # Temporary files.  *.h5 are generated by h5dumpgentest.  They should
 # copied to the testfiles/ directory if update is required.
 CHECK_CLEANFILES+=*.h5 *.bin
-DISTCLEANFILES=testh5dump.sh
+DISTCLEANFILES=testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh
 
 include $(top_srcdir)/config/conclude.am
diff --git a/tools/h5dump/Makefile.in b/tools/h5dump/Makefile.in
index 9d46557..6b4a6e6 100644
--- a/tools/h5dump/Makefile.in
+++ b/tools/h5dump/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,20 +68,22 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/testh5dump.sh.in $(srcdir)/testh5dumpxml.sh.in \
+	$(srcdir)/testh5dump.sh.in $(srcdir)/testh5dumppbits.sh.in \
+	$(srcdir)/testh5dumpxml.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 check_PROGRAMS = $(am__EXEEXT_1) binread$(EXEEXT)
 bin_PROGRAMS = h5dump$(EXEEXT)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = tools/h5dump
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES = testh5dump.sh testh5dumpxml.sh
+CONFIG_CLEAN_FILES = testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)"
 am__EXEEXT_1 = h5dumpgentest$(EXEEXT)
@@ -74,9 +92,10 @@ binread_SOURCES = binread.c
 binread_OBJECTS = binread.$(OBJEXT)
 binread_LDADD = $(LDADD)
 binread_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 am_h5dump_OBJECTS = h5dump.$(OBJEXT) h5dump_ddl.$(OBJEXT) \
 	h5dump_xml.$(OBJEXT)
 h5dump_OBJECTS = $(am_h5dump_OBJECTS)
@@ -89,6 +108,18 @@ h5dumpgentest_SOURCES = h5dumpgentest.c
 h5dumpgentest_OBJECTS = h5dumpgentest.$(OBJEXT)
 h5dumpgentest_LDADD = $(LDADD)
 h5dumpgentest_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -99,30 +130,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = binread.c $(h5dump_SOURCES) h5dumpgentest.c
 DIST_SOURCES = binread.c $(h5dump_SOURCES) h5dumpgentest.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -140,12 +174,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -412,7 +443,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG = h5dumpgentest
-TEST_SCRIPT = testh5dump.sh testh5dumpxml.sh
+TEST_SCRIPT = testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh
 check_SCRIPTS = $(TEST_SCRIPT)
 SCRIPT_DEPEND = h5dump$(EXEEXT)
 
@@ -424,7 +455,7 @@ LDADD = $(LIBH5TOOLS) $(LIBHDF5)
 
 # Source files for the program
 h5dump_SOURCES = h5dump.c h5dump_ddl.c h5dump_xml.c
-DISTCLEANFILES = testh5dump.sh
+DISTCLEANFILES = testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
 # These will be filled in automatically for the most part (e.g.,
@@ -437,6 +468,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -466,6 +501,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -477,12 +513,17 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 testh5dump.sh: $(top_builddir)/config.status $(srcdir)/testh5dump.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+testh5dumppbits.sh: $(top_builddir)/config.status $(srcdir)/testh5dumppbits.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 testh5dumpxml.sh: $(top_builddir)/config.status $(srcdir)/testh5dumpxml.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -531,13 +572,13 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-binread$(EXEEXT): $(binread_OBJECTS) $(binread_DEPENDENCIES) 
+binread$(EXEEXT): $(binread_OBJECTS) $(binread_DEPENDENCIES) $(EXTRA_binread_DEPENDENCIES) 
 	@rm -f binread$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(binread_OBJECTS) $(binread_LDADD) $(LIBS)
-h5dump$(EXEEXT): $(h5dump_OBJECTS) $(h5dump_DEPENDENCIES) 
+h5dump$(EXEEXT): $(h5dump_OBJECTS) $(h5dump_DEPENDENCIES) $(EXTRA_h5dump_DEPENDENCIES) 
 	@rm -f h5dump$(EXEEXT)
 	$(AM_V_CCLD)$(h5dump_LINK) $(h5dump_OBJECTS) $(h5dump_LDADD) $(LIBS)
-h5dumpgentest$(EXEEXT): $(h5dumpgentest_OBJECTS) $(h5dumpgentest_DEPENDENCIES) 
+h5dumpgentest$(EXEEXT): $(h5dumpgentest_OBJECTS) $(h5dumpgentest_DEPENDENCIES) $(EXTRA_h5dumpgentest_DEPENDENCIES) 
 	@rm -f h5dumpgentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5dumpgentest_OBJECTS) $(h5dumpgentest_LDADD) $(LIBS)
 
@@ -556,26 +597,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -632,6 +670,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -684,10 +736,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -775,7 +832,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -804,7 +861,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -830,7 +887,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -854,7 +911,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -864,7 +921,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -954,7 +1011,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -984,7 +1041,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5dump/errfiles/filter_fail.err b/tools/h5dump/errfiles/filter_fail.err
new file mode 100644
index 0000000..8f0f990
--- /dev/null
+++ b/tools/h5dump/errfiles/filter_fail.err
@@ -0,0 +1,21 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Dread(): can't read data
+    major: Dataset
+    minor: Read failed
+  #001: (file name) line (number) in H5D__read(): can't read data
+    major: Dataset
+    minor: Read failed
+  #002: (file name) line (number) in H5D__chunk_read(): unable to read raw data chunk
+    major: Low-level I/O
+    minor: Read failed
+  #003: (file name) line (number) in H5D__chunk_lock(): data pipeline read failed
+    major: Data filters
+    minor: Filter operation failed
+  #004: (file name) line (number) in H5Z_pipeline(): required filter 'filter_fail_test' is not registered
+    major: Data filters
+    minor: Read failed
+h5dump error: unable to print data
+H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs):
+  #000: (file name) line (number) in h5tools_dump_simple_dset(): H5Dread failed
+    major: Failure in tools library
+    minor: error in function
diff --git a/tools/h5dump/errfiles/tall-1.err b/tools/h5dump/errfiles/tall-1.err
new file mode 100644
index 0000000..ba691d0
--- /dev/null
+++ b/tools/h5dump/errfiles/tall-1.err
@@ -0,0 +1,25 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile'
+    major: Links
+    minor: Unable to open file
diff --git a/tools/h5dump/errfiles/tall-2A.err b/tools/h5dump/errfiles/tall-2A.err
new file mode 100644
index 0000000..ba691d0
--- /dev/null
+++ b/tools/h5dump/errfiles/tall-2A.err
@@ -0,0 +1,25 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile'
+    major: Links
+    minor: Unable to open file
diff --git a/tools/h5dump/errfiles/tall-2B.err b/tools/h5dump/errfiles/tall-2B.err
new file mode 100644
index 0000000..ba691d0
--- /dev/null
+++ b/tools/h5dump/errfiles/tall-2B.err
@@ -0,0 +1,25 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile'
+    major: Links
+    minor: Unable to open file
diff --git a/tools/h5dump/errfiles/tarray1_big.err b/tools/h5dump/errfiles/tarray1_big.err
new file mode 100644
index 0000000..edfe0df
--- /dev/null
+++ b/tools/h5dump/errfiles/tarray1_big.err
@@ -0,0 +1,67 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs):
+  #000: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
+  #001: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
+  #002: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
diff --git a/tools/h5dump/errfiles/tattr-3.err b/tools/h5dump/errfiles/tattr-3.err
new file mode 100644
index 0000000..ce8ddda
--- /dev/null
+++ b/tools/h5dump/errfiles/tattr-3.err
@@ -0,0 +1,8 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Aopen(): unable to load attribute info from object header for attribute: 'attr'
+    major: Attribute
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5O_attr_open_by_name(): can't locate attribute: 'attr'
+    major: Attribute
+    minor: Object not found
+h5dump error: unable to open attribute "attr"
diff --git a/tools/h5dump/errfiles/tattrregR.err b/tools/h5dump/errfiles/tattrregR.err
new file mode 100644
index 0000000..4dca3ae
--- /dev/null
+++ b/tools/h5dump/errfiles/tattrregR.err
@@ -0,0 +1,45 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs):
+  #000: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
+  #001: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
diff --git a/tools/h5dump/errfiles/tcomp-3.err b/tools/h5dump/errfiles/tcomp-3.err
new file mode 100644
index 0000000..ee47ee5
--- /dev/null
+++ b/tools/h5dump/errfiles/tcomp-3.err
@@ -0,0 +1,16 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Topen2(): not found
+    major: Datatype
+    minor: Object not found
+  #001: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5G_loc_find_cb(): object '#6632' doesn't exist
+    major: Symbol table
+    minor: Object not found
diff --git a/tools/h5dump/errfiles/tdataregR.err b/tools/h5dump/errfiles/tdataregR.err
new file mode 100644
index 0000000..4dca3ae
--- /dev/null
+++ b/tools/h5dump/errfiles/tdataregR.err
@@ -0,0 +1,45 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Rdereference(): unable to dereference object
+    major: References
+    minor: Unable to initialize object
+  #001: (file name) line (number) in H5R_dereference(): Unable to read dataset region information
+    major: References
+    minor: Read failed
+  #002: (file name) line (number) in H5HG_read(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #003: (file name) line (number) in H5HG_protect(): unable to protect global heap
+    major: Heap
+    minor: Unable to protect metadata
+  #004: (file name) line (number) in H5AC_protect(): H5C_protect() failed.
+    major: Object cache
+    minor: Unable to protect metadata
+  #005: (file name) line (number) in H5C_protect(): incorrect cache entry type
+    major: Object cache
+    minor: Inappropriate type
+H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs):
+  #000: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
+  #001: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed
+    major: Failure in tools library
+    minor: error in function
diff --git a/tools/h5dump/errfiles/tdset-2.err b/tools/h5dump/errfiles/tdset-2.err
new file mode 100644
index 0000000..d9b92f3
--- /dev/null
+++ b/tools/h5dump/errfiles/tdset-2.err
@@ -0,0 +1,33 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Dopen2(): not found
+    major: Dataset
+    minor: Object not found
+  #001: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5G_loc_find_cb(): object 'dset3' doesn't exist
+    major: Symbol table
+    minor: Object not found
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Lget_info(): unable to get link info
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5L_get_info(): name doesn't exist
+    major: Symbol table
+    minor: Object already exists
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
+    major: Symbol table
+    minor: Object not found
+h5dump error: unable to get link info from "dset3"
diff --git a/tools/h5dump/errfiles/texceedsubblock.err b/tools/h5dump/errfiles/texceedsubblock.err
new file mode 100644
index 0000000..4c87ab9
--- /dev/null
+++ b/tools/h5dump/errfiles/texceedsubblock.err
@@ -0,0 +1 @@
+h5dump error: number of block dims (2) exceed dataset dims (1)
diff --git a/tools/h5dump/errfiles/texceedsubcount.err b/tools/h5dump/errfiles/texceedsubcount.err
new file mode 100644
index 0000000..de1c9d1
--- /dev/null
+++ b/tools/h5dump/errfiles/texceedsubcount.err
@@ -0,0 +1 @@
+h5dump error: number of count dims (2) exceed dataset dims (1)
diff --git a/tools/h5dump/errfiles/texceedsubstart.err b/tools/h5dump/errfiles/texceedsubstart.err
new file mode 100644
index 0000000..4555224
--- /dev/null
+++ b/tools/h5dump/errfiles/texceedsubstart.err
@@ -0,0 +1 @@
+h5dump error: number of start dims (2) exceed dataset dims (1)
diff --git a/tools/h5dump/errfiles/texceedsubstride.err b/tools/h5dump/errfiles/texceedsubstride.err
new file mode 100644
index 0000000..32d5725
--- /dev/null
+++ b/tools/h5dump/errfiles/texceedsubstride.err
@@ -0,0 +1 @@
+h5dump error: number of stride dims (2) exceed dataset dims (1)
diff --git a/tools/h5dump/errfiles/textlink.err b/tools/h5dump/errfiles/textlink.err
new file mode 100644
index 0000000..03c0550
--- /dev/null
+++ b/tools/h5dump/errfiles/textlink.err
@@ -0,0 +1,50 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'filename', temp_file_name = 'filename'
+    major: Links
+    minor: Unable to open file
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'anotherfile', temp_file_name = 'anotherfile'
+    major: Links
+    minor: Unable to open file
diff --git a/tools/h5dump/errfiles/textlinkfar.err b/tools/h5dump/errfiles/textlinkfar.err
new file mode 100644
index 0000000..969e17c
--- /dev/null
+++ b/tools/h5dump/errfiles/textlinkfar.err
@@ -0,0 +1,243 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #008: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #009: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #010: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #011: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #012: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #013: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link
+    major: Symbol table
+    minor: Object not found
+  #014: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #015: (file name) line (number) in H5G_traverse_slink_cb(): component not found
+    major: Symbol table
+    minor: Object not found
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #005: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #006: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #007: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #008: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #012: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #013: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #014: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #015: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #019: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #020: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #021: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #022: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #026: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #027: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #028: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #029: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #031: (file name) line (number) in H5G__traverse_special(): too many links
+    major: Links
+    minor: Too many soft links in path
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #005: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #006: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #007: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #008: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #012: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #013: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #014: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #015: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #019: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #020: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #021: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #022: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #026: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #027: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #028: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #029: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #031: (file name) line (number) in H5G__traverse_special(): too many links
+    major: Links
+    minor: Too many soft links in path
diff --git a/tools/h5dump/errfiles/textlinksrc.err b/tools/h5dump/errfiles/textlinksrc.err
new file mode 100644
index 0000000..969e17c
--- /dev/null
+++ b/tools/h5dump/errfiles/textlinksrc.err
@@ -0,0 +1,243 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #008: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #009: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #010: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #011: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #012: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #013: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link
+    major: Symbol table
+    minor: Object not found
+  #014: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #015: (file name) line (number) in H5G_traverse_slink_cb(): component not found
+    major: Symbol table
+    minor: Object not found
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #005: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #006: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #007: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #008: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #012: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #013: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #014: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #015: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #019: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #020: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #021: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #022: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #026: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #027: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #028: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #029: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #031: (file name) line (number) in H5G__traverse_special(): too many links
+    major: Links
+    minor: Too many soft links in path
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #005: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #006: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #007: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #008: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #012: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #013: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #014: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #015: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #019: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #020: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #021: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #022: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #026: (file name) line (number) in H5L_extern_traverse(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #027: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #028: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #029: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #031: (file name) line (number) in H5G__traverse_special(): too many links
+    major: Links
+    minor: Too many soft links in path
diff --git a/tools/h5dump/errfiles/tgroup-2.err b/tools/h5dump/errfiles/tgroup-2.err
new file mode 100644
index 0000000..3659b5c
--- /dev/null
+++ b/tools/h5dump/errfiles/tgroup-2.err
@@ -0,0 +1,20 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Gopen2(): unable to open group
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5G__open_name(): group not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #005: (file name) line (number) in H5G_loc_find_cb(): object 'y' doesn't exist
+    major: Symbol table
+    minor: Object not found
+h5dump error: unable to open group "/y"
diff --git a/tools/h5dump/errfiles/tnofilename-with-packed-bits.err b/tools/h5dump/errfiles/tnofilename-with-packed-bits.err
new file mode 100644
index 0000000..84a7011
--- /dev/null
+++ b/tools/h5dump/errfiles/tnofilename-with-packed-bits.err
@@ -0,0 +1 @@
+h5dump error: missing file name
diff --git a/tools/h5dump/errfiles/torderlinks1.err b/tools/h5dump/errfiles/torderlinks1.err
new file mode 100644
index 0000000..780c7e6
--- /dev/null
+++ b/tools/h5dump/errfiles/torderlinks1.err
@@ -0,0 +1,25 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'fname', temp_file_name = 'fname'
+    major: Links
+    minor: Unable to open file
diff --git a/tools/h5dump/errfiles/torderlinks2.err b/tools/h5dump/errfiles/torderlinks2.err
new file mode 100644
index 0000000..780c7e6
--- /dev/null
+++ b/tools/h5dump/errfiles/torderlinks2.err
@@ -0,0 +1,25 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Oopen(): unable to open object
+    major: Symbol table
+    minor: Can't open object
+  #001: (file name) line (number) in H5O_open_name(): object not found
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
+    major: Symbol table
+    minor: Unable to find atom information (already closed?)
+  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'fname', temp_file_name = 'fname'
+    major: Links
+    minor: Unable to open file
diff --git a/tools/h5dump/errfiles/tpbitsCharLengthExceeded.err b/tools/h5dump/errfiles/tpbitsCharLengthExceeded.err
new file mode 100644
index 0000000..e5854ea
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsCharLengthExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(9) too large. Max is 8
diff --git a/tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err
new file mode 100644
index 0000000..e5854ea
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(9) too large. Max is 8
diff --git a/tools/h5dump/errfiles/tpbitsIncomplete.err b/tools/h5dump/errfiles/tpbitsIncomplete.err
new file mode 100644
index 0000000..e0abee5
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsIncomplete.err
@@ -0,0 +1 @@
+h5dump error: Bad mask list(0,2,2,1,0,2,2,)
diff --git a/tools/h5dump/errfiles/tpbitsIntLengthExceeded.err b/tools/h5dump/errfiles/tpbitsIntLengthExceeded.err
new file mode 100644
index 0000000..7dd88ed
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsIntLengthExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(17) too large. Max is 16
diff --git a/tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err
new file mode 100644
index 0000000..7dd88ed
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(17) too large. Max is 16
diff --git a/tools/h5dump/errfiles/tpbitsLengthExceeded.err b/tools/h5dump/errfiles/tpbitsLengthExceeded.err
new file mode 100644
index 0000000..d4673f2
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsLengthExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(65) too large. Max is 64
diff --git a/tools/h5dump/errfiles/tpbitsLengthPositive.err b/tools/h5dump/errfiles/tpbitsLengthPositive.err
new file mode 100644
index 0000000..4928007
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsLengthPositive.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit length value(0) must be positive.
diff --git a/tools/h5dump/errfiles/tpbitsLongLengthExceeded.err b/tools/h5dump/errfiles/tpbitsLongLengthExceeded.err
new file mode 100644
index 0000000..0318f79
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsLongLengthExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(33) too large. Max is 32
diff --git a/tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err
new file mode 100644
index 0000000..0318f79
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset+length value(33) too large. Max is 32
diff --git a/tools/h5dump/errfiles/tpbitsMaxExceeded.err b/tools/h5dump/errfiles/tpbitsMaxExceeded.err
new file mode 100644
index 0000000..a8d12fc
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsMaxExceeded.err
@@ -0,0 +1 @@
+h5dump error: Too many masks requested (max. 8). Mask list(0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1)
diff --git a/tools/h5dump/errfiles/tpbitsOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsOffsetExceeded.err
new file mode 100644
index 0000000..b7d6dad
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsOffsetExceeded.err
@@ -0,0 +1 @@
+h5dump error: Packed Bit offset value(64) must be between 0 and 63
diff --git a/tools/h5dump/errfiles/tpbitsOffsetNegative.err b/tools/h5dump/errfiles/tpbitsOffsetNegative.err
new file mode 100644
index 0000000..8a027c1
--- /dev/null
+++ b/tools/h5dump/errfiles/tpbitsOffsetNegative.err
@@ -0,0 +1 @@
+h5dump error: Bad mask list(-1,1)
diff --git a/tools/h5dump/errfiles/tperror.err b/tools/h5dump/errfiles/tperror.err
new file mode 100644
index 0000000..19a7a73
--- /dev/null
+++ b/tools/h5dump/errfiles/tperror.err
@@ -0,0 +1,33 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Dopen2(): not found
+    major: Dataset
+    minor: Object not found
+  #001: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5G_loc_find_cb(): object 'bogus' doesn't exist
+    major: Symbol table
+    minor: Object not found
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Lget_info(): unable to get link info
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5L_get_info(): name doesn't exist
+    major: Symbol table
+    minor: Object already exists
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
+    major: Symbol table
+    minor: Object not found
+h5dump error: unable to get link info from "bogus"
diff --git a/tools/h5dump/errfiles/tqmarkfile.err b/tools/h5dump/errfiles/tqmarkfile.err
new file mode 100644
index 0000000..06519fb
--- /dev/null
+++ b/tools/h5dump/errfiles/tqmarkfile.err
@@ -0,0 +1,33 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Dopen2(): not found
+    major: Dataset
+    minor: Object not found
+  #001: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5G_loc_find_cb(): object 'Dataset1' doesn't exist
+    major: Symbol table
+    minor: Object not found
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Lget_info(): unable to get link info
+    major: Symbol table
+    minor: Object not found
+  #001: (file name) line (number) in H5L_get_info(): name doesn't exist
+    major: Symbol table
+    minor: Object already exists
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
+    major: Symbol table
+    minor: Object not found
+h5dump error: unable to get link info from "Dataset1"
diff --git a/tools/h5dump/errfiles/tslink-D.err b/tools/h5dump/errfiles/tslink-D.err
new file mode 100644
index 0000000..b98e324
--- /dev/null
+++ b/tools/h5dump/errfiles/tslink-D.err
@@ -0,0 +1,25 @@
+HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
+  #000: (file name) line (number) in H5Dopen2(): not found
+    major: Dataset
+    minor: Object not found
+  #001: (file name) line (number) in H5G_loc_find(): can't find object
+    major: Symbol table
+    minor: Object not found
+  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
+    major: Symbol table
+    minor: Object not found
+  #003: (file name) line (number) in H5G_traverse_real(): special link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #004: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed
+    major: Links
+    minor: Link traversal failure
+  #005: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link
+    major: Symbol table
+    minor: Object not found
+  #006: (file name) line (number) in H5G_traverse_real(): traversal operator failed
+    major: Symbol table
+    minor: Callback failed
+  #007: (file name) line (number) in H5G_traverse_slink_cb(): component not found
+    major: Symbol table
+    minor: Object not found
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index 2799d95..2921fb9 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -71,11 +71,11 @@ struct handler_t {
  */
 /* The following initialization makes use of C language cancatenating */
 /* "xxx" "yyy" into "xxxyyy". */
-static const char *s_opts = "hnpeyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b*F:s:S:Aq:z:m:RECM:";
+static const char *s_opts = "hn*peyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b*F:s:S:Aq:z:m:RECM:";
 static struct long_options l_opts[] = {
     { "help", no_arg, 'h' },
     { "hel", no_arg, 'h' },
-    { "contents", no_arg, 'n' },
+    { "contents", optional_arg, 'n' },
     { "properties", no_arg, 'p' },
     { "boot-block", no_arg, 'B' },
     { "boot-bloc", no_arg, 'B' },
@@ -233,22 +233,23 @@ usage(const char *prog)
     HDfflush(rawoutstream);
     HDfprintf(rawoutstream, "usage: %s [OPTIONS] files\n", prog);
     HDfprintf(rawoutstream, "  OPTIONS\n");
-    HDfprintf(rawoutstream, "     -h, --help           Print a usage message and exit\n");
-    HDfprintf(rawoutstream, "     -n, --contents       Print a list of the file contents and exit\n");
-    HDfprintf(rawoutstream, "     -B, --superblock     Print the content of the super block\n");
-    HDfprintf(rawoutstream, "     -H, --header         Print the header only; no data is displayed\n");
-    HDfprintf(rawoutstream, "     -A, --onlyattr       Print the header and value of attributes\n");
-    HDfprintf(rawoutstream, "     -i, --object-ids     Print the object ids\n");
-    HDfprintf(rawoutstream, "     -r, --string         Print 1-byte integer datasets as ASCII\n");
-    HDfprintf(rawoutstream, "     -e, --escape         Escape non printing characters\n");
-    HDfprintf(rawoutstream, "     -V, --version        Print version number and exit\n");
+    HDfprintf(rawoutstream, "     -h,   --help         Print a usage message and exit\n");
+    HDfprintf(rawoutstream, "     -n,   --contents     Print a list of the file contents and exit\n");
+    HDfprintf(rawoutstream, "                          Optional value 1 also prints attributes.\n");
+    HDfprintf(rawoutstream, "     -B,   --superblock   Print the content of the super block\n");
+    HDfprintf(rawoutstream, "     -H,   --header       Print the header only; no data is displayed\n");
+    HDfprintf(rawoutstream, "     -A,   --onlyattr     Print the header and value of attributes\n");
+    HDfprintf(rawoutstream, "     -i,   --object-ids   Print the object ids\n");
+    HDfprintf(rawoutstream, "     -r,   --string       Print 1-byte integer datasets as ASCII\n");
+    HDfprintf(rawoutstream, "     -e,   --escape       Escape non printing characters\n");
+    HDfprintf(rawoutstream, "     -V,   --version      Print version number and exit\n");
     HDfprintf(rawoutstream, "     -a P, --attribute=P  Print the specified attribute\n");
     HDfprintf(rawoutstream, "                          If an attribute name contains a slash (/), escape the\n");
     HDfprintf(rawoutstream, "                          slash with a preceding backslash (\\).\n");
     HDfprintf(rawoutstream, "                          (See example section below.)\n");
     HDfprintf(rawoutstream, "     -d P, --dataset=P    Print the specified dataset\n");
-    HDfprintf(rawoutstream, "     -y, --noindex        Do not print array indices with the data\n");
-    HDfprintf(rawoutstream, "     -p, --properties     Print dataset filters, storage layout and fill value\n");
+    HDfprintf(rawoutstream, "     -y,   --noindex      Do not print array indices with the data\n");
+    HDfprintf(rawoutstream, "     -p,   --properties   Print dataset filters, storage layout and fill value\n");
     HDfprintf(rawoutstream, "     -f D, --filedriver=D Specify which driver to open the file with\n");
     HDfprintf(rawoutstream, "     -g P, --group=P      Print the specified group and all members\n");
     HDfprintf(rawoutstream, "     -l P, --soft-link=P  Print the value(s) of the specified soft link\n");
@@ -269,17 +270,17 @@ usage(const char *prog)
   "                          the data value and length is the number of bits of\n"
   "                          the mask.\n"
   );
-    HDfprintf(rawoutstream, "     -R, --region         Print dataset pointed by region references\n");
-    HDfprintf(rawoutstream, "     -x, --xml            Output in XML using Schema\n");
-    HDfprintf(rawoutstream, "     -u, --use-dtd        Output in XML using DTD\n");
+    HDfprintf(rawoutstream, "     -R,   --region       Print dataset pointed by region references\n");
+    HDfprintf(rawoutstream, "     -x,   --xml          Output in XML using Schema\n");
+    HDfprintf(rawoutstream, "     -u,   --use-dtd      Output in XML using DTD\n");
     HDfprintf(rawoutstream, "     -D U, --xml-dtd=U    Use the DTD or schema at U\n");
-    HDfprintf(rawoutstream, "     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML\n");
+    HDfprintf(rawoutstream, "     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML\n");
     HDfprintf(rawoutstream, "                          \":\": no namespace, default: \"hdf5:\"\n");
     HDfprintf(rawoutstream, "                          E.g., to dump a file called `-f', use h5dump -- -f\n");
     HDfprintf(rawoutstream, "     --enable-error-stack Prints messages from the HDF5 error stack as they\n");
     HDfprintf(rawoutstream, "                          occur.\n");
     HDfprintf(rawoutstream, "     --no-compact-subset  Disable compact form of subsetting and allow the use\n");
-    HDfprintf(rawoutstream, "                          of \"[\" in datset names.\n");
+    HDfprintf(rawoutstream, "                          of \"[\" in dataset names.\n");
     HDfprintf(rawoutstream, "\n");
     HDfprintf(rawoutstream, " Subsetting is available by using the following options with a dataset\n");
     HDfprintf(rawoutstream, " attribute. Subsetting is done by selecting a hyperslab from the data.\n");
@@ -293,13 +294,24 @@ usage(const char *prog)
     HDfprintf(rawoutstream, "      -c COUNT,  --count=COUNT    Number of blocks to include in selection\n");
     HDfprintf(rawoutstream, "      -k BLOCK,  --block=BLOCK    Size of block in hyperslab\n");
     HDfprintf(rawoutstream, "  START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the\n");
-    HDfprintf(rawoutstream, "        number of dimensions in the dataspace being queried\n");
+    HDfprintf(rawoutstream, "      number of dimensions in the dataspace being queried\n");
+    HDfprintf(rawoutstream, "      (Alternate compact form of subsetting is described in the Reference Manual)\n");
     HDfprintf(rawoutstream, "\n");
     HDfprintf(rawoutstream, "  D - is the file driver to use in opening the file. Acceptable values\n");
-    HDfprintf(rawoutstream, "        are \"sec2\", \"family\", \"split\", \"multi\", \"direct\", and \"stream\". Without\n");
-    HDfprintf(rawoutstream, "        the file driver flag, the file will be opened with each driver in\n");
-    HDfprintf(rawoutstream, "        turn and in the order specified above until one driver succeeds\n");
-    HDfprintf(rawoutstream, "        in opening the file.\n");
+    HDfprintf(rawoutstream, "      are \"sec2\", \"family\", \"split\", \"multi\", \"direct\", and \"stream\". Without\n");
+    HDfprintf(rawoutstream, "      the file driver flag, the file will be opened with each driver in\n");
+    HDfprintf(rawoutstream, "      turn and in the order specified above until one driver succeeds\n");
+    HDfprintf(rawoutstream, "      in opening the file.\n");
+    HDfprintf(rawoutstream, "      These are the letters that are appended to the file name(without .h5) when opening\n");
+    HDfprintf(rawoutstream, "      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:\n");
+    HDfprintf(rawoutstream, "         m: All meta data when using the split driver.\n");
+    HDfprintf(rawoutstream, "         s: The userblock, superblock, and driver info block\n");
+    HDfprintf(rawoutstream, "         b: B-tree nodes\n");
+    HDfprintf(rawoutstream, "         r: Dataset raw data\n");
+    HDfprintf(rawoutstream, "         g: Global heap\n");
+    HDfprintf(rawoutstream, "         l: local heap (object names)\n");
+    HDfprintf(rawoutstream, "         o: object headers\n");
+    HDfprintf(rawoutstream, "\n");
     HDfprintf(rawoutstream, "  F - is a filename.\n");
     HDfprintf(rawoutstream, "  P - is the full path from the root group to the object.\n");
     HDfprintf(rawoutstream, "  N - is an integer greater than 1.\n");
@@ -336,9 +348,13 @@ usage(const char *prog)
     HDfprintf(rawoutstream, "\n");
     HDfprintf(rawoutstream, "      h5dump -d /dset -M 0,1,4,3 quux.h5\n");
     HDfprintf(rawoutstream, "\n");
-    HDfprintf(rawoutstream, "  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5\n");
+    HDfprintf(rawoutstream, "  5) Dataset foo in files file1.h5 file2.h5 file3.h5\n");
+    HDfprintf(rawoutstream, "\n");
+    HDfprintf(rawoutstream, "      h5dump -d /foo file1.h5 file2.h5 file3.h5\n");
     HDfprintf(rawoutstream, "\n");
-    HDfprintf(rawoutstream, "      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5\n");
+    HDfprintf(rawoutstream, "  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5\n");
+    HDfprintf(rawoutstream, "\n");
+    HDfprintf(rawoutstream, "      h5dump -d /foo -f split splitfile\n");
     HDfprintf(rawoutstream, "\n");
 }
 
@@ -999,6 +1015,9 @@ parse_start:
         case 'n':
             display_fi = TRUE;
             last_was_dset = FALSE;
+            if ( opt_arg != NULL) {
+                h5trav_set_verbose(HDatoi(opt_arg));
+            }
             break;
         case 'p':
             display_dcpl = TRUE;
@@ -1035,6 +1054,9 @@ parse_start:
             break;
         case 'w':
             h5tools_nCols = HDatoi(opt_arg);
+            if (h5tools_nCols==0) {
+                h5tools_nCols = 65535;
+            }
             last_was_dset = FALSE;
             break;
         case 'a':
@@ -1461,6 +1483,9 @@ main(int argc, const char *argv[])
         h5tools_setstatus(EXIT_FAILURE);
         goto done;
     }
+    /* Initialize indexing options */
+    h5trav_set_index(sort_by, sort_order);
+
     while(opt_ind < argc) {
         fname = HDstrdup(argv[opt_ind++]);
 
diff --git a/tools/h5dump/h5dump_ddl.c b/tools/h5dump/h5dump_ddl.c
index b0136c8..ee6de5e 100644
--- a/tools/h5dump/h5dump_ddl.c
+++ b/tools/h5dump/h5dump_ddl.c
@@ -543,6 +543,56 @@ done:
 }
 
 /*-------------------------------------------------------------------------
+ * Function:    attr_iteration
+ *
+ * Purpose:     Iterate and display attributes within the specified group
+ *
+ * Return:      void
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+attr_iteration(hid_t gid, unsigned attr_crt_order_flags)
+{
+    /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
+       in the group for attributes, then, sort by creation order, otherwise by name */
+
+    if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
+        if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
+            error_msg("error getting attribute information\n");
+            h5tools_setstatus(EXIT_FAILURE);
+        } /* end if */
+    } /* end if */
+    else {
+        if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
+            error_msg("error getting attribute information\n");
+            h5tools_setstatus(EXIT_FAILURE);
+        } /* end if */
+    } /* end else */
+}
+
+/*-------------------------------------------------------------------------
+ * Function:    link_iteration
+ *
+ * Purpose:     Iterate and display links within the specified group
+ *
+ * Return:      void
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+link_iteration(hid_t gid, unsigned crt_order_flags)
+{
+
+    /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
+       in the group, then, sort by creation order, otherwise by name */
+    if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED))
+        H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL);
+    else
+        H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL);
+}
+
+/*-------------------------------------------------------------------------
  * Function:    dump_named_datatype
  *
  * Purpose:     Dump named datatype
@@ -659,21 +709,7 @@ dump_named_datatype(hid_t tid, const char *name)
     /* print attributes */
     dump_indent += COL;
 
-    /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
-      in the datatype's create property list for attributes, then, sort by creation order, otherwise by name */
-
-    if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
-        if(H5Aiterate2(tid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-            error_msg("error getting attribute information\n");
-            h5tools_setstatus(EXIT_FAILURE);
-        } /* end if */
-    } /* end if */
-    else {
-        if(H5Aiterate2(tid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-            error_msg("error getting attribute information\n");
-            h5tools_setstatus(EXIT_FAILURE);
-        } /* end if */
-    } /* end else */
+    attr_iteration(tid, attr_crt_order_flags);
 
     dump_indent -= COL;
 
@@ -829,53 +865,13 @@ dump_group(hid_t gid, const char *name)
         }
         else {
             found_obj->displayed = TRUE;
-            /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
-               in the group for attributes, then, sort by creation order, otherwise by name */
-
-            if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
-                if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-                    error_msg("error getting attribute information\n");
-                    h5tools_setstatus(EXIT_FAILURE);
-                } /* end if */
-            } /* end if */
-            else {
-                if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-                    error_msg("error getting attribute information\n");
-                    h5tools_setstatus(EXIT_FAILURE);
-                } /* end if */
-            } /* end else */
-
-            /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
-               in the group, then, sort by creation order, otherwise by name */
-            if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED))
-                H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL);
-            else
-                H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL);
+            attr_iteration(gid, attr_crt_order_flags);
+            link_iteration(gid, crt_order_flags);
         }
     }
     else {
-        /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
-           in the group for attributes, then, sort by creation order, otherwise by name */
-
-        if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
-            if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-                error_msg("error getting attribute information\n");
-                h5tools_setstatus(EXIT_FAILURE);
-            } /* end if */
-        } /* end if */
-        else {
-            if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-                error_msg("error getting attribute information\n");
-                h5tools_setstatus(EXIT_FAILURE);
-            } /* end if */
-        } /* end else */
-
-         /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
-            in the group, then, sort by creation order, otherwise by name */
-        if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED))
-            H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL);
-        else
-            H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL);
+        attr_iteration(gid, attr_crt_order_flags);
+        link_iteration(gid, crt_order_flags);
     }
 
     dump_indent -= COL;
@@ -1050,20 +1046,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset)
     H5Tclose(type);
 
     if (!bin_output) {
-       /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
-        in the group for attributes, then, sort by creation order, otherwise by name */
-        if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
-            if(H5Aiterate2(did, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-                error_msg("error getting attribute information\n");
-                h5tools_setstatus(EXIT_FAILURE);
-            } /* end if */
-        } /* end if */
-        else {
-            if(H5Aiterate2(did, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
-                error_msg("error getting attribute information\n");
-                h5tools_setstatus(EXIT_FAILURE);
-            } /* end if */
-        } /* end else */
+        attr_iteration(did, attr_crt_order_flags);
     }
     ctx.indent_level--;
     dump_indent -= COL;
@@ -1308,7 +1291,7 @@ handle_attributes(hid_t fid, const char *attr, void UNUSED * data, int UNUSED pe
     hid_t  oid = -1;
     hid_t  attr_id = -1;
     char *obj_name;
-    const char *attr_name;
+    char *attr_name;
     int j;
     h5tools_str_t buffer;          /* string into which to render   */
     h5tools_context_t ctx;            /* print context  */
@@ -1323,7 +1306,7 @@ handle_attributes(hid_t fid, const char *attr, void UNUSED * data, int UNUSED pe
 
     /* find the last / */
     while(j >= 0) {
-        if (attr[j] == '/')
+        if (attr[j] == '/' && (j==0 || (j>0 && attr[j-1]!='\\'))) 
             break;
         j--;
     }
@@ -1358,9 +1341,12 @@ handle_attributes(hid_t fid, const char *attr, void UNUSED * data, int UNUSED pe
     string_dataformat.do_escape = display_escape;
     outputformat = &string_dataformat;
 
-    attr_name = attr + j + 1;
+    //attr_name = attr + j + 1;
+	// need to replace escape characters
+	attr_name = h5tools_str_replace(attr + j + 1, "\\/", "/");
+
 
-    /* Open the object with the attribute */
+    /* handle error case: cannot open the object with the attribute */
     if((oid = H5Oopen(fid, obj_name, H5P_DEFAULT)) < 0) {
         /* setup */
         HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -1401,7 +1387,7 @@ handle_attributes(hid_t fid, const char *attr, void UNUSED * data, int UNUSED pe
     attr_data_output = display_attr_data;
 
     h5dump_type_table = type_table;
-    h5tools_dump_attribute(rawoutstream, outputformat, &ctx, oid, attr, attr_id, display_ai, display_char);
+    h5tools_dump_attribute(rawoutstream, outputformat, &ctx, oid, attr_name, attr_id, display_ai, display_char);
     h5dump_type_table = NULL;
 
     if(attr_id < 0) {
@@ -1414,6 +1400,7 @@ handle_attributes(hid_t fid, const char *attr, void UNUSED * data, int UNUSED pe
     } /* end if */
 
     HDfree(obj_name);
+	HDfree(attr_name);
     dump_indent -= COL;
     return;
 
@@ -1421,6 +1408,9 @@ error:
     h5tools_setstatus(EXIT_FAILURE);
     if(obj_name)
         HDfree(obj_name);
+		
+	if (attr_name)
+		HDfree(attr_name);
 
     H5E_BEGIN_TRY {
         H5Oclose(oid);
@@ -1467,15 +1457,18 @@ handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *dis
 
     if(sset) {
         unsigned int i;
+        unsigned int ndims;
         hid_t sid = H5Dget_space(dsetid);
-        int ndims = H5Sget_simple_extent_ndims(sid);
+        int ndims_res = H5Sget_simple_extent_ndims(sid);
 
         H5Sclose(sid);
-        if(ndims < 0) {
+        if(ndims_res < 0) {
             error_msg("H5Sget_simple_extent_ndims failed\n");
             h5tools_setstatus(EXIT_FAILURE);
             return;
         }
+        else
+            ndims = ndims_res;
 
         if(!sset->start.data || !sset->stride.data || !sset->count.data || !sset->block.data) {
             /* they didn't specify a ``stride'' or ``block''. default to 1 in all
diff --git a/tools/h5dump/h5dump_xml.c b/tools/h5dump/h5dump_xml.c
index e6f8043..1a29659 100644
--- a/tools/h5dump/h5dump_xml.c
+++ b/tools/h5dump/h5dump_xml.c
@@ -1781,7 +1781,6 @@ xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNU
     hsize_t             nelmts = 1;
     int                 ndims;
     int                 i;
-    int                 depth;
     int                 status = -1;
     int                 stdindent = COL;    /* should be 3 */
     void               *buf = NULL;
@@ -1883,9 +1882,7 @@ xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNU
             p_type = h5tools_get_native_type(type);
 
             /* Check if we have VL data in the dataset's datatype */
-            if (h5tools_detect_vlen_str(p_type) == TRUE)
-                vl_data = TRUE;
-            if (H5Tdetect_class(p_type, H5T_VLEN) == TRUE)
+            if (h5tools_detect_vlen(p_type) == TRUE)
                 vl_data = TRUE;
 
             H5Tclose(type);
@@ -2952,7 +2949,7 @@ xml_print_refs(hid_t did, int source)
     string_dataformat.do_escape = display_escape;
     outputformat = &string_dataformat;
 
-    for (i = 0; i < ssiz; i++) {
+    for (i = 0; i < (hsize_t)ssiz; i++) {
         const char *path = lookup_ref_path(*refbuf);
         ctx.indent_level++;
 
diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c
index 013d63e..27b648a 100644
--- a/tools/h5dump/h5dumpgentest.c
+++ b/tools/h5dump/h5dumpgentest.c
@@ -97,9 +97,11 @@
 #define FILE65  "tattrreg.h5"
 #define FILE66  "packedbits.h5"
 #define FILE67  "zerodim.h5"
-
-
-
+#define FILE68  "charsets.h5"
+#define FILE69  "tattrintsize.h5"
+#define FILE70  "tcmpdintsize.h5"
+#define FILE71  "tcmpdattrintsize.h5"
+#define FILE72  "tnestedcmpddt.h5"
 
 /*-------------------------------------------------------------------------
  * prototypes
@@ -111,16 +113,16 @@ static int
 make_dset(hid_t loc_id, const char *name, hid_t sid, hid_t tid, hid_t dcpl, void *buf);
 static int
 write_attr(hid_t loc_id, int rank, hsize_t *dims, const char *attr_name,
-                hid_t tid, void *buf);
+        hid_t tid, void *buf);
 static int
 write_dset( hid_t loc_id, int rank, hsize_t *dims, const char *dset_name,
-                   hid_t tid, void *buf );
+        hid_t tid, void *buf );
 
 /* a filter operation callback function */
 static size_t
 myfilter(unsigned int UNUSED flags, size_t UNUSED cd_nelmts,
-      const unsigned int UNUSED *cd_values, size_t nbytes,
-      size_t UNUSED *buf_size, void UNUSED **buf);
+        const unsigned int UNUSED *cd_values, size_t nbytes,
+        size_t UNUSED *buf_size, void UNUSED **buf);
 
 /* a "set local" callback     */
 static herr_t
@@ -130,35 +132,35 @@ set_local_myfilter(hid_t dcpl_id, hid_t tid, hid_t UNUSED sid);
 
 /* This message derives from H5Z */
 const H5Z_class2_t H5Z_MYFILTER[1] = {{
-    H5Z_CLASS_T_VERS,
-    MYFILTER_ID,               /* Filter id number      */
-    1, 1,
-    "myfilter",                /* Filter name for debugging */
-    NULL,                /* The "can apply" callback     */
-    set_local_myfilter,  /* The "set local" callback     */
-    myfilter,            /* The actual filter function */
+        H5Z_CLASS_T_VERS,
+        MYFILTER_ID,               /* Filter id number      */
+        1, 1,
+        "myfilter",                /* Filter name for debugging */
+        NULL,                /* The "can apply" callback     */
+        set_local_myfilter,  /* The "set local" callback     */
+        myfilter,            /* The actual filter function */
 }};
 
 
 /* A UD link traversal function.  Shouldn't actually be called. */
 static hid_t UD_traverse(UNUSED const char * link_name, UNUSED hid_t cur_group,
-     UNUSED const void * udata, UNUSED size_t udata_size, UNUSED hid_t lapl_id)
+        UNUSED const void * udata, UNUSED size_t udata_size, UNUSED hid_t lapl_id)
 {
-return -1;
+    return -1;
 }
 
 #define MY_LINKCLASS 187
 
 const H5L_class_t UD_link_class[1] = {{
-    H5L_LINK_CLASS_T_VERS,    /* H5L_class_t version       */
-    (H5L_type_t)MY_LINKCLASS, /* Link type id number            */
-    "UD link class",          /* name for debugging             */
-    NULL,                     /* Creation callback              */
-    NULL,                     /* Move/rename callback           */
-    NULL,                     /* Copy callback                  */
-    UD_traverse,              /* The actual traversal function  */
-    NULL,                     /* Deletion callback              */
-    NULL                      /* Query callback                 */
+        H5L_LINK_CLASS_T_VERS,    /* H5L_class_t version       */
+        (H5L_type_t)MY_LINKCLASS, /* Link type id number            */
+        "UD link class",          /* name for debugging             */
+        NULL,                     /* Creation callback              */
+        NULL,                     /* Move/rename callback           */
+        NULL,                     /* Copy callback                  */
+        UD_traverse,              /* The actual traversal function  */
+        NULL,                     /* Deletion callback              */
+        NULL                      /* Query callback                 */
 }};
 
 
@@ -187,18 +189,18 @@ const H5L_class_t UD_link_class[1] = {{
 #define POINT1_NPOINTS 10
 
 typedef enum{
-     RED,
-     GREEN,
-     BLUE,
-     WHITE,
-     BLACK
+    RED,
+    GREEN,
+    BLUE,
+    WHITE,
+    BLACK
 } enumtype;
 
 /* Compound datatype */
 typedef struct s1_t {
-    unsigned int a;
-    unsigned int b;
-    float c;
+        unsigned int a;
+        unsigned int b;
+        float c;
 } s1_t;
 
 
@@ -251,7 +253,7 @@ typedef struct s1_t {
 #define F64_ARRAY_BUF_LEN   (4*1024)
 #define F64_DIM1            (F64_ARRAY_BUF_LEN / sizeof(int) + 1)
 
-/* "FILE66" macros */
+/* "FILE66" macros and for FILE69 */
 #define F66_XDIM	    8
 #define F66_DATASETU08        "DU08BITS"
 #define F66_DATASETS08        "DS08BITS"
@@ -267,6 +269,29 @@ typedef struct s1_t {
 #define F66_YDIM64      64
 #define F66_DUMMYDBL	    "DummyDBL"
 
+/* "FILE70" macros and for FILE71 */
+/* Name of dataset to create in datafile   */
+#define F70_DATASETNAME   "CompoundIntSize"
+#define F70_LENGTH      4
+#define F70_RANK        1
+#define F70_ARRAY_RANK  2
+#define F70_XDIM        8
+#define F70_DATASETU08        "DU08BITS"
+#define F70_DATASETS08        "DS08BITS"
+#define F70_YDIM8       8
+#define F70_DATASETU16       "DU16BITS"
+#define F70_DATASETS16       "DS16BITS"
+#define F70_YDIM16      16
+#define F70_DATASETU32       "DU32BITS"
+#define F70_DATASETS32       "DS32BITS"
+#define F70_YDIM32      32
+#define F70_DATASETU64       "DU64BITS"
+#define F70_DATASETS64       "DS64BITS"
+#define F70_YDIM64      64
+#define F70_DUMMYDBL        "DummyDBL"
+/* Name of dataset to create in datafile   */
+#define F71_DATASETNAME   "CompoundAttrIntSize"
+
 static void
 gent_group(void)
 {
@@ -330,8 +355,8 @@ gent_dataset(void)
     dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     for(i = 0; i < 10; i++)
-         for(j = 0; j < 20; j++)
-              dset1[i][j] = j + i;
+        for(j = 0; j < 20; j++)
+            dset1[i][j] = j + i;
 
     H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1);
     H5Sclose(space);
@@ -343,8 +368,8 @@ gent_dataset(void)
     dataset = H5Dcreate2(fid, "/dset2", H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     for(i = 0; i < 30; i++)
-         for(j = 0; j < 20; j++)
-              dset2[i][j] = 0.0001 * j + i;
+        for(j = 0; j < 20; j++)
+            dset2[i][j] = 0.0001 * j + i;
 
     H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2);
 
@@ -375,8 +400,8 @@ gent_dataset2(void)
     dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
 
     for(i = 0; i < 10; i++)
-         for(j = 0; j < 20; j++)
-              dset1[i][j] = j;
+        for(j = 0; j < 20; j++)
+            dset1[i][j] = j;
 
     H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1);
     H5Sclose(space);
@@ -389,8 +414,8 @@ gent_dataset2(void)
     dataset = H5Dcreate2(fid, "/dset2", H5T_IEEE_F64BE, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
 
     for(i = 0; i < 30; i++)
-         for(j = 0; j < 10; j++)
-              dset2[i][j] = j;
+        for(j = 0; j < 10; j++)
+            dset2[i][j] = j;
 
     H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2);
 
@@ -503,9 +528,9 @@ static int gent_softlink2(void)
     int data2[NX][NY] = {{0,0},{0,1},{0,2},{3,3}};
     herr_t      status = SUCCEED;
 
-   /*-----------------------------------------------------------------------
-    * FILE
-    *------------------------------------------------------------------------*/
+    /*-----------------------------------------------------------------------
+     * FILE
+     *------------------------------------------------------------------------*/
     /* Create a new file */
     fileid1 = H5Fcreate(FILE4_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
     if (fileid1 < 0)
@@ -515,9 +540,9 @@ static int gent_softlink2(void)
         goto out;
     }
 
-   /*-----------------------------------------------------------------------
-    * Groups
-    *------------------------------------------------------------------------*/
+    /*-----------------------------------------------------------------------
+     * Groups
+     *------------------------------------------------------------------------*/
     gid1 = H5Gcreate2(fileid1, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     if (gid1 < 0)
     {
@@ -534,9 +559,9 @@ static int gent_softlink2(void)
         goto out;
     }
 
-   /*-----------------------------------------------------------------------
-    * Named datatype
-    *------------------------------------------------------------------------*/
+    /*-----------------------------------------------------------------------
+     * Named datatype
+     *------------------------------------------------------------------------*/
     datatype = H5Tcopy(H5T_NATIVE_INT);
     status = H5Tcommit2(fileid1, "dtype", datatype, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     if (status < 0)
@@ -546,9 +571,9 @@ static int gent_softlink2(void)
         goto out;
     }
 
-   /*-----------------------------------------------------------------------
-    * Datasets
-    *------------------------------------------------------------------------*/
+    /*-----------------------------------------------------------------------
+     * Datasets
+     *------------------------------------------------------------------------*/
     /*
      * Describe the size of the array and create the data space for fixed
      * size dataset.
@@ -566,7 +591,7 @@ static int gent_softlink2(void)
      */
     /* Create a new dataset as sample object */
     dset1 = H5Dcreate2(fileid1, "/dset1", H5T_NATIVE_INT, dataspace,
-			H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+            H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     if (dset1 < 0)
     {
         fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", FILE4_1);
@@ -587,7 +612,7 @@ static int gent_softlink2(void)
      */
     /* Create a new dataset as sample object */
     dset2 = H5Dcreate2(fileid1, "/dset2", H5T_NATIVE_INT, dataspace,
-			H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+            H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     if (dset2 < 0)
     {
         fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", FILE4_1);
@@ -603,9 +628,9 @@ static int gent_softlink2(void)
         goto out;
     }
 
-   /*-----------------------------------------------------------------------
-    * Soft links
-    *------------------------------------------------------------------------*/
+    /*-----------------------------------------------------------------------
+     * Soft links
+     *------------------------------------------------------------------------*/
     /*
      * create various soft links under  '/' root
      */
@@ -702,7 +727,7 @@ static int gent_softlink2(void)
         goto out;
     }
 
-out:
+    out:
     /*
      * Close/release resources.
      */
@@ -749,7 +774,7 @@ out:
        dset2 g1.1
               |
              dset3
-*/
+ */
 
 static void gent_hardlink(void)
 {
@@ -780,7 +805,7 @@ static void gent_hardlink(void)
     H5Lcreate_hard(group, "/g2", H5L_SAME_LOC, "g1.1", H5P_DEFAULT, H5P_DEFAULT);
     H5Gclose(group);
 
-     /* create a link to the root group */
+    /* create a link to the root group */
     H5Lcreate_hard(fid, "/", H5L_SAME_LOC, "g3", H5P_DEFAULT, H5P_DEFAULT);
     H5Fclose(fid);
 }
@@ -821,38 +846,38 @@ static void gent_udlink(void)
            |
           dset2
 
-*/
+ */
 static void gent_compound_dt(void) {       /* test compound data type */
     hid_t fid, group, dataset, space, space3, type, type2;
     hid_t array_dt;
     typedef struct {
-      int a;
-      float b;
-      double c;
+            int a;
+            float b;
+            double c;
     } dset1_t;
     dset1_t dset1[5];
 
     typedef struct {
-      int a;
-      float b;
+            int a;
+            float b;
     } dset2_t;
     dset2_t dset2[5];
 
     typedef struct {
-      int a[4];
-      float b[5][6];
+            int a[4];
+            float b[5][6];
     } dset3_t;
     dset3_t dset3[3][6];
 
     typedef struct {
-      int a;
-      float b;
+            int a;
+            float b;
     } dset4_t;
     dset4_t dset4[5];
 
     typedef struct {
-      int a;
-      float b;
+            int a;
+            float b;
     } dset5_t;
     dset5_t dset5[5];
 
@@ -946,13 +971,13 @@ static void gent_compound_dt(void) {       /* test compound data type */
     space3 = H5Screate_simple(2, dset3_dim, NULL);
     dataset = H5Dcreate2(group, "dset3", type, space3, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     for(i = 0; i < (int)dset3_dim[0]; i++)
-         for(j = 0; j < (int)dset3_dim[1]; j++) {
-              for(k = 0; k < 4; k++)
-                   dset3[i][j].a[k] = k + j + i;
-              for(k = 0; k < 5; k++)
-                   for(l = 0; l < 6; l++)
-                        dset3[i][j].b[k][l] = (float)((k + 1) + l + j + i);
-         }
+        for(j = 0; j < (int)dset3_dim[1]; j++) {
+            for(k = 0; k < 4; k++)
+                dset3[i][j].a[k] = k + j + i;
+            for(k = 0; k < 5; k++)
+                for(l = 0; l < 6; l++)
+                    dset3[i][j].b[k][l] = (float)((k + 1) + l + j + i);
+        }
     H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset3);
     H5Sclose(space3);
     H5Tclose(type);
@@ -1007,38 +1032,38 @@ static void gent_compound_dt(void) {       /* test compound data type */
            |
           dset2
 
-*/
+ */
 static void gent_compound_dt2(void) {       /* test compound data type */
     hid_t fid, group, dataset, space, type, create_plist, type2;
     hid_t array_dt;
 
     typedef struct {
-      int a;
-      float b;
-      double c;
+            int a;
+            float b;
+            double c;
     } dset1_t;
     dset1_t dset1[10];
 
     typedef struct {
-      int a;
-      float b;
+            int a;
+            float b;
     } dset2_t;
     dset2_t dset2[10];
 
     typedef struct {
-      int a[4];
-      float b[5][6];
+            int a[4];
+            float b[5][6];
     } dset3_t;
 
     typedef struct {
-      int a;
-      float b;
+            int a;
+            float b;
     } dset4_t;
     dset4_t dset4[10];
 
     typedef struct {
-      int a;
-      float b;
+            int a;
+            float b;
     } dset5_t;
     dset5_t dset5[10];
 
@@ -1193,7 +1218,7 @@ g1.2 : g1.2.1 extlink
 g1.2.1 : slink
 g2 : dset2.1  dset2.2 udlink
 
-*/
+ */
 
 static void gent_all(void)
 {
@@ -1335,7 +1360,7 @@ static void gent_all(void)
 
 o - group objects
 
-*/
+ */
 
 static void gent_loop(void) {
     hid_t fid, group;
@@ -1385,7 +1410,7 @@ static void gent_loop2(void)
   |    |    (g1)  (dset2)      (dset3)      (elink)  udlink
  dset1 link1                                slink6
       (dset1)                               (udlink)
-*/
+ */
 
 static void
 gent_many(void)
@@ -1402,9 +1427,9 @@ gent_many(void)
     hsize_t sdim, maxdim;
 
     typedef struct { /* compound type has members with rank > 1 */
-      int a[2][2][2][2]; /* arrays are 2x2x2x2    */
-      double b[2][2][2][2];
-      double c[2][2][2][2];
+            int a[2][2][2][2]; /* arrays are 2x2x2x2    */
+            double b[2][2][2][2];
+            double c[2][2][2][2];
     } dset1_t;
     dset1_t dset1[6];
 
@@ -1584,13 +1609,13 @@ gent_many(void)
 }
 
 static hid_t mkstr(int size, H5T_str_t pad) {
-hid_t type;
+    hid_t type;
 
-  if((type=H5Tcopy(H5T_C_S1)) < 0) return -1;
-  if(H5Tset_size(type, (size_t)size) < 0) return -1;
-  if(H5Tset_strpad(type, pad) < 0) return -1;
+    if((type=H5Tcopy(H5T_C_S1)) < 0) return -1;
+    if(H5Tset_size(type, (size_t)size) < 0) return -1;
+    if(H5Tset_strpad(type, pad) < 0) return -1;
 
-  return type;
+    return type;
 }
 
 static void gent_str(void) {
@@ -1599,131 +1624,131 @@ static void gent_str(void) {
 
     hsize_t dims1[] = { 3, 4};
     char string1[12][3] = {"s1","s2","s3","s4","s5","s6","s7","s8","s9",
-                           "s0","s1","s2"};
+            "s0","s1","s2"};
 
     hsize_t dims2[]={20};
     char string2[20][10] = {"ab cd ef1", "ab cd ef2", "ab cd ef3", "ab cd ef4",
-                        "ab cd ef5", "ab cd ef6", "ab cd ef7", "ab cd ef8",
-                        "ab cd ef9", "ab cd ef0", "ab cd ef1", "ab cd ef2",
-                        "ab cd ef3", "ab cd ef4", "ab cd ef5", "ab cd ef6",
-                        "ab cd ef7", "ab cd ef8", "ab cd ef9", "ab cd ef0"};
+            "ab cd ef5", "ab cd ef6", "ab cd ef7", "ab cd ef8",
+            "ab cd ef9", "ab cd ef0", "ab cd ef1", "ab cd ef2",
+            "ab cd ef3", "ab cd ef4", "ab cd ef5", "ab cd ef6",
+            "ab cd ef7", "ab cd ef8", "ab cd ef9", "ab cd ef0"};
 
     hsize_t dims3[] = { 27};
     char string3[27][6] = {"abcd0", "abcd1", "abcd2", "abcd3",
-                       "abcd4", "abcd5", "abcd6", "abcd7",
-                       "abcd8", "abcd9", "abcd0", "abcd1",
-                       "abcd2", "abcd3", "abcd4", "abcd5",
-                       "abcd6", "abcd7", "abcd8", "abcd9",
-                       "abcd0", "abcd1", "abcd2", "abcd3",
-                       "abcd4", "abcd5", "abcd6"};
+            "abcd4", "abcd5", "abcd6", "abcd7",
+            "abcd8", "abcd9", "abcd0", "abcd1",
+            "abcd2", "abcd3", "abcd4", "abcd5",
+            "abcd6", "abcd7", "abcd8", "abcd9",
+            "abcd0", "abcd1", "abcd2", "abcd3",
+            "abcd4", "abcd5", "abcd6"};
 
     int i, j, k, l;
 
     hsize_t dims4[] = { 3 };
     char string4[3][21] = { "s1234567890123456789", "s1234567890123456789",
-                            "s1234567890123456789"};
+            "s1234567890123456789"};
 
     hsize_t dims5[] = { 3, 6};
     typedef struct {
-      int a[8][10];
-      char s[12][33];
+            int a[8][10];
+            char s[12][33];
     } compound_t;
     compound_t comp1[3][6];
     hsize_t mdims[2];
 
-  fid = H5Fcreate(FILE13, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
-  /* string 1 : nullterm string */
-  space = H5Screate_simple(2, dims1, NULL);
-  f_type = mkstr(5, H5T_STR_NULLTERM);
-  m_type = mkstr(3, H5T_STR_NULLTERM);
-  dataset = H5Dcreate2(fid, "/string1", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string1);
-  H5Tclose(m_type);
-  H5Tclose(f_type);
-  H5Sclose(space);
-  H5Dclose(dataset);
-
-  /* string 2 : space pad string */
-  space = H5Screate_simple(1, dims2, NULL);
-  f_type = mkstr(11, H5T_STR_SPACEPAD);
-  m_type = mkstr(10, H5T_STR_NULLTERM);
-  dataset = H5Dcreate2(fid, "/string2", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string2);
-  H5Tclose(m_type);
-  H5Tclose(f_type);
-  H5Sclose(space);
-  H5Dclose(dataset);
-
-  /* string 3 : null pad string */
-  space = H5Screate_simple(1, dims3, NULL);
-  f_type = mkstr(8, H5T_STR_NULLPAD);
-  m_type = mkstr(6, H5T_STR_NULLTERM);
-  dataset = H5Dcreate2(fid, "/string3", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string3);
-  H5Tclose(m_type);
-  H5Tclose(f_type);
-  H5Sclose(space);
-  H5Dclose(dataset);
-
-  /* string 4 : space pad long string */
-  space = H5Screate_simple(1, dims4, NULL);
-  f_type = mkstr(168, H5T_STR_SPACEPAD);
-  m_type = mkstr(21, H5T_STR_NULLTERM);
-  dataset = H5Dcreate2(fid, "/string4", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string4);
-  H5Tclose(m_type);
-  H5Tclose(f_type);
-  H5Sclose(space);
-  H5Dclose(dataset);
-
-  /* compound data */
-  space = H5Screate_simple(2, dims5, NULL);
-  f_type = H5Tcreate (H5T_COMPOUND, sizeof(compound_t));
-  f_type2 = H5Tcreate (H5T_COMPOUND, sizeof(compound_t));
-
-  mdims[0] = 8; mdims[1] = 10;
-
-  array_dt = H5Tarray_create2(H5T_STD_I32BE, 2, mdims);
-  H5Tinsert(f_type, "int_array", HOFFSET(compound_t, a), array_dt);
-  H5Tclose(array_dt);
-
-  array_dt = H5Tarray_create2(H5T_NATIVE_INT, 2, mdims);
-  H5Tinsert(f_type2, "int_array", HOFFSET(compound_t, a), array_dt);
-  H5Tclose(array_dt);
-
-  mdims[0] = 3; mdims[1] = 4;
-
-  str_type = mkstr(32, H5T_STR_SPACEPAD);
-  array_dt = H5Tarray_create2(str_type, 2, mdims);
-  H5Tinsert(f_type, "string", HOFFSET(compound_t, s), array_dt);
-  H5Tclose(array_dt);
-  H5Tclose(str_type);
-
-  str_type = mkstr(33, H5T_STR_NULLTERM);
-  array_dt = H5Tarray_create2(str_type, 2, mdims);
-  H5Tinsert(f_type2, "string", HOFFSET(compound_t, s), array_dt);
-  H5Tclose(array_dt);
-  H5Tclose(str_type);
-
-  for(i = 0; i < 3; i++)
-      for(j = 0; j < 6; j++) {
-           for(k = 0 ; k < 8; k++)
+    fid = H5Fcreate(FILE13, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+    /* string 1 : nullterm string */
+    space = H5Screate_simple(2, dims1, NULL);
+    f_type = mkstr(5, H5T_STR_NULLTERM);
+    m_type = mkstr(3, H5T_STR_NULLTERM);
+    dataset = H5Dcreate2(fid, "/string1", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string1);
+    H5Tclose(m_type);
+    H5Tclose(f_type);
+    H5Sclose(space);
+    H5Dclose(dataset);
+
+    /* string 2 : space pad string */
+    space = H5Screate_simple(1, dims2, NULL);
+    f_type = mkstr(11, H5T_STR_SPACEPAD);
+    m_type = mkstr(10, H5T_STR_NULLTERM);
+    dataset = H5Dcreate2(fid, "/string2", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string2);
+    H5Tclose(m_type);
+    H5Tclose(f_type);
+    H5Sclose(space);
+    H5Dclose(dataset);
+
+    /* string 3 : null pad string */
+    space = H5Screate_simple(1, dims3, NULL);
+    f_type = mkstr(8, H5T_STR_NULLPAD);
+    m_type = mkstr(6, H5T_STR_NULLTERM);
+    dataset = H5Dcreate2(fid, "/string3", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string3);
+    H5Tclose(m_type);
+    H5Tclose(f_type);
+    H5Sclose(space);
+    H5Dclose(dataset);
+
+    /* string 4 : space pad long string */
+    space = H5Screate_simple(1, dims4, NULL);
+    f_type = mkstr(168, H5T_STR_SPACEPAD);
+    m_type = mkstr(21, H5T_STR_NULLTERM);
+    dataset = H5Dcreate2(fid, "/string4", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string4);
+    H5Tclose(m_type);
+    H5Tclose(f_type);
+    H5Sclose(space);
+    H5Dclose(dataset);
+
+    /* compound data */
+    space = H5Screate_simple(2, dims5, NULL);
+    f_type = H5Tcreate (H5T_COMPOUND, sizeof(compound_t));
+    f_type2 = H5Tcreate (H5T_COMPOUND, sizeof(compound_t));
+
+    mdims[0] = 8; mdims[1] = 10;
+
+    array_dt = H5Tarray_create2(H5T_STD_I32BE, 2, mdims);
+    H5Tinsert(f_type, "int_array", HOFFSET(compound_t, a), array_dt);
+    H5Tclose(array_dt);
+
+    array_dt = H5Tarray_create2(H5T_NATIVE_INT, 2, mdims);
+    H5Tinsert(f_type2, "int_array", HOFFSET(compound_t, a), array_dt);
+    H5Tclose(array_dt);
+
+    mdims[0] = 3; mdims[1] = 4;
+
+    str_type = mkstr(32, H5T_STR_SPACEPAD);
+    array_dt = H5Tarray_create2(str_type, 2, mdims);
+    H5Tinsert(f_type, "string", HOFFSET(compound_t, s), array_dt);
+    H5Tclose(array_dt);
+    H5Tclose(str_type);
+
+    str_type = mkstr(33, H5T_STR_NULLTERM);
+    array_dt = H5Tarray_create2(str_type, 2, mdims);
+    H5Tinsert(f_type2, "string", HOFFSET(compound_t, s), array_dt);
+    H5Tclose(array_dt);
+    H5Tclose(str_type);
+
+    for(i = 0; i < 3; i++)
+        for(j = 0; j < 6; j++) {
+            for(k = 0 ; k < 8; k++)
                 for(l = 0; l < 10; l++)
-                   comp1[i][j].a[k][l] = (l + j + k) * (l + j + k);
-           for(k = 0 ; k < 12; k++)
-               strcpy(comp1[i][j].s[k], "abcdefgh12345678abcdefgh12345678");
-      }
+                    comp1[i][j].a[k][l] = (l + j + k) * (l + j + k);
+            for(k = 0 ; k < 12; k++)
+                strcpy(comp1[i][j].s[k], "abcdefgh12345678abcdefgh12345678");
+        }
 
-  dataset = H5Dcreate2(fid, "/comp1", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  H5Dwrite(dataset, f_type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, comp1);
+    dataset = H5Dcreate2(fid, "/comp1", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(dataset, f_type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, comp1);
 
-  H5Tclose(f_type);
-  H5Tclose(f_type2);
-  H5Sclose(space);
-  H5Dclose(dataset);
+    H5Tclose(f_type);
+    H5Tclose(f_type2);
+    H5Sclose(space);
+    H5Dclose(dataset);
 
-  H5Fclose(fid);
+    H5Fclose(fid);
 }
 
 /*
@@ -1733,163 +1758,163 @@ static void gent_str(void) {
      |       |     |     |     \     \
   string1       string3       string5
          string2       string4       string6
-*/
+ */
 
 static void gent_str2(void)
 {
-hid_t fid, group, attr, dataset, space, space2, mem_space, hyper_space;
-hid_t fxdlenstr, fxdlenstr2, memtype;
-hsize_t dims[1], size[1], stride[1], count[1], block[1];
-hsize_t start[1];
-
-
-int i;
-char buf[LENSTR+10];
-char buf2[3*LENSTR2];
-hsize_t sdim;
-
-  fid = H5Fcreate(FILE14, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
-  fxdlenstr = H5Tcopy(H5T_C_S1);
-  H5Tset_size(fxdlenstr, LENSTR);
-  H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
-  H5Tset_strpad(fxdlenstr, H5T_STR_NULLTERM);
-
-  memtype = H5Tcopy(H5T_C_S1);
-  H5Tset_size(memtype, LENSTR);
-  H5Tset_cset(memtype, H5T_CSET_ASCII);
-  H5Tset_strpad(memtype, H5T_STR_NULLTERM);
-
-  sdim = 10;
-  size[0] = sdim;
-  space = H5Screate_simple(1, size, NULL);
-  size[0] = 1;
-  mem_space = H5Screate_simple(1,size,NULL);
-  hyper_space = H5Scopy(space);
-
-  /* dset1 */
-
-  group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  dataset = H5Dcreate2(group, "dset1", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-  /* add attributes to dset1 */
-
-  fxdlenstr2 = H5Tcopy(H5T_C_S1);
-  H5Tset_size(fxdlenstr2, LENSTR2);
-  H5Tset_cset(fxdlenstr2, H5T_CSET_ASCII);
-  H5Tset_strpad(fxdlenstr2, H5T_STR_NULLTERM);
-
-  dims[0] = 3;
-  space2 = H5Screate_simple(1, dims, NULL);
-  attr = H5Acreate2(dataset, "attr1", fxdlenstr2, space2, H5P_DEFAULT, H5P_DEFAULT);
-  sprintf(&(buf2[0*LENSTR2]), "0123456789");
-  sprintf(&(buf2[1*LENSTR2]), "abcdefghij");
-  sprintf(&(buf2[2*LENSTR2]), "ABCDEFGHIJ");
-  H5Awrite(attr, fxdlenstr2, buf2);
-  H5Sclose(space2);
-  H5Tclose(fxdlenstr2);
-  H5Aclose(attr);
-
-  stride[0]=1;
-  count[0]=1;
-  block[0]=1;
-
-  for(i = 0; (hsize_t)i < sdim; i++) {
-    start[0] = i;
-    sprintf(buf, "This is row %1d of type H5T_STR_NULLTERM of", i);
-    H5Tset_size(memtype, HDstrlen(buf)+1);
-    H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
-    H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
-  }
-  H5Dclose(dataset);
-  H5Gclose(group);
-
-  group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  dataset = H5Dcreate2(group, "dset2", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-  for(i = 0; (hsize_t)i < sdim; i++) {
-    start[0] = i;
-    sprintf(buf, "This is row %1d of type H5T_STR_NULLTERM of string array", i);
-    H5Tset_size(memtype, HDstrlen(buf)+1);
-    H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
-    H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
-  }
-  H5Dclose(dataset);
-  H5Gclose(group);
-
-
-  H5Tclose(fxdlenstr);
-  fxdlenstr = H5Tcopy(H5T_C_S1);
-  H5Tset_size(fxdlenstr, LENSTR);
-  H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
-  H5Tset_strpad(fxdlenstr, H5T_STR_NULLPAD);
-
-  group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  dataset = H5Dcreate2(group, "dset3", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-  for(i = 0;(hsize_t) i < sdim; i++) {
-    start[0] = i;
-    sprintf(buf, "This is row %1d of type H5T_STR_NULLPAD of", i);
-    H5Tset_size(memtype, HDstrlen(buf)+1);
-    H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
-    H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
-  }
-  H5Dclose(dataset);
-  H5Gclose(group);
-
-
-  group = H5Gcreate2(fid, "/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  dataset = H5Dcreate2(group, "dset4", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-  for(i = 0; (hsize_t)i < sdim; i++) {
-    start[0] = i;
-    sprintf(buf, "This is row %1d of type H5T_STR_NULLPAD of string array", i);
-    H5Tset_size(memtype, HDstrlen(buf)+1);
-    H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
-    H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
-  }
-  H5Dclose(dataset);
-  H5Gclose(group);
-
-  H5Tclose(fxdlenstr);
-  fxdlenstr = H5Tcopy(H5T_C_S1);
-  H5Tset_size(fxdlenstr, LENSTR);
-  H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
-  H5Tset_strpad(fxdlenstr, H5T_STR_SPACEPAD);
-
-  group = H5Gcreate2(fid, "/g5", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  dataset = H5Dcreate2(group, "dset5", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-  for(i = 0; (hsize_t)i < sdim; i++) {
-    start[0] = i;
-    sprintf(buf, "This is row %1d of type H5T_STR_SPACEPAD of", i);
-    H5Tset_size(memtype, HDstrlen(buf) + 1);
-    H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
-    H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
-  }
-  H5Dclose(dataset);
-  H5Gclose(group);
-
-
-  group = H5Gcreate2(fid, "/g6", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-  dataset = H5Dcreate2(group, "dset6", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-  for(i = 0; (hsize_t)i < sdim; i++) {
-    start[0] = i;
-    sprintf(buf, "This is row %1d of type H5T_STR_SPACEPAD of string array", i);
-    H5Tset_size(memtype, HDstrlen(buf) + 1);
-    H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
-    H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
-  }
-
-  H5Dclose(dataset);
-  H5Gclose(group);
-  H5Tclose(fxdlenstr);
-  H5Tclose(memtype);
-  H5Sclose(mem_space);
-  H5Sclose(hyper_space);
-  H5Sclose(space);
-  H5Fclose(fid);
+    hid_t fid, group, attr, dataset, space, space2, mem_space, hyper_space;
+    hid_t fxdlenstr, fxdlenstr2, memtype;
+    hsize_t dims[1], size[1], stride[1], count[1], block[1];
+    hsize_t start[1];
+
+
+    int i;
+    char buf[LENSTR+10];
+    char buf2[3*LENSTR2];
+    hsize_t sdim;
+
+    fid = H5Fcreate(FILE14, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+    fxdlenstr = H5Tcopy(H5T_C_S1);
+    H5Tset_size(fxdlenstr, LENSTR);
+    H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
+    H5Tset_strpad(fxdlenstr, H5T_STR_NULLTERM);
+
+    memtype = H5Tcopy(H5T_C_S1);
+    H5Tset_size(memtype, LENSTR);
+    H5Tset_cset(memtype, H5T_CSET_ASCII);
+    H5Tset_strpad(memtype, H5T_STR_NULLTERM);
+
+    sdim = 10;
+    size[0] = sdim;
+    space = H5Screate_simple(1, size, NULL);
+    size[0] = 1;
+    mem_space = H5Screate_simple(1,size,NULL);
+    hyper_space = H5Scopy(space);
+
+    /* dset1 */
+
+    group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    dataset = H5Dcreate2(group, "dset1", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    /* add attributes to dset1 */
+
+    fxdlenstr2 = H5Tcopy(H5T_C_S1);
+    H5Tset_size(fxdlenstr2, LENSTR2);
+    H5Tset_cset(fxdlenstr2, H5T_CSET_ASCII);
+    H5Tset_strpad(fxdlenstr2, H5T_STR_NULLTERM);
+
+    dims[0] = 3;
+    space2 = H5Screate_simple(1, dims, NULL);
+    attr = H5Acreate2(dataset, "attr1", fxdlenstr2, space2, H5P_DEFAULT, H5P_DEFAULT);
+    sprintf(&(buf2[0*LENSTR2]), "0123456789");
+    sprintf(&(buf2[1*LENSTR2]), "abcdefghij");
+    sprintf(&(buf2[2*LENSTR2]), "ABCDEFGHIJ");
+    H5Awrite(attr, fxdlenstr2, buf2);
+    H5Sclose(space2);
+    H5Tclose(fxdlenstr2);
+    H5Aclose(attr);
+
+    stride[0]=1;
+    count[0]=1;
+    block[0]=1;
+
+    for(i = 0; (hsize_t)i < sdim; i++) {
+        start[0] = i;
+        sprintf(buf, "This is row %1d of type H5T_STR_NULLTERM of", i);
+        H5Tset_size(memtype, HDstrlen(buf)+1);
+        H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+        H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+    }
+    H5Dclose(dataset);
+    H5Gclose(group);
+
+    group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    dataset = H5Dcreate2(group, "dset2", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    for(i = 0; (hsize_t)i < sdim; i++) {
+        start[0] = i;
+        sprintf(buf, "This is row %1d of type H5T_STR_NULLTERM of string array", i);
+        H5Tset_size(memtype, HDstrlen(buf)+1);
+        H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+        H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+    }
+    H5Dclose(dataset);
+    H5Gclose(group);
+
+
+    H5Tclose(fxdlenstr);
+    fxdlenstr = H5Tcopy(H5T_C_S1);
+    H5Tset_size(fxdlenstr, LENSTR);
+    H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
+    H5Tset_strpad(fxdlenstr, H5T_STR_NULLPAD);
+
+    group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    dataset = H5Dcreate2(group, "dset3", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    for(i = 0;(hsize_t) i < sdim; i++) {
+        start[0] = i;
+        sprintf(buf, "This is row %1d of type H5T_STR_NULLPAD of", i);
+        H5Tset_size(memtype, HDstrlen(buf)+1);
+        H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+        H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+    }
+    H5Dclose(dataset);
+    H5Gclose(group);
+
+
+    group = H5Gcreate2(fid, "/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    dataset = H5Dcreate2(group, "dset4", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    for(i = 0; (hsize_t)i < sdim; i++) {
+        start[0] = i;
+        sprintf(buf, "This is row %1d of type H5T_STR_NULLPAD of string array", i);
+        H5Tset_size(memtype, HDstrlen(buf)+1);
+        H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+        H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+    }
+    H5Dclose(dataset);
+    H5Gclose(group);
+
+    H5Tclose(fxdlenstr);
+    fxdlenstr = H5Tcopy(H5T_C_S1);
+    H5Tset_size(fxdlenstr, LENSTR);
+    H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
+    H5Tset_strpad(fxdlenstr, H5T_STR_SPACEPAD);
+
+    group = H5Gcreate2(fid, "/g5", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    dataset = H5Dcreate2(group, "dset5", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    for(i = 0; (hsize_t)i < sdim; i++) {
+        start[0] = i;
+        sprintf(buf, "This is row %1d of type H5T_STR_SPACEPAD of", i);
+        H5Tset_size(memtype, HDstrlen(buf) + 1);
+        H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+        H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+    }
+    H5Dclose(dataset);
+    H5Gclose(group);
+
+
+    group = H5Gcreate2(fid, "/g6", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    dataset = H5Dcreate2(group, "dset6", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    for(i = 0; (hsize_t)i < sdim; i++) {
+        start[0] = i;
+        sprintf(buf, "This is row %1d of type H5T_STR_SPACEPAD of string array", i);
+        H5Tset_size(memtype, HDstrlen(buf) + 1);
+        H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+        H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+    }
+
+    H5Dclose(dataset);
+    H5Gclose(group);
+    H5Tclose(fxdlenstr);
+    H5Tclose(memtype);
+    H5Sclose(mem_space);
+    H5Sclose(hyper_space);
+    H5Sclose(space);
+    H5Fclose(fid);
 }
 
 static void gent_enum(void)
@@ -1898,9 +1923,9 @@ static void gent_enum(void)
     hid_t file, type, space, dset;
     int val;
     enumtype data[] = {RED,   GREEN, BLUE,  GREEN, WHITE,
-         WHITE, BLACK, GREEN, BLUE,  RED,
-         RED,   BLUE,  GREEN, BLACK, WHITE,
-         RED,   WHITE, GREEN, GREEN, BLUE};
+            WHITE, BLACK, GREEN, BLUE,  RED,
+            RED,   BLUE,  GREEN, BLACK, WHITE,
+            RED,   WHITE, GREEN, GREEN, BLUE};
     hsize_t size[1] = {NELMTS(data)};
 
     file = H5Fcreate(FILE15,H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
@@ -1925,7 +1950,7 @@ static void gent_enum(void)
 
 static void gent_objref(void)
 {
-/*some code is taken from enum.c in the test dir */
+    /*some code is taken from enum.c in the test dir */
     hid_t  fid1;  /* HDF5 File IDs  */
     hid_t  dataset; /* Dataset ID   */
 
@@ -1934,8 +1959,8 @@ static void gent_objref(void)
     hid_t  tid1;       /* Datatype ID   */
     hsize_t  dims1[] = {SPACE1_DIM1};
     hobj_ref_t *wbuf,      /* buffer to write to disk */
-               *rbuf,       /* buffer read from disk */
-               *tbuf;       /* temp. buffer read from disk */
+    *rbuf,       /* buffer read from disk */
+    *tbuf;       /* temp. buffer read from disk */
     uint32_t   *tu32;      /* Temporary pointer to uint32 data */
     int        i;          /* counting variables */
     const char *write_comment = "Foo!"; /* Comments for group */
@@ -2033,20 +2058,20 @@ static void gent_datareg(void)
 
     hid_t  fid1;  /* HDF5 File IDs  */
     hid_t  dset1, /* Dataset ID   */
-                dset2;      /* Dereferenced dataset ID */
+    dset2;      /* Dereferenced dataset ID */
     hid_t  sid1,       /* Dataspace ID #1  */
-                sid2;       /* Dataspace ID #2  */
+    sid2;       /* Dataspace ID #2  */
     hsize_t  dims1[] = {SPACE1_DIM1},
-             dims2[] = {SPACE2_DIM1, SPACE2_DIM2};
+            dims2[] = {SPACE2_DIM1, SPACE2_DIM2};
     hsize_t  start[SPACE2_RANK];     /* Starting location of hyperslab */
     hsize_t  stride[SPACE2_RANK];    /* Stride of hyperslab */
     hsize_t  count[SPACE2_RANK];     /* Element count of hyperslab */
     hsize_t  block[SPACE2_RANK];     /* Block size of hyperslab */
     hsize_t  coord1[POINT1_NPOINTS][SPACE2_RANK]; /* Coordinates for point selection */
     hdset_reg_ref_t      *wbuf,      /* buffer to write to disk */
-               *rbuf;       /* buffer read from disk */
+    *rbuf;       /* buffer read from disk */
     uint8_t    *dwbuf,      /* Buffer for writing numeric data to disk */
-               *drbuf;      /* Buffer for reading numeric data from disk */
+    *drbuf;      /* Buffer for reading numeric data from disk */
     uint8_t    *tu8;        /* Temporary pointer to uint8 data */
     int        i;          /* counting variables */
 
@@ -2189,7 +2214,7 @@ static void gent_attrreg(void)
      */
     sid1 = H5Screate (H5S_NULL);
     dset1 = H5Dcreate2 (fid1, "Dataset1", H5T_STD_I32LE, sid1, H5P_DEFAULT,
-                H5P_DEFAULT, H5P_DEFAULT);
+            H5P_DEFAULT, H5P_DEFAULT);
     H5Sclose (sid1);
 
     /* Create references */
@@ -2229,7 +2254,7 @@ static void gent_attrreg(void)
 
     /* Create the attribute and write the region references to it. */
     attr1 = H5Acreate2 (dset1, "Attribute1", H5T_STD_REF_DSETREG, sid3, H5P_DEFAULT,
-                    H5P_DEFAULT);
+            H5P_DEFAULT);
     H5Awrite (attr1, H5T_STD_REF_DSETREG, wbuf);
 
     /* Close attribute dataspace */
@@ -2257,18 +2282,18 @@ static void gent_attrreg(void)
 /*taken from Elena's compound test file*/
 static void gent_nestcomp(void)
 {
-   /* Compound memeber of the compound datatype*/
+    /* Compound memeber of the compound datatype*/
     typedef struct cmp_t {
-        char   a;
-        float  b[2];
+            char   a;
+            float  b[2];
     } cmp_t;
 
     /* First structure  and dataset*/
     typedef struct s1_t {
- int    a;
- float  b;
- double c;
-        cmp_t  d;
+            int    a;
+            float  b;
+            double c;
+            cmp_t  d;
     } s2_t;
     hid_t      cmp_tid;    /* Handle for the compound datatype */
     hid_t      char_id;    /* Handle for the string datatype */
@@ -2344,7 +2369,7 @@ static void gent_nestcomp(void)
      */
     status = H5Dwrite(dataset, s2_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1);
     if(status < 0)
-     fprintf(stderr, "gent_nestcomp H5Dwrite failed\n");
+        fprintf(stderr, "gent_nestcomp H5Dwrite failed\n");
 
     /*
      * Release resources
@@ -2415,14 +2440,14 @@ static void gent_bitfields(void)
     /* bitfield_1 */
     nelmts = sizeof(buf);
     if((type = H5Tcopy(H5T_STD_B8LE)) < 0 ||
-         (space = H5Screate_simple(1, &nelmts, NULL)) < 0 ||
-         (dset = H5Dcreate2(grp, "bitfield_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
-     goto error;
+            (space = H5Screate_simple(1, &nelmts, NULL)) < 0 ||
+            (dset = H5Dcreate2(grp, "bitfield_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        goto error;
 
     for(i = 0; i < sizeof buf; i++)
         buf[i] = (unsigned char)0xff ^ (unsigned char)i;
     if(H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
-     goto error;
+        goto error;
     if(H5Sclose(space) < 0) goto error;
     if(H5Tclose(type) < 0) goto error;
     if(H5Dclose(dset) < 0) goto error;
@@ -2430,25 +2455,25 @@ static void gent_bitfields(void)
     /* bitfield_2 */
     nelmts = sizeof(buf)/2;
     if((type = H5Tcopy(H5T_STD_B16LE)) < 0 ||
-         (space = H5Screate_simple(1, &nelmts, NULL)) < 0 ||
-         (dset = H5Dcreate2(grp, "bitfield_2", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
-     goto error;
+            (space = H5Screate_simple(1, &nelmts, NULL)) < 0 ||
+            (dset = H5Dcreate2(grp, "bitfield_2", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        goto error;
     for(i = 0; i < sizeof buf; i++)
         buf[i] = (unsigned char)0xff ^ (unsigned char)i;
     if(H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
-         goto error;
+        goto error;
     if(H5Sclose(space) < 0) goto error;
     if(H5Tclose(type) < 0) goto error;
     if(H5Dclose(dset) < 0) goto error;
     if(H5Gclose(grp) < 0) goto error;
     H5Fclose(file);
 
- error:
+    error:
     H5E_BEGIN_TRY {
- H5Gclose(grp);
- H5Tclose(type);
- H5Sclose(space);
- H5Dclose(dset);
+        H5Gclose(grp);
+        H5Tclose(type);
+        H5Sclose(space);
+        H5Dclose(dset);
     } H5E_END_TRY;
 }
 
@@ -2464,7 +2489,7 @@ static void gent_vldatatypes(void)
 
     /* Allocate and initialize VL dataset to write */
     for(i = 0; i < SPACE1_DIM1; i++) {
-         int j;
+        int j;
 
         wdata[i].p = HDmalloc((i + 1) * sizeof(int));
         wdata[i].len = i + 1;
@@ -2491,7 +2516,7 @@ static void gent_vldatatypes(void)
 
     /* Allocate and initialize VL dataset to write */
     for(i = 0; i < SPACE1_DIM1; i++) {
-     int j;
+        int j;
 
         wdata[i].p = HDmalloc((i + 1) * sizeof(float));
         wdata[i].len = i + 1;
@@ -2615,9 +2640,9 @@ gent_vldatatypes2(void)
 static void gent_vldatatypes3(void)
 {
     typedef struct {             /* Struct that the VL sequences are composed of */
-        int i;
-        float f;
-        hvl_t v;
+            int i;
+            float f;
+            hvl_t v;
     } s1;
     s1 wdata[SPACE1_DIM1];   /* Information to write */
     hid_t  fid1;  /* HDF5 File IDs  */
@@ -2685,8 +2710,8 @@ static void gent_vldatatypes3(void)
 static void gent_vldatatypes4(void)
 {
     typedef struct {             /* Struct that the VL sequences are composed of */
-        int i;
-        float f;
+            int i;
+            float f;
     } s1;
     hvl_t wdata[SPACE1_DIM1];   /* Information to write */
     hid_t  fid1;  /* HDF5 File IDs  */
@@ -2704,7 +2729,7 @@ static void gent_vldatatypes4(void)
         for(j=0; j<(i+1); j++) {
             ((s1 *)wdata[i].p)[j].i=i*10+j;
             ((s1 *)wdata[i].p)[j].f=(float)((i*20+j)/3.0);
-          } /* end for */
+        } /* end for */
     } /* end for */
 
     /* Create file */
@@ -2815,7 +2840,7 @@ static void gent_vldatatypes5(void)
    via region reference for testing refion reference output.
    Note: this was added originally prepared for bug2092. before the fix h5dump didn't 
          display array indices every 262 x N (N > 0) based on 2000x1000 dims.
-*/
+ */
 #define SPACE_ARRAY1BIG_DIM 2000
 #define ARRAY1BIG_DIM 1000
 
@@ -2831,7 +2856,7 @@ static void gent_array1_big(void)
     int        i,j;        /* counting variables */
     herr_t  ret;  /* Generic return value  */
 
-    
+
     /* for region reference dataset */
     hid_t  dset2;
     hid_t  sid2;
@@ -3056,8 +3081,8 @@ static void gent_array3(void)
 static void gent_array4(void)
 {
     typedef struct {        /* Typedef for compound datatype */
-        int i;
-        float f;
+            int i;
+            float f;
     } s2_t;
     s2_t wdata[SPACE1_DIM1][ARRAY1_DIM1];   /* Information to write */
     hid_t  fid1;  /* HDF5 File IDs  */
@@ -3122,8 +3147,8 @@ static void gent_array4(void)
 static void gent_array5(void)
 {
     typedef struct {        /* Typedef for compound datatype */
-        int i;
-        float f[ARRAY1_DIM1];
+            int i;
+            float f[ARRAY1_DIM1];
     } s2_t;
     s2_t wdata[SPACE1_DIM1][ARRAY1_DIM1];   /* Information to write */
     hid_t  fid1;  /* HDF5 File IDs  */
@@ -3341,7 +3366,7 @@ static void gent_array8(void)
      * elements within the array datatype.
      */
     for (i=0; i<F64_DIM1; i++)
-                wdata[i] = i;
+        wdata[i] = i;
 
     /*
      * Create a new file using the default properties.
@@ -3380,9 +3405,9 @@ static void gent_array8(void)
 static void gent_empty(void)
 {
     typedef struct {
-        int a;
-        float b;
-        char c;
+            int a;
+            float b;
+            char c;
     } empty_struct;
     hid_t file, dset, space, type;
     hsize_t dims[] = { SPACE1_DIM1 };
@@ -3537,8 +3562,8 @@ void gent_split_file(void)
     dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     for(i = 0; i < 10; i++)
-         for(j = 0; j < 15; j++)
-              dset[i][j] = i + j;
+        for(j = 0; j < 15; j++)
+            dset[i][j] = i + j;
 
     H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset);
     H5Sclose(space);
@@ -3569,8 +3594,8 @@ void gent_family(void)
     dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     for(i = 0; i < 10; i++)
-         for(j = 0; j < 15; j++)
-              dset[i][j] = i + j;
+        for(j = 0; j < 15; j++)
+            dset[i][j] = i + j;
 
     H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset);
     H5Sclose(space);
@@ -3609,13 +3634,13 @@ void gent_multi(void)
         memb_map[mt] = mt;
         sprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]);
         memb_name[mt] = sv[mt];
-/*printf("memb_name[%d]=%s, memb_map[%d]=%d; ", mt, memb_name[mt], mt, memb_map[mt]);*/
+        /*printf("memb_name[%d]=%s, memb_map[%d]=%d; ", mt, memb_name[mt], mt, memb_map[mt]);*/
         memb_addr[mt] = MAX(mt - 1,0) * (HADDR_MAX / 10);
     }
     memb_map[H5FD_MEM_DEFAULT] = H5FD_MEM_SUPER;
 
     H5Pset_fapl_multi(fapl, memb_map, memb_fapl, memb_name,
-                      memb_addr, FALSE);
+            memb_addr, FALSE);
 
     fid = H5Fcreate(FILE36, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
 
@@ -3626,8 +3651,8 @@ void gent_multi(void)
     dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     for(i = 0; i < 10; i++)
-         for(j = 0; j < 15; j++)
-              dset[i][j] = i + j;
+        for(j = 0; j < 15; j++)
+            dset[i][j] = i + j;
 
     H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset);
 
@@ -3660,11 +3685,11 @@ static void gent_large_objname(void)
 static void gent_vlstr(void)
 {
     const char *wdata[SPACE1_DIM1]= {
-        "Four score and seven years ago our forefathers brought forth on this continent a new nation,",
-        "conceived in liberty and dedicated to the proposition that all men are created equal.",
-        "",
-        NULL
-        };   /* Information to write */
+            "Four score and seven years ago our forefathers brought forth on this continent a new nation,",
+            "conceived in liberty and dedicated to the proposition that all men are created equal.",
+            "",
+            NULL
+    };   /* Information to write */
     const char *string_att= "This is the string for the attribute";
     hid_t  fid1;  /* HDF5 File IDs  */
     hid_t  dataset, root; /* Dataset ID   */
@@ -3709,12 +3734,12 @@ static void gent_vlstr(void)
 static void gent_char(void)
 {
     const char *wdata =
-        "Four score and seven years ago our forefathers brought "
-        "forth on this continent a new nation, conceived in "
-        "liberty and dedicated to the proposition that all "
-        "men are created equal. Now we are engaged in a great "
-        "civil war, testing whether that nation or any nation "
-        "so conceived and so dedicated can long endure.";
+            "Four score and seven years ago our forefathers brought "
+            "forth on this continent a new nation, conceived in "
+            "liberty and dedicated to the proposition that all "
+            "men are created equal. Now we are engaged in a great "
+            "civil war, testing whether that nation or any nation "
+            "so conceived and so dedicated can long endure.";
     hid_t       fid1;               /* HDF5 File IDs    */
     hid_t       dataset;            /* Dataset ID       */
     hid_t       sid1;               /* Dataspace ID     */
@@ -3755,427 +3780,427 @@ static void gent_char(void)
  */
 
 static void write_attr_in(hid_t loc_id,
-                          const char* dset_name, /* for saving reference to dataset*/
-                          hid_t fid)
+        const char* dset_name, /* for saving reference to dataset*/
+        hid_t fid)
 {
- /* Compound datatype */
- typedef struct s_t
- {
-  char   a;
-  double b;
- } s_t;
-
- typedef enum
- {
-  E_RED,
-  E_GREEN
- } e_t;
-
- hid_t   aid;
- hid_t   sid;
- hid_t   tid;
- herr_t  status;
- int     val, i, j, k, n;
- float   f;
-
- /* create 1D attributes with dimension [2], 2 elements */
- hsize_t    dims[1]={2};
- char       buf1[2][2]= {"ab","de"};        /* string */
- char       buf2[2]= {1,2};                 /* bitfield, opaque */
- s_t        buf3[2]= {{1,2},{3,4}};         /* compound */
- hobj_ref_t buf4[2];                        /* reference */
- hvl_t      buf5[2];                        /* vlen */
- hsize_t    dimarray[1]={3};                /* array dimension */
- int        buf6[2][3]= {{1,2,3},{4,5,6}};  /* array */
- int        buf7[2]= {1,2};                 /* integer */
- float      buf8[2]= {1,2};                 /* float */
-
- /* create 2D attributes with dimension [3][2], 6 elements */
- hsize_t    dims2[2]={3,2};
- char       buf12[6][2]= {"ab","cd","ef","gh","ij","kl"};         /* string */
- char       buf22[3][2]= {{1,2},{3,4},{5,6}};                     /* bitfield, opaque */
- s_t        buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}};   /* compound */
- hobj_ref_t buf42[3][2];                                          /* reference */
- hvl_t      buf52[3][2];                                          /* vlen */
- int        buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}};  /* array */
- int        buf72[3][2]= {{1,2},{3,4},{5,6}};                     /* integer */
- float      buf82[3][2]= {{1,2},{3,4},{5,6}};                     /* float */
-
- /* create 3D attributes with dimension [4][3][2], 24 elements */
- hsize_t    dims3[3]={4,3,2};
- char       buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq",
- "rs","tu","vw","xz","AB","CD","EF","GH",
- "IJ","KL","MN","PQ","RS","TU","VW","XZ"};  /* string */
- char       buf23[4][3][2];    /* bitfield, opaque */
- s_t        buf33[4][3][2];    /* compound */
- hobj_ref_t buf43[4][3][2];    /* reference */
- hvl_t      buf53[4][3][2];    /* vlen */
- int        buf63[24][3];      /* array */
- int        buf73[4][3][2];    /* integer */
- float      buf83[4][3][2];    /* float */
-
+    /* Compound datatype */
+    typedef struct s_t
+    {
+            char   a;
+            double b;
+    } s_t;
 
-/*-------------------------------------------------------------------------
- * 1D attributes
- *-------------------------------------------------------------------------
- */
+    typedef enum
+    {
+        E_RED,
+        E_GREEN
+    } e_t;
 
-/*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_C_S1);
- status  = H5Tset_size(tid, 2);
- write_attr(loc_id,1,dims,"string",tid,buf1);
- status = H5Tclose(tid);
+    hid_t   aid;
+    hid_t   sid;
+    hid_t   tid;
+    herr_t  status;
+    int     val, i, j, k, n;
+    float   f;
+
+    /* create 1D attributes with dimension [2], 2 elements */
+    hsize_t    dims[1]={2};
+    char       buf1[2][2]= {"ab","de"};        /* string */
+    char       buf2[2]= {1,2};                 /* bitfield, opaque */
+    s_t        buf3[2]= {{1,2},{3,4}};         /* compound */
+    hobj_ref_t buf4[2];                        /* reference */
+    hvl_t      buf5[2];                        /* vlen */
+    hsize_t    dimarray[1]={3};                /* array dimension */
+    int        buf6[2][3]= {{1,2,3},{4,5,6}};  /* array */
+    int        buf7[2]= {1,2};                 /* integer */
+    float      buf8[2]= {1,2};                 /* float */
+
+    /* create 2D attributes with dimension [3][2], 6 elements */
+    hsize_t    dims2[2]={3,2};
+    char       buf12[6][2]= {"ab","cd","ef","gh","ij","kl"};         /* string */
+    char       buf22[3][2]= {{1,2},{3,4},{5,6}};                     /* bitfield, opaque */
+    s_t        buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}};   /* compound */
+    hobj_ref_t buf42[3][2];                                          /* reference */
+    hvl_t      buf52[3][2];                                          /* vlen */
+    int        buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}};  /* array */
+    int        buf72[3][2]= {{1,2},{3,4},{5,6}};                     /* integer */
+    float      buf82[3][2]= {{1,2},{3,4},{5,6}};                     /* float */
+
+    /* create 3D attributes with dimension [4][3][2], 24 elements */
+    hsize_t    dims3[3]={4,3,2};
+    char       buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq",
+            "rs","tu","vw","xz","AB","CD","EF","GH",
+            "IJ","KL","MN","PQ","RS","TU","VW","XZ"};  /* string */
+    char       buf23[4][3][2];    /* bitfield, opaque */
+    s_t        buf33[4][3][2];    /* compound */
+    hobj_ref_t buf43[4][3][2];    /* reference */
+    hvl_t      buf53[4][3][2];    /* vlen */
+    int        buf63[24][3];      /* array */
+    int        buf73[4][3][2];    /* integer */
+    float      buf83[4][3][2];    /* float */
 
-/*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_STD_B8LE);
- write_attr(loc_id,1,dims,"bitfield",tid,buf2);
- status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_OPAQUE, 1);
- status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
- write_attr(loc_id,1,dims,"opaque",tid,buf2);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * 1D attributes
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
- write_attr(loc_id,1,dims,"compound",tid,buf3);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_STRING
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_C_S1);
+    status  = H5Tset_size(tid, 2);
+    write_attr(loc_id,1,dims,"string",tid,buf1);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if(dset_name)
- {
-  status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,-1);
-  status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,-1);
-  write_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4);
- }
+    /*-------------------------------------------------------------------------
+     * H5T_BITFIELD
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_STD_B8LE);
+    write_attr(loc_id,1,dims,"bitfield",tid,buf2);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
- H5Tenum_insert(tid, "RED",   (val = 0, &val));
- H5Tenum_insert(tid, "GREEN", (val = 1, &val));
- write_attr(loc_id,1,dims,"enum",tid,0);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_OPAQUE
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_OPAQUE, 1);
+    status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
+    write_attr(loc_id,1,dims,"opaque",tid,buf2);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_COMPOUND
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
+    H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
+    write_attr(loc_id,1,dims,"compound",tid,buf3);
+    status = H5Tclose(tid);
 
- /* Allocate and initialize VL dataset to write */
-
- buf5[0].len = 1;
- buf5[0].p = HDmalloc(1 * sizeof(int));
- ((int *)buf5[0].p)[0] = 1;
- buf5[1].len = 2;
- buf5[1].p = HDmalloc(2 * sizeof(int));
- ((int *)buf5[1].p)[0] = 2;
- ((int *)buf5[1].p)[1] = 3;
-
- sid = H5Screate_simple(1, dims, NULL);
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite(aid, tid, buf5);
- HDassert(status >= 0);
- status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5);
- HDassert(status >= 0);
- status = H5Aclose(aid);
- status = H5Tclose(tid);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_REFERENCE
+     *-------------------------------------------------------------------------
+     */
+    /* Create references to dataset */
+    if(dset_name)
+    {
+        status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,-1);
+        status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,-1);
+        write_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4);
+    }
 
-/*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_attr(loc_id, 1, dims, "array", tid, buf6);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_ENUM
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
+    H5Tenum_insert(tid, "RED",   (val = 0, &val));
+    H5Tenum_insert(tid, "GREEN", (val = 1, &val));
+    write_attr(loc_id,1,dims,"enum",tid,0);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- write_attr(loc_id, 1, dims, "integer", H5T_NATIVE_INT, buf7);
- write_attr(loc_id, 1, dims, "float", H5T_NATIVE_FLOAT, buf8);
+    /*-------------------------------------------------------------------------
+     * H5T_VLEN
+     *-------------------------------------------------------------------------
+     */
 
+    /* Allocate and initialize VL dataset to write */
 
-/*-------------------------------------------------------------------------
- * 2D attributes
- *-------------------------------------------------------------------------
- */
+    buf5[0].len = 1;
+    buf5[0].p = HDmalloc(1 * sizeof(int));
+    ((int *)buf5[0].p)[0] = 1;
+    buf5[1].len = 2;
+    buf5[1].p = HDmalloc(2 * sizeof(int));
+    ((int *)buf5[1].p)[0] = 2;
+    ((int *)buf5[1].p)[1] = 3;
+
+    sid = H5Screate_simple(1, dims, NULL);
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Awrite(aid, tid, buf5);
+    HDassert(status >= 0);
+    status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5);
+    HDassert(status >= 0);
+    status = H5Aclose(aid);
+    status = H5Tclose(tid);
+    status = H5Sclose(sid);
 
-/*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_C_S1);
- status  = H5Tset_size(tid, 2);
- write_attr(loc_id,2,dims2,"string2D",tid,buf12);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_ARRAY
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_attr(loc_id, 1, dims, "array", tid, buf6);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_STD_B8LE);
- write_attr(loc_id,2,dims2,"bitfield2D",tid,buf22);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_INTEGER and H5T_FLOAT
+     *-------------------------------------------------------------------------
+     */
+    write_attr(loc_id, 1, dims, "integer", H5T_NATIVE_INT, buf7);
+    write_attr(loc_id, 1, dims, "float", H5T_NATIVE_FLOAT, buf8);
 
-/*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_OPAQUE, 1);
- status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
- write_attr(loc_id,2,dims2,"opaque2D",tid,buf22);
- status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
- write_attr(loc_id,2,dims2,"compound2D",tid,buf32);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * 2D attributes
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if(dset_name)
- {
-  for(i = 0; i < 3; i++) {
-   for(j = 0; j < 2; j++) {
-    status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,-1);
-   }
-  }
-  write_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42);
- }
+    /*-------------------------------------------------------------------------
+     * H5T_STRING
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_C_S1);
+    status  = H5Tset_size(tid, 2);
+    write_attr(loc_id,2,dims2,"string2D",tid,buf12);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
- H5Tenum_insert(tid, "RED",   (val = 0, &val));
- H5Tenum_insert(tid, "GREEN", (val = 1, &val));
- write_attr(loc_id,2,dims2,"enum2D",tid,0);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_BITFIELD
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_STD_B8LE);
+    write_attr(loc_id,2,dims2,"bitfield2D",tid,buf22);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_OPAQUE
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_OPAQUE, 1);
+    status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
+    write_attr(loc_id,2,dims2,"opaque2D",tid,buf22);
+    status = H5Tclose(tid);
 
- /* Allocate and initialize VL dataset to write */
- n=0;
- for(i = 0; i < 3; i++) {
-  for(j = 0; j < 2; j++) {
-    int l;
-
-    buf52[i][j].p = HDmalloc((i + 1) * sizeof(int));
-    buf52[i][j].len = i + 1;
-    for(l = 0; l < i + 1; l++)
-      ((int *)buf52[i][j].p)[l] = n++;
-  }
- }
-
- sid = H5Screate_simple(2, dims2, NULL);
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite(aid, tid, buf52);
- HDassert(status >= 0);
- status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52);
- HDassert(status >= 0);
- status = H5Aclose(aid);
- status = H5Tclose(tid);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_COMPOUND
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
+    H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
+    write_attr(loc_id,2,dims2,"compound2D",tid,buf32);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_attr(loc_id, 2, dims2, "array2D", tid, buf62);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_REFERENCE
+     *-------------------------------------------------------------------------
+     */
+    /* Create references to dataset */
+    if(dset_name)
+    {
+        for(i = 0; i < 3; i++) {
+            for(j = 0; j < 2; j++) {
+                status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,-1);
+            }
+        }
+        write_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42);
+    }
 
-/*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- write_attr(loc_id, 2, dims2, "integer2D", H5T_NATIVE_INT, buf72);
- write_attr(loc_id, 2, dims2, "float2D", H5T_NATIVE_FLOAT, buf82);
+    /*-------------------------------------------------------------------------
+     * H5T_ENUM
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
+    H5Tenum_insert(tid, "RED",   (val = 0, &val));
+    H5Tenum_insert(tid, "GREEN", (val = 1, &val));
+    write_attr(loc_id,2,dims2,"enum2D",tid,0);
+    status = H5Tclose(tid);
 
+    /*-------------------------------------------------------------------------
+     * H5T_VLEN
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * 3D attributes
- *-------------------------------------------------------------------------
- */
+    /* Allocate and initialize VL dataset to write */
+    n=0;
+    for(i = 0; i < 3; i++) {
+        for(j = 0; j < 2; j++) {
+            int l;
+
+            buf52[i][j].p = HDmalloc((i + 1) * sizeof(int));
+            buf52[i][j].len = i + 1;
+            for(l = 0; l < i + 1; l++)
+                ((int *)buf52[i][j].p)[l] = n++;
+        }
+    }
 
-/*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_C_S1);
- status  = H5Tset_size(tid, 2);
- write_attr(loc_id,3,dims3,"string3D",tid,buf13);
- status = H5Tclose(tid);
+    sid = H5Screate_simple(2, dims2, NULL);
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Awrite(aid, tid, buf52);
+    HDassert(status >= 0);
+    status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52);
+    HDassert(status >= 0);
+    status = H5Aclose(aid);
+    status = H5Tclose(tid);
+    status = H5Sclose(sid);
 
-/*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_ARRAY
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_attr(loc_id, 2, dims2, "array2D", tid, buf62);
+    status = H5Tclose(tid);
 
- n=1;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    buf23[i][j][k]=n++;
-   }
-  }
- }
- tid = H5Tcopy(H5T_STD_B8LE);
- write_attr(loc_id,3,dims3,"bitfield3D",tid,buf23);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_INTEGER and H5T_FLOAT
+     *-------------------------------------------------------------------------
+     */
+    write_attr(loc_id, 2, dims2, "integer2D", H5T_NATIVE_INT, buf72);
+    write_attr(loc_id, 2, dims2, "float2D", H5T_NATIVE_FLOAT, buf82);
 
-/*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_OPAQUE, 1);
- status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
- write_attr(loc_id,3,dims3,"opaque3D",tid,buf23);
- status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * 3D attributes
+     *-------------------------------------------------------------------------
+     */
 
- n=1;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    buf33[i][j][k].a=n++;
-    buf33[i][j][k].b=n++;
-   }
-  }
- }
- tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
- write_attr(loc_id,3,dims3,"compound3D",tid,buf33);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_STRING
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_C_S1);
+    status  = H5Tset_size(tid, 2);
+    write_attr(loc_id,3,dims3,"string3D",tid,buf13);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if(dset_name)
- {
-  for(i = 0; i < 4; i++) {
-   for(j = 0; j < 3; j++) {
-    for(k = 0; k < 2; k++)
-     status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,-1);
-   }
-  }
- write_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43);
- }
+    /*-------------------------------------------------------------------------
+     * H5T_BITFIELD
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
- H5Tenum_insert(tid, "RED",   (val = 0, &val));
- H5Tenum_insert(tid, "GREEN", (val = 1, &val));
- write_attr(loc_id,3,dims3,"enum3D",tid,0);
- status = H5Tclose(tid);
+    n=1;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                buf23[i][j][k]=n++;
+            }
+        }
+    }
+    tid = H5Tcopy(H5T_STD_B8LE);
+    write_attr(loc_id,3,dims3,"bitfield3D",tid,buf23);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_OPAQUE
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_OPAQUE, 1);
+    status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
+    write_attr(loc_id,3,dims3,"opaque3D",tid,buf23);
+    status = H5Tclose(tid);
 
- /* Allocate and initialize VL dataset to write */
- n = 0;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    int l;
-
-    buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int));
-    buf53[i][j][k].len = i + 1;
-    for(l = 0; l < i + 1; l++)
-      ((int *)buf53[i][j][k].p)[l] = n++;
-   }
-  }
- }
-
- sid = H5Screate_simple(3, dims3, NULL);
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite(aid, tid, buf53);
- HDassert(status >= 0);
- status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53);
- HDassert(status >= 0);
- status = H5Aclose(aid);
- status = H5Tclose(tid);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_COMPOUND
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- n = 1;
- for(i = 0; i < 24; i++)
-  for(j = 0; j < (int)dimarray[0]; j++)
-    buf63[i][j] = n++;
+    n=1;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                buf33[i][j][k].a=n++;
+                buf33[i][j][k].b=n++;
+            }
+        }
+    }
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
+    H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
+    write_attr(loc_id,3,dims3,"compound3D",tid,buf33);
+    status = H5Tclose(tid);
+
+    /*-------------------------------------------------------------------------
+     * H5T_REFERENCE
+     *-------------------------------------------------------------------------
+     */
+    /* Create references to dataset */
+    if(dset_name)
+    {
+        for(i = 0; i < 4; i++) {
+            for(j = 0; j < 3; j++) {
+                for(k = 0; k < 2; k++)
+                    status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,-1);
+            }
+        }
+        write_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43);
+    }
 
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_attr(loc_id, 3, dims3, "array3D", tid, buf63);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_ENUM
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
+    H5Tenum_insert(tid, "RED",   (val = 0, &val));
+    H5Tenum_insert(tid, "GREEN", (val = 1, &val));
+    write_attr(loc_id,3,dims3,"enum3D",tid,0);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- n=1; f=1;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    buf73[i][j][k]=n++;
-    buf83[i][j][k]=f++;
-   }
-  }
- }
- write_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73);
- write_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83);
+    /*-------------------------------------------------------------------------
+     * H5T_VLEN
+     *-------------------------------------------------------------------------
+     */
+
+    /* Allocate and initialize VL dataset to write */
+    n = 0;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                int l;
+
+                buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int));
+                buf53[i][j][k].len = i + 1;
+                for(l = 0; l < i + 1; l++)
+                    ((int *)buf53[i][j][k].p)[l] = n++;
+            }
+        }
+    }
+
+    sid = H5Screate_simple(3, dims3, NULL);
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Awrite(aid, tid, buf53);
+    HDassert(status >= 0);
+    status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53);
+    HDassert(status >= 0);
+    status = H5Aclose(aid);
+    status = H5Tclose(tid);
+    status = H5Sclose(sid);
+
+    /*-------------------------------------------------------------------------
+     * H5T_ARRAY
+     *-------------------------------------------------------------------------
+     */
+    n = 1;
+    for(i = 0; i < 24; i++)
+        for(j = 0; j < (int)dimarray[0]; j++)
+            buf63[i][j] = n++;
+
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_attr(loc_id, 3, dims3, "array3D", tid, buf63);
+    status = H5Tclose(tid);
+
+    /*-------------------------------------------------------------------------
+     * H5T_INTEGER and H5T_FLOAT
+     *-------------------------------------------------------------------------
+     */
+    n=1; f=1;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                buf73[i][j][k]=n++;
+                buf83[i][j][k]=f++;
+            }
+        }
+    }
+    write_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73);
+    write_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83);
 }
 
 
@@ -4195,441 +4220,441 @@ static void write_attr_in(hid_t loc_id,
  */
 
 static void write_dset_in(hid_t loc_id,
-                          const char* dset_name, /* for saving reference to dataset*/
-                          hid_t fid)
+        const char* dset_name, /* for saving reference to dataset*/
+        hid_t fid)
 {
- /* Compound datatype */
- typedef struct s_t
- {
-  char   a;
-  double b;
- } s_t;
-
- typedef enum
- {
-  E_RED,
-  E_GREEN
- } e_t;
-
- hid_t   did;
- hid_t   sid;
- hid_t   tid;
- hid_t   plist_id;
- herr_t  status;
- int     val, i, j, k, n;
- float   f;
- int     fillvalue=2;
-
- /* create 1D attributes with dimension [2], 2 elements */
- hsize_t    dims[1]={2};
- char       buf1[2][2]= {"ab","de"};        /* string */
- char       buf2[2]= {1,2};                 /* bitfield, opaque */
- s_t        buf3[2]= {{1,2},{3,4}};         /* compound */
- hobj_ref_t buf4[2];                        /* reference */
- hvl_t      buf5[2];                        /* vlen */
- hsize_t    dimarray[1]={3};                /* array dimension */
- int        buf6[2][3]= {{1,2,3},{4,5,6}};  /* array */
- int        buf7[2]= {1,2};                 /* integer */
- float      buf8[2]= {1,2};                 /* float */
-
- /* create 2D attributes with dimension [3][2], 6 elements */
- hsize_t    dims2[2]={3,2};
- char       buf12[6][2]= {"ab","cd","ef","gh","ij","kl"};         /* string */
- char       buf22[3][2]= {{1,2},{3,4},{5,6}};                     /* bitfield, opaque */
- s_t        buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}};   /* compound */
- hobj_ref_t buf42[3][2];                                          /* reference */
- hvl_t      buf52[3][2];                                          /* vlen */
- int        buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}};  /* array */
- int        buf72[3][2]= {{1,2},{3,4},{5,6}};                     /* integer */
- float      buf82[3][2]= {{1,2},{3,4},{5,6}};                     /* float */
-
- /* create 3D attributes with dimension [4][3][2], 24 elements */
- hsize_t    dims3[3]={4,3,2};
- char       buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq",
- "rs","tu","vw","xz","AB","CD","EF","GH",
- "IJ","KL","MN","PQ","RS","TU","VW","XZ"};  /* string */
- char       buf23[4][3][2];    /* bitfield, opaque */
- s_t        buf33[4][3][2];    /* compound */
- hobj_ref_t buf43[4][3][2];    /* reference */
- hvl_t      buf53[4][3][2];    /* vlen */
- int        buf63[24][3];      /* array */
- int        buf73[4][3][2];    /* integer */
- float      buf83[4][3][2];    /* float */
+    /* Compound datatype */
+    typedef struct s_t
+    {
+            char   a;
+            double b;
+    } s_t;
 
+    typedef enum
+    {
+        E_RED,
+        E_GREEN
+    } e_t;
 
-/*-------------------------------------------------------------------------
- * 1D
- *-------------------------------------------------------------------------
- */
+    hid_t   did;
+    hid_t   sid;
+    hid_t   tid;
+    hid_t   plist_id;
+    herr_t  status;
+    int     val, i, j, k, n;
+    float   f;
+    int     fillvalue=2;
+
+    /* create 1D attributes with dimension [2], 2 elements */
+    hsize_t    dims[1]={2};
+    char       buf1[2][2]= {"ab","de"};        /* string */
+    char       buf2[2]= {1,2};                 /* bitfield, opaque */
+    s_t        buf3[2]= {{1,2},{3,4}};         /* compound */
+    hobj_ref_t buf4[2];                        /* reference */
+    hvl_t      buf5[2];                        /* vlen */
+    hsize_t    dimarray[1]={3};                /* array dimension */
+    int        buf6[2][3]= {{1,2,3},{4,5,6}};  /* array */
+    int        buf7[2]= {1,2};                 /* integer */
+    float      buf8[2]= {1,2};                 /* float */
+
+    /* create 2D attributes with dimension [3][2], 6 elements */
+    hsize_t    dims2[2]={3,2};
+    char       buf12[6][2]= {"ab","cd","ef","gh","ij","kl"};         /* string */
+    char       buf22[3][2]= {{1,2},{3,4},{5,6}};                     /* bitfield, opaque */
+    s_t        buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}};   /* compound */
+    hobj_ref_t buf42[3][2];                                          /* reference */
+    hvl_t      buf52[3][2];                                          /* vlen */
+    int        buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}};  /* array */
+    int        buf72[3][2]= {{1,2},{3,4},{5,6}};                     /* integer */
+    float      buf82[3][2]= {{1,2},{3,4},{5,6}};                     /* float */
+
+    /* create 3D attributes with dimension [4][3][2], 24 elements */
+    hsize_t    dims3[3]={4,3,2};
+    char       buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq",
+            "rs","tu","vw","xz","AB","CD","EF","GH",
+            "IJ","KL","MN","PQ","RS","TU","VW","XZ"};  /* string */
+    char       buf23[4][3][2];    /* bitfield, opaque */
+    s_t        buf33[4][3][2];    /* compound */
+    hobj_ref_t buf43[4][3][2];    /* reference */
+    hvl_t      buf53[4][3][2];    /* vlen */
+    int        buf63[24][3];      /* array */
+    int        buf73[4][3][2];    /* integer */
+    float      buf83[4][3][2];    /* float */
 
-/*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_C_S1);
- status  = H5Tset_size(tid, 2);
- write_dset(loc_id,1,dims,"string",tid,buf1);
- status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_STD_B8LE);
- write_dset(loc_id,1,dims,"bitfield",tid,buf2);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * 1D
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_OPAQUE, 1);
- status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
- write_dset(loc_id,1,dims,"opaque",tid,buf2);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_STRING
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_C_S1);
+    status  = H5Tset_size(tid, 2);
+    write_dset(loc_id,1,dims,"string",tid,buf1);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
- write_dset(loc_id,1,dims,"compound",tid,buf3);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_BITFIELD
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_STD_B8LE);
+    write_dset(loc_id,1,dims,"bitfield",tid,buf2);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if(dset_name)
- {
-  status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,-1);
-  status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,-1);
-  write_dset(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4);
- }
+    /*-------------------------------------------------------------------------
+     * H5T_OPAQUE
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_OPAQUE, 1);
+    status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
+    write_dset(loc_id,1,dims,"opaque",tid,buf2);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
- H5Tenum_insert(tid, "RED",   (val = 0, &val));
- H5Tenum_insert(tid, "GREEN", (val = 1, &val));
- write_dset(loc_id,1,dims,"enum",tid,0);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_COMPOUND
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
+    H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
+    write_dset(loc_id,1,dims,"compound",tid,buf3);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_REFERENCE
+     *-------------------------------------------------------------------------
+     */
+    /* Create references to dataset */
+    if(dset_name)
+    {
+        status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,-1);
+        status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,-1);
+        write_dset(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4);
+    }
 
- /* Allocate and initialize VL dataset to write */
-
- buf5[0].len = 1;
- buf5[0].p = HDmalloc( 1 * sizeof(int));
- ((int *)buf5[0].p)[0]=1;
- buf5[1].len = 2;
- buf5[1].p = HDmalloc( 2 * sizeof(int));
- ((int *)buf5[1].p)[0]=2;
- ((int *)buf5[1].p)[1]=3;
-
- sid = H5Screate_simple(1, dims, NULL);
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
- HDassert(status >= 0);
- status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5);
- HDassert(status >= 0);
- status = H5Dclose(did);
- status = H5Tclose(tid);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_ENUM
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
+    H5Tenum_insert(tid, "RED",   (val = 0, &val));
+    H5Tenum_insert(tid, "GREEN", (val = 1, &val));
+    write_dset(loc_id,1,dims,"enum",tid,0);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_dset(loc_id, 1, dims, "array", tid, buf6);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_VLEN
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7);
- write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8);
+    /* Allocate and initialize VL dataset to write */
 
+    buf5[0].len = 1;
+    buf5[0].p = HDmalloc( 1 * sizeof(int));
+    ((int *)buf5[0].p)[0]=1;
+    buf5[1].len = 2;
+    buf5[1].p = HDmalloc( 2 * sizeof(int));
+    ((int *)buf5[1].p)[0]=2;
+    ((int *)buf5[1].p)[1]=3;
+
+    sid = H5Screate_simple(1, dims, NULL);
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+    HDassert(status >= 0);
+    status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5);
+    HDassert(status >= 0);
+    status = H5Dclose(did);
+    status = H5Tclose(tid);
+    status = H5Sclose(sid);
 
-/*-------------------------------------------------------------------------
- * 2D
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_ARRAY
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_dset(loc_id, 1, dims, "array", tid, buf6);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_C_S1);
- status  = H5Tset_size(tid, 2);
- write_dset(loc_id,2,dims2,"string2D",tid,buf12);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_INTEGER and H5T_FLOAT
+     *-------------------------------------------------------------------------
+     */
+    write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7);
+    write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8);
 
-/*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_STD_B8LE);
- write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22);
- status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_OPAQUE, 1);
- status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
- write_dset(loc_id,2,dims2,"opaque2D",tid,buf22);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * 2D
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
- write_dset(loc_id,2,dims2,"compound2D",tid,buf32);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_STRING
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_C_S1);
+    status  = H5Tset_size(tid, 2);
+    write_dset(loc_id,2,dims2,"string2D",tid,buf12);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if(dset_name)
- {
-  for(i = 0; i < 3; i++) {
-   for(j = 0; j < 2; j++) {
-    status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,-1);
-   }
-  }
-  write_dset(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42);
- }
+    /*-------------------------------------------------------------------------
+     * H5T_BITFIELD
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_STD_B8LE);
+    write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
- H5Tenum_insert(tid, "RED",   (val = 0, &val));
- H5Tenum_insert(tid, "GREEN", (val = 1, &val));
- write_dset(loc_id,2,dims2,"enum2D",tid,0);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_OPAQUE
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_OPAQUE, 1);
+    status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
+    write_dset(loc_id,2,dims2,"opaque2D",tid,buf22);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_COMPOUND
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
+    H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
+    write_dset(loc_id,2,dims2,"compound2D",tid,buf32);
+    status = H5Tclose(tid);
 
- /* Allocate and initialize VL dataset to write */
- n=0;
- for(i = 0; i < 3; i++)
-  for(j = 0; j < 2; j++) {
-    int l;
-
-    buf52[i][j].p = HDmalloc((i + 1) * sizeof(int));
-    buf52[i][j].len = i + 1;
-    for(l = 0; l < i + 1; l++)
-      ((int *)buf52[i][j].p)[l] = n++;
-  }
-
- sid = H5Screate_simple(2, dims2, NULL);
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52);
- HDassert(status >= 0);
- status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52);
- HDassert(status >= 0);
- status = H5Dclose(did);
- status = H5Tclose(tid);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_REFERENCE
+     *-------------------------------------------------------------------------
+     */
+    /* Create references to dataset */
+    if(dset_name)
+    {
+        for(i = 0; i < 3; i++) {
+            for(j = 0; j < 2; j++) {
+                status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,-1);
+            }
+        }
+        write_dset(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42);
+    }
 
-/*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_dset(loc_id, 2, dims2, "array2D", tid, buf62);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_ENUM
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
+    H5Tenum_insert(tid, "RED",   (val = 0, &val));
+    H5Tenum_insert(tid, "GREEN", (val = 1, &val));
+    write_dset(loc_id,2,dims2,"enum2D",tid,0);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_INTEGER, write a fill value
- *-------------------------------------------------------------------------
- */
- plist_id = H5Pcreate(H5P_DATASET_CREATE);
- status = H5Pset_fill_value(plist_id, H5T_NATIVE_INT, &fillvalue);
- sid = H5Screate_simple(2, dims2, NULL);
- did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, plist_id, H5P_DEFAULT);
- status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72);
- status = H5Pclose(plist_id);
- status = H5Dclose(did);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_VLEN
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_FLOAT
- *-------------------------------------------------------------------------
- */
+    /* Allocate and initialize VL dataset to write */
+    n=0;
+    for(i = 0; i < 3; i++)
+        for(j = 0; j < 2; j++) {
+            int l;
 
- write_dset(loc_id, 2, dims2, "float2D", H5T_NATIVE_FLOAT, buf82);
+            buf52[i][j].p = HDmalloc((i + 1) * sizeof(int));
+            buf52[i][j].len = i + 1;
+            for(l = 0; l < i + 1; l++)
+                ((int *)buf52[i][j].p)[l] = n++;
+        }
 
+    sid = H5Screate_simple(2, dims2, NULL);
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52);
+    HDassert(status >= 0);
+    status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52);
+    HDassert(status >= 0);
+    status = H5Dclose(did);
+    status = H5Tclose(tid);
+    status = H5Sclose(sid);
 
-/*-------------------------------------------------------------------------
- * 3D
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_ARRAY
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_dset(loc_id, 2, dims2, "array2D", tid, buf62);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_C_S1);
- status  = H5Tset_size(tid, 2);
- write_dset(loc_id,3,dims3,"string3D",tid,buf13);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_INTEGER, write a fill value
+     *-------------------------------------------------------------------------
+     */
+    plist_id = H5Pcreate(H5P_DATASET_CREATE);
+    status = H5Pset_fill_value(plist_id, H5T_NATIVE_INT, &fillvalue);
+    sid = H5Screate_simple(2, dims2, NULL);
+    did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, plist_id, H5P_DEFAULT);
+    status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72);
+    status = H5Pclose(plist_id);
+    status = H5Dclose(did);
+    status = H5Sclose(sid);
 
-/*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_FLOAT
+     *-------------------------------------------------------------------------
+     */
 
- n=1;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    buf23[i][j][k]=n++;
-   }
-  }
- }
- tid = H5Tcopy(H5T_STD_B8LE);
- write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23);
- status = H5Tclose(tid);
+    write_dset(loc_id, 2, dims2, "float2D", H5T_NATIVE_FLOAT, buf82);
 
-/*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_OPAQUE, 1);
- status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
- write_dset(loc_id,3,dims3,"opaque3D",tid,buf23);
- status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * 3D
+     *-------------------------------------------------------------------------
+     */
 
- n=1;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    buf33[i][j][k].a=n++;
-    buf33[i][j][k].b=n++;
-   }
-  }
- }
- tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
- write_dset(loc_id,3,dims3,"compound3D",tid,buf33);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_STRING
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_C_S1);
+    status  = H5Tset_size(tid, 2);
+    write_dset(loc_id,3,dims3,"string3D",tid,buf13);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if(dset_name)
- {
-  for(i = 0; i < 4; i++) {
-   for(j = 0; j < 3; j++) {
-    for(k = 0; k < 2; k++)
-     status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,-1);
-   }
-  }
- write_dset(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43);
- }
+    /*-------------------------------------------------------------------------
+     * H5T_BITFIELD
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
- H5Tenum_insert(tid, "RED",   (val = 0, &val));
- H5Tenum_insert(tid, "GREEN", (val = 1, &val));
- write_dset(loc_id,3,dims3,"enum3D",tid,0);
- status = H5Tclose(tid);
+    n=1;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                buf23[i][j][k]=n++;
+            }
+        }
+    }
+    tid = H5Tcopy(H5T_STD_B8LE);
+    write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * H5T_OPAQUE
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_OPAQUE, 1);
+    status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */
+    write_dset(loc_id,3,dims3,"opaque3D",tid,buf23);
+    status = H5Tclose(tid);
 
- /* Allocate and initialize VL dataset to write */
- n = 0;
- for(i = 0; i < 4; i++)
-  for(j = 0; j < 3; j++)
-   for(k = 0; k < 2; k++) {
-    int l;
-
-    buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int));
-    buf53[i][j][k].len = i + 1;
-    for(l = 0; l < i + 1; l++)
-        ((int *)buf53[i][j][k].p)[l] = n++;
-   }
-
- sid = H5Screate_simple(3, dims3, NULL);
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53);
- HDassert(status >= 0);
- status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53);
- HDassert(status >= 0);
- status = H5Dclose(did);
- status = H5Tclose(tid);
- status = H5Sclose(sid);
+    /*-------------------------------------------------------------------------
+     * H5T_COMPOUND
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- n=1;
- for(i = 0; i < 24; i++) {
-  for(j = 0; j < (int)dimarray[0]; j++) {
-    buf63[i][j]=n++;
-  }
- }
+    n=1;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                buf33[i][j][k].a=n++;
+                buf33[i][j][k].b=n++;
+            }
+        }
+    }
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
+    H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE);
+    write_dset(loc_id,3,dims3,"compound3D",tid,buf33);
+    status = H5Tclose(tid);
+
+    /*-------------------------------------------------------------------------
+     * H5T_REFERENCE
+     *-------------------------------------------------------------------------
+     */
+    /* Create references to dataset */
+    if(dset_name)
+    {
+        for(i = 0; i < 4; i++) {
+            for(j = 0; j < 3; j++) {
+                for(k = 0; k < 2; k++)
+                    status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,-1);
+            }
+        }
+        write_dset(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43);
+    }
 
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_dset(loc_id, 3, dims3, "array3D", tid, buf63);
- status = H5Tclose(tid);
+    /*-------------------------------------------------------------------------
+     * H5T_ENUM
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcreate(H5T_ENUM, sizeof(e_t));
+    H5Tenum_insert(tid, "RED",   (val = 0, &val));
+    H5Tenum_insert(tid, "GREEN", (val = 1, &val));
+    write_dset(loc_id,3,dims3,"enum3D",tid,0);
+    status = H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- n=1; f=1;
- for(i = 0; i < 4; i++) {
-  for(j = 0; j < 3; j++) {
-   for(k = 0; k < 2; k++) {
-    buf73[i][j][k]=n++;
-    buf83[i][j][k]=f++;
-   }
-  }
- }
- write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73);
- write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83);
+    /*-------------------------------------------------------------------------
+     * H5T_VLEN
+     *-------------------------------------------------------------------------
+     */
+
+    /* Allocate and initialize VL dataset to write */
+    n = 0;
+    for(i = 0; i < 4; i++)
+        for(j = 0; j < 3; j++)
+            for(k = 0; k < 2; k++) {
+                int l;
+
+                buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int));
+                buf53[i][j][k].len = i + 1;
+                for(l = 0; l < i + 1; l++)
+                    ((int *)buf53[i][j][k].p)[l] = n++;
+            }
+
+    sid = H5Screate_simple(3, dims3, NULL);
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53);
+    HDassert(status >= 0);
+    status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53);
+    HDassert(status >= 0);
+    status = H5Dclose(did);
+    status = H5Tclose(tid);
+    status = H5Sclose(sid);
+
+    /*-------------------------------------------------------------------------
+     * H5T_ARRAY
+     *-------------------------------------------------------------------------
+     */
+    n=1;
+    for(i = 0; i < 24; i++) {
+        for(j = 0; j < (int)dimarray[0]; j++) {
+            buf63[i][j]=n++;
+        }
+    }
+
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_dset(loc_id, 3, dims3, "array3D", tid, buf63);
+    status = H5Tclose(tid);
+
+    /*-------------------------------------------------------------------------
+     * H5T_INTEGER and H5T_FLOAT
+     *-------------------------------------------------------------------------
+     */
+    n=1; f=1;
+    for(i = 0; i < 4; i++) {
+        for(j = 0; j < 3; j++) {
+            for(k = 0; k < 2; k++) {
+                buf73[i][j][k]=n++;
+                buf83[i][j][k]=f++;
+            }
+        }
+    }
+    write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73);
+    write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83);
 }
 
 
@@ -4675,18 +4700,18 @@ static void gent_attr_all(void)
     root_id   = H5Gopen2(fid, "/", H5P_DEFAULT);
 
     /*-------------------------------------------------------------------------
-    * write a series of attributes on the dataset, group
-    *-------------------------------------------------------------------------
-    */
+     * write a series of attributes on the dataset, group
+     *-------------------------------------------------------------------------
+     */
 
     write_attr_in(did,"dset",fid);
     write_attr_in(group_id,NULL,0);
     write_attr_in(root_id,NULL,0);
 
     /*-------------------------------------------------------------------------
-    * write a series of datasets on group 2
-    *-------------------------------------------------------------------------
-    */
+     * write a series of datasets on group 2
+     *-------------------------------------------------------------------------
+     */
 
     write_dset_in(group2_id,"/dset",fid);
 
@@ -4720,27 +4745,27 @@ static void gent_attr_all(void)
 
 static
 int write_attr(hid_t loc_id, int rank, hsize_t *dims, const char *attr_name,
-               hid_t tid, void *buf)
+        hid_t tid, void *buf)
 {
- hid_t   aid;
- hid_t   sid;
- herr_t  status;
-
- /* Create a buf space  */
- sid = H5Screate_simple(rank, dims, NULL);
+    hid_t   aid;
+    hid_t   sid;
+    herr_t  status;
+
+    /* Create a buf space  */
+    sid = H5Screate_simple(rank, dims, NULL);
 
- /* Create the attribute */
- aid = H5Acreate2(loc_id, attr_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
+    /* Create the attribute */
+    aid = H5Acreate2(loc_id, attr_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
 
- /* Write the buf */
- if(buf)
-  status = H5Awrite(aid, tid, buf);
+    /* Write the buf */
+    if(buf)
+        status = H5Awrite(aid, tid, buf);
 
- /* Close */
- status = H5Aclose(aid);
- status = H5Sclose(sid);
+    /* Close */
+    status = H5Aclose(aid);
+    status = H5Sclose(sid);
 
- return status;
+    return status;
 }
 
 /*-------------------------------------------------------------------------
@@ -4759,7 +4784,7 @@ int write_attr(hid_t loc_id, int rank, hsize_t *dims, const char *attr_name,
 
 static
 int write_dset( hid_t loc_id, int rank, hsize_t *dims, const char *dset_name,
-                hid_t tid, void *buf )
+        hid_t tid, void *buf )
 {
     hid_t   did;
     hid_t   sid;
@@ -4787,23 +4812,23 @@ static void gent_compound_complex(void)
 {
     /* Structure and array for compound types                             */
     typedef struct Array1Struct {
-        int                a;
- const char         *b[F41_DIMb];
- char               c[F41_ARRAY_DIMc];
- short              d[F41_ARRAY_DIMd1][F41_ARRAY_DIMd2];
- float              e;
- double             f[F41_ARRAY_DIMf];
- char               g;
+            int                a;
+            const char         *b[F41_DIMb];
+            char               c[F41_ARRAY_DIMc];
+            short              d[F41_ARRAY_DIMd1][F41_ARRAY_DIMd2];
+            float              e;
+            double             f[F41_ARRAY_DIMf];
+            char               g;
     } Array1Struct;
     Array1Struct       Array1[F41_LENGTH];
 
     /* Define the value of the string array                           */
     const char *quote [F41_DIMb] = {
-        "A fight is a contract that takes two people to honor.",
-        "A combative stance means that you've accepted the contract.",
-        "In which case, you deserve what you get.",
-        "  --  Professor Cheng Man-ch'ing"
-        };
+            "A fight is a contract that takes two people to honor.",
+            "A combative stance means that you've accepted the contract.",
+            "In which case, you deserve what you get.",
+            "  --  Professor Cheng Man-ch'ing"
+    };
 
     /* Define the value of the character array                        */
     char chararray [F41_ARRAY_DIMc] = {'H', 'e', 'l', 'l', 'o', '!'};
@@ -4830,24 +4855,24 @@ static void gent_compound_complex(void)
         Array1[m].a = m;
 
         for(n = 0; n < F41_DIMb; n++) {
-     Array1[m].b[n] = quote[n];
- }
+            Array1[m].b[n] = quote[n];
+        }
 
- for(n = 0; n < F41_ARRAY_DIMc; n++) {
+        for(n = 0; n < F41_ARRAY_DIMc; n++) {
             Array1[m].c[n] = chararray[n];
- }
+        }
 
- for(n = 0; n < F41_ARRAY_DIMd1; n++) {
-         for(o = 0; o < F41_ARRAY_DIMd2; o++){
-             Array1[m].d[n][o] = m + n + o;
+        for(n = 0; n < F41_ARRAY_DIMd1; n++) {
+            for(o = 0; o < F41_ARRAY_DIMd2; o++){
+                Array1[m].d[n][o] = m + n + o;
             }
         }
 
         Array1[m].e = (float)( m * .96 );
 
- for(n = 0; n < F41_ARRAY_DIMf; n++) {
+        for(n = 0; n < F41_ARRAY_DIMf; n++) {
             Array1[m].f[n] = ( m * 1024.9637 );
- }
+        }
 
         Array1[m].g = 'm';
     }
@@ -4858,7 +4883,7 @@ static void gent_compound_complex(void)
 
     /* Create the file                                                */
     datafile = H5Fcreate(FILE41, H5F_ACC_TRUNC, H5P_DEFAULT,
-      H5P_DEFAULT);
+            H5P_DEFAULT);
     HDassert(datafile >= 0);
 
     /* Copy the array data type for the string array                  */
@@ -4895,40 +4920,40 @@ static void gent_compound_complex(void)
 
     /* Insert the arrays and variables into the structure             */
     status = H5Tinsert(Array1Structid, "a_name",
-      HOFFSET(Array1Struct, a), H5T_NATIVE_INT);
+            HOFFSET(Array1Struct, a), H5T_NATIVE_INT);
     HDassert(status >= 0);
 
     status = H5Tinsert(Array1Structid, "b_name",
-      HOFFSET(Array1Struct, b), str_array_id);
+            HOFFSET(Array1Struct, b), str_array_id);
     HDassert(status >= 0);
 
     status = H5Tinsert(Array1Structid, "c_name",
-      HOFFSET(Array1Struct, c), array1_tid);
+            HOFFSET(Array1Struct, c), array1_tid);
     HDassert(status >= 0);
 
     status = H5Tinsert(Array1Structid, "d_name",
-      HOFFSET(Array1Struct, d), array2_tid);
+            HOFFSET(Array1Struct, d), array2_tid);
     HDassert(status >= 0);
 
     status = H5Tinsert(Array1Structid, "e_name",
-      HOFFSET(Array1Struct, e), H5T_NATIVE_FLOAT);
+            HOFFSET(Array1Struct, e), H5T_NATIVE_FLOAT);
     HDassert(status >= 0);
 
     status = H5Tinsert(Array1Structid, "f_name",
-      HOFFSET(Array1Struct, f), array4_tid);
+            HOFFSET(Array1Struct, f), array4_tid);
     HDassert(status >= 0);
 
     status = H5Tinsert(Array1Structid, "g_name",
-      HOFFSET(Array1Struct, g), H5T_NATIVE_CHAR);
+            HOFFSET(Array1Struct, g), H5T_NATIVE_CHAR);
     HDassert(status >= 0);
 
     /* Create the dataset                                             */
     dataset = H5Dcreate2(datafile, F41_DATASETNAME, Array1Structid,
-      dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+            dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     /* Write data to the dataset                                      */
     status = H5Dwrite(dataset, Array1Structid, H5S_ALL, H5S_ALL,
-      H5P_DEFAULT, Array1);
+            H5P_DEFAULT, Array1);
     HDassert(status >= 0);
 
     /* Release resources                                              */
@@ -4963,106 +4988,106 @@ static void gent_compound_complex(void)
 
 static void gent_named_dtype_attr(void)
 {
-   hid_t fid;
-   hid_t did;
-   hid_t sid;
-   hid_t tid;
-   hid_t aid;
-   hid_t gid;
-   int data=8;
-   herr_t ret;
-
-   /* Create a file */
-   fid=H5Fcreate(FILE42, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(fid>0);
+    hid_t fid;
+    hid_t did;
+    hid_t sid;
+    hid_t tid;
+    hid_t aid;
+    hid_t gid;
+    int data=8;
+    herr_t ret;
 
-/*-------------------------------------------------------------------------
- * datatype
- *-------------------------------------------------------------------------
- */
+    /* Create a file */
+    fid=H5Fcreate(FILE42, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(fid>0);
 
-   /* Create a datatype to commit and use */
-   tid=H5Tcopy(H5T_NATIVE_INT);
-   HDassert(tid>0);
+    /*-------------------------------------------------------------------------
+     * datatype
+     *-------------------------------------------------------------------------
+     */
 
-   /* Commit datatype to file */
-   ret = H5Tcommit2(fid, F42_TYPENAME, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(ret >= 0);
+    /* Create a datatype to commit and use */
+    tid=H5Tcopy(H5T_NATIVE_INT);
+    HDassert(tid>0);
 
-   /* Create a hard link to the datatype */
-   ret = H5Lcreate_hard(fid, F42_TYPENAME, fid, F42_LINKNAME, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(ret >= 0);
+    /* Commit datatype to file */
+    ret = H5Tcommit2(fid, F42_TYPENAME, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(ret >= 0);
 
-   /* Create a scalar dataspace used for all objects */
-   sid = H5Screate(H5S_SCALAR);
-   HDassert(sid > 0);
+    /* Create a hard link to the datatype */
+    ret = H5Lcreate_hard(fid, F42_TYPENAME, fid, F42_LINKNAME, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(ret >= 0);
 
-   /* Create attribute on commited datatype */
-   aid = H5Acreate2(tid, F42_ATTRNAME, H5T_STD_I32LE, sid, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(aid > 0);
+    /* Create a scalar dataspace used for all objects */
+    sid = H5Screate(H5S_SCALAR);
+    HDassert(sid > 0);
 
-   /* Write data into the attribute */
-   ret = H5Awrite(aid, H5T_NATIVE_INT, &data);
-   HDassert(ret >= 0);
+    /* Create attribute on commited datatype */
+    aid = H5Acreate2(tid, F42_ATTRNAME, H5T_STD_I32LE, sid, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(aid > 0);
 
-/*-------------------------------------------------------------------------
- * dataset
- *-------------------------------------------------------------------------
- */
+    /* Write data into the attribute */
+    ret = H5Awrite(aid, H5T_NATIVE_INT, &data);
+    HDassert(ret >= 0);
 
-   /* Create dataset */
-   did = H5Dcreate2(fid, F42_DSETNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(did > 0);
+    /*-------------------------------------------------------------------------
+     * dataset
+     *-------------------------------------------------------------------------
+     */
 
-   /* Create attribute on dataset */
-   aid = H5Acreate2(did, F42_ATTRNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(aid > 0);
+    /* Create dataset */
+    did = H5Dcreate2(fid, F42_DSETNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(did > 0);
 
-   /* Write data into the attribute */
-   ret = H5Awrite(aid, H5T_NATIVE_INT, &data);
-   HDassert(ret >= 0);
+    /* Create attribute on dataset */
+    aid = H5Acreate2(did, F42_ATTRNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(aid > 0);
 
-/*-------------------------------------------------------------------------
- * group
- *-------------------------------------------------------------------------
- */
+    /* Write data into the attribute */
+    ret = H5Awrite(aid, H5T_NATIVE_INT, &data);
+    HDassert(ret >= 0);
 
-   /* Create a group */
-   gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(gid > 0);
+    /*-------------------------------------------------------------------------
+     * group
+     *-------------------------------------------------------------------------
+     */
 
-   /* Create attribute on group */
-   aid = H5Acreate2(gid, F42_ATTRNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
-   HDassert(aid > 0);
+    /* Create a group */
+    gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(gid > 0);
 
-   /* Write data into the attribute */
-   ret = H5Awrite(aid, H5T_NATIVE_INT, &data);
-   HDassert(ret >= 0);
+    /* Create attribute on group */
+    aid = H5Acreate2(gid, F42_ATTRNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(aid > 0);
 
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
+    /* Write data into the attribute */
+    ret = H5Awrite(aid, H5T_NATIVE_INT, &data);
+    HDassert(ret >= 0);
+
+    /*-------------------------------------------------------------------------
+     * close
+     *-------------------------------------------------------------------------
+     */
 
-   /* Close attribute */
-   ret = H5Aclose(aid);
-   HDassert(ret >= 0);
+    /* Close attribute */
+    ret = H5Aclose(aid);
+    HDassert(ret >= 0);
 
-   /* Close dataset */
-   ret = H5Dclose(did);
-   HDassert(ret >= 0);
+    /* Close dataset */
+    ret = H5Dclose(did);
+    HDassert(ret >= 0);
 
-   /* Close dataspace */
-   ret = H5Sclose(sid);
-   HDassert(ret >= 0);
+    /* Close dataspace */
+    ret = H5Sclose(sid);
+    HDassert(ret >= 0);
 
-   /* Close datatype */
-   ret = H5Tclose(tid);
-   HDassert(ret >= 0);
+    /* Close datatype */
+    ret = H5Tclose(tid);
+    HDassert(ret >= 0);
 
-   /* Close file */
-   ret = H5Fclose(fid);
-   HDassert(ret >= 0);
+    /* Close file */
+    ret = H5Fclose(fid);
+    HDassert(ret >= 0);
 }
 
 
@@ -5121,7 +5146,7 @@ static void gent_zero_dim_size(void)
 
     /* dataset */
     dataset = H5Dcreate2(fid, "dset of 0 dimension size", H5T_STD_I32BE, space, H5P_DEFAULT, 
-                         H5P_DEFAULT, H5P_DEFAULT);
+            H5P_DEFAULT, H5P_DEFAULT);
     /* nothing should be written */
     H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &dset_buf);
 
@@ -5145,11 +5170,11 @@ static void gent_zero_dim_size(void)
  */
 static
 int make_dset(hid_t loc_id,
-              const char *name,
-              hid_t sid,
-              hid_t tid,
-              hid_t dcpl,
-              void *buf)
+        const char *name,
+        hid_t sid,
+        hid_t tid,
+        hid_t dcpl,
+        void *buf)
 {
     hid_t   dsid;
 
@@ -5167,7 +5192,7 @@ int make_dset(hid_t loc_id,
 
     return 0;
 
-out:
+    out:
     H5E_BEGIN_TRY {
         H5Dclose(dsid);
     } H5E_END_TRY;
@@ -5186,38 +5211,38 @@ out:
 static void
 make_external(hid_t fid)
 {
- hid_t   dcpl;         /*dataset creation property list */
- hid_t   sid;          /*dataspace ID */
- hid_t   dsid;         /*dataset ID   */
- hsize_t cur_size[1];  /*data space current size */
- hsize_t max_size[1];  /*data space maximum size */
- hsize_t size;         /*bytes reserved for data in the external file*/
- int     ret;
+    hid_t   dcpl;         /*dataset creation property list */
+    hid_t   sid;          /*dataspace ID */
+    hid_t   dsid;         /*dataset ID   */
+    hsize_t cur_size[1];  /*data space current size */
+    hsize_t max_size[1];  /*data space maximum size */
+    hsize_t size;         /*bytes reserved for data in the external file*/
+    int     ret;
 
- cur_size[0] = max_size[0] = 100;
- size = (max_size[0]*sizeof(int)/2);
+    cur_size[0] = max_size[0] = 100;
+    size = (max_size[0]*sizeof(int)/2);
 
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- ret = H5Pset_external(dcpl, "ext1.bin", (off_t)0, size);
- HDassert(ret >= 0);
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
+    ret = H5Pset_external(dcpl, "ext1.bin", (off_t)0, size);
+    HDassert(ret >= 0);
 
- ret = H5Pset_external(dcpl, "ext2.bin", (off_t)0, size);
- HDassert(ret >= 0);
+    ret = H5Pset_external(dcpl, "ext2.bin", (off_t)0, size);
+    HDassert(ret >= 0);
 
- sid = H5Screate_simple(1, cur_size, max_size);
- HDassert(ret >= 0);
+    sid = H5Screate_simple(1, cur_size, max_size);
+    HDassert(ret >= 0);
 
- dsid = H5Dcreate2(fid, "external", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- HDassert(ret >= 0);
+    dsid = H5Dcreate2(fid, "external", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+    HDassert(ret >= 0);
 
- H5Dclose(dsid);
- HDassert(ret >= 0);
+    H5Dclose(dsid);
+    HDassert(ret >= 0);
 
- H5Sclose(sid);
- HDassert(ret >= 0);
+    H5Sclose(sid);
+    HDassert(ret >= 0);
 
- H5Pclose(dcpl);
- HDassert(ret >= 0);
+    H5Pclose(dcpl);
+    HDassert(ret >= 0);
 }
 
 /*-------------------------------------------------------------------------
@@ -5229,312 +5254,312 @@ make_external(hid_t fid)
  */
 static void gent_filters(void)
 {
- hid_t    fid;  /* file id */
- hid_t    dcpl; /* dataset creation property list */
- hid_t    sid;  /* dataspace ID */
- hid_t    tid;  /* datatype ID */
+    hid_t    fid;  /* file id */
+    hid_t    dcpl; /* dataset creation property list */
+    hid_t    sid;  /* dataspace ID */
+    hid_t    tid;  /* datatype ID */
 #ifdef H5_HAVE_FILTER_SZIP
- unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
- unsigned szip_pixels_per_block=4;
+    unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
+    unsigned szip_pixels_per_block=4;
 #endif /* H5_HAVE_FILTER_SZIP */
- hsize_t  dims1[RANK]      = {DIM1,DIM2};
- hsize_t  chunk_dims[RANK] = {CDIM1,CDIM2};
- int      buf1[DIM1][DIM2];
- int      i, j, n, ret;
-
- for(i=n=0; i<DIM1; i++){
-  for(j=0; j<DIM2; j++){
-   buf1[i][j]=n++;
-  }
- }
+    hsize_t  dims1[RANK]      = {DIM1,DIM2};
+    hsize_t  chunk_dims[RANK] = {CDIM1,CDIM2};
+    int      buf1[DIM1][DIM2];
+    int      i, j, n, ret;
+
+    for(i=n=0; i<DIM1; i++){
+        for(j=0; j<DIM2; j++){
+            buf1[i][j]=n++;
+        }
+    }
 
- /* create a file */
- fid  = H5Fcreate(FILE44, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- HDassert(fid>=0);
+    /* create a file */
+    fid  = H5Fcreate(FILE44, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(fid>=0);
 
- /* create a space */
- sid = H5Screate_simple(SPACE2_RANK, dims1, NULL);
+    /* create a space */
+    sid = H5Screate_simple(SPACE2_RANK, dims1, NULL);
 
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
+    /* create a dataset creation property list; the same DCPL is used for all dsets */
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
 
-/*-------------------------------------------------------------------------
- * create a compact and contiguous storage layout dataset
- * add a comment to the datasets
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_layout(dcpl, H5D_COMPACT);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * create a compact and contiguous storage layout dataset
+     * add a comment to the datasets
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_layout(dcpl, H5D_COMPACT);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"compact",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"compact",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
- ret = H5Oset_comment_by_name(fid, "compact", "This is a dataset with compact storage", H5P_DEFAULT);
- HDassert(ret >= 0);
+    ret = H5Oset_comment_by_name(fid, "compact", "This is a dataset with compact storage", H5P_DEFAULT);
+    HDassert(ret >= 0);
 
- ret = H5Pset_layout(dcpl, H5D_CONTIGUOUS);
- HDassert(ret >= 0);
+    ret = H5Pset_layout(dcpl, H5D_CONTIGUOUS);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"contiguous",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"contiguous",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
- ret = H5Oset_comment_by_name(fid, "contiguous", "This is a dataset with contiguous storage", H5P_DEFAULT);
- HDassert(ret >= 0);
+    ret = H5Oset_comment_by_name(fid, "contiguous", "This is a dataset with contiguous storage", H5P_DEFAULT);
+    HDassert(ret >= 0);
 
- ret = H5Pset_layout(dcpl, H5D_CHUNKED);
- HDassert(ret >= 0);
+    ret = H5Pset_layout(dcpl, H5D_CHUNKED);
+    HDassert(ret >= 0);
 
- ret = H5Pset_chunk(dcpl, SPACE2_RANK, chunk_dims);
- HDassert(ret >= 0);
+    ret = H5Pset_chunk(dcpl, SPACE2_RANK, chunk_dims);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"chunked",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"chunked",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
- ret = H5Oset_comment_by_name(fid, "chunked", "This is a dataset with chunked storage", H5P_DEFAULT);
- HDassert(ret >= 0);
+    ret = H5Oset_comment_by_name(fid, "chunked", "This is a dataset with chunked storage", H5P_DEFAULT);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * make several dataset with filters
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * make several dataset with filters
+     *-------------------------------------------------------------------------
+     */
 
- /* set up chunk */
- ret = H5Pset_chunk(dcpl, SPACE2_RANK, chunk_dims);
- HDassert(ret >= 0);
+    /* set up chunk */
+    ret = H5Pset_chunk(dcpl, SPACE2_RANK, chunk_dims);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * SZIP
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * SZIP
+     *-------------------------------------------------------------------------
+     */
 #ifdef H5_HAVE_FILTER_SZIP
- if(h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
-
- /* set szip data */
- ret = H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
- HDassert(ret >= 0);
-
- ret=make_dset(fid,"szip",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
- }
+    if(h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
+        /* remove the filters from the dcpl */
+        ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+        HDassert(ret >= 0);
+
+        /* set szip data */
+        ret = H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
+        HDassert(ret >= 0);
+
+        ret=make_dset(fid,"szip",sid,H5T_NATIVE_INT,dcpl,buf1);
+        HDassert(ret >= 0);
+    }
 #endif /* H5_HAVE_FILTER_SZIP */
 
-/*-------------------------------------------------------------------------
- * GZIP
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * GZIP
+     *-------------------------------------------------------------------------
+     */
 #if defined (H5_HAVE_FILTER_DEFLATE)
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
- /* set deflate data */
- ret = H5Pset_deflate(dcpl, 9);
- HDassert(ret >= 0);
+    /* set deflate data */
+    ret = H5Pset_deflate(dcpl, 9);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"deflate",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"deflate",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 #endif
 
 
-/*-------------------------------------------------------------------------
- * shuffle
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * shuffle
+     *-------------------------------------------------------------------------
+     */
 #if defined (H5_HAVE_FILTER_SHUFFLE)
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
- /* set the shuffle filter */
- ret = H5Pset_shuffle(dcpl);
- HDassert(ret >= 0);
+    /* set the shuffle filter */
+    ret = H5Pset_shuffle(dcpl);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"shuffle",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"shuffle",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 #endif
 
 
-/*-------------------------------------------------------------------------
- * checksum
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * checksum
+     *-------------------------------------------------------------------------
+     */
 #if defined (H5_HAVE_FILTER_FLETCHER32)
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
- /* set the checksum filter */
- ret = H5Pset_fletcher32(dcpl);
- HDassert(ret >= 0);
+    /* set the checksum filter */
+    ret = H5Pset_fletcher32(dcpl);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"fletcher32",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"fletcher32",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 #endif
 
-/*-------------------------------------------------------------------------
- * nbit
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * nbit
+     *-------------------------------------------------------------------------
+     */
 #if defined (H5_HAVE_FILTER_NBIT)
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
-
- /* set the checksum filter */
- ret = H5Pset_nbit(dcpl);
- HDassert(ret >= 0);
-
- tid=H5Tcopy(H5T_NATIVE_INT);
- H5Tset_precision(tid,H5Tget_size(tid)-1);
- ret=make_dset(fid,"nbit",sid,tid,dcpl,buf1);
- HDassert(ret >= 0);
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
+
+    /* set the checksum filter */
+    ret = H5Pset_nbit(dcpl);
+    HDassert(ret >= 0);
+
+    tid=H5Tcopy(H5T_NATIVE_INT);
+    H5Tset_precision(tid,H5Tget_size(tid)-1);
+    ret=make_dset(fid,"nbit",sid,tid,dcpl,buf1);
+    HDassert(ret >= 0);
 #endif
 
-/*-------------------------------------------------------------------------
- * scaleoffset
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * scaleoffset
+     *-------------------------------------------------------------------------
+     */
 #if defined (H5_HAVE_FILTER_SCALEOFFSET)
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
- /* set the scaleoffset filter */
- ret = H5Pset_scaleoffset(dcpl,H5Z_SO_INT,(int)H5Tget_size(H5T_NATIVE_INT));
- HDassert(ret >= 0);
+    /* set the scaleoffset filter */
+    ret = H5Pset_scaleoffset(dcpl,H5Z_SO_INT,(int)H5Tget_size(H5T_NATIVE_INT));
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"scaleoffset",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"scaleoffset",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 #endif
 
-/*-------------------------------------------------------------------------
- * all filters
- *-------------------------------------------------------------------------
- */
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * all filters
+     *-------------------------------------------------------------------------
+     */
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
 #if defined (H5_HAVE_FILTER_SHUFFLE)
- /* set the shuffle filter */
- ret = H5Pset_shuffle(dcpl);
- HDassert(ret >= 0);
+    /* set the shuffle filter */
+    ret = H5Pset_shuffle(dcpl);
+    HDassert(ret >= 0);
 #endif
 
 #ifdef H5_HAVE_FILTER_SZIP
- if(h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
- szip_options_mask=H5_SZIP_CHIP_OPTION_MASK | H5_SZIP_EC_OPTION_MASK;
- /* set szip data */
- ret = H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
- HDassert(ret >= 0);
- }
+    if(h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
+        szip_options_mask=H5_SZIP_CHIP_OPTION_MASK | H5_SZIP_EC_OPTION_MASK;
+        /* set szip data */
+        ret = H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
+        HDassert(ret >= 0);
+    }
 #endif /* H5_HAVE_FILTER_SZIP */
 
 #if defined (H5_HAVE_FILTER_DEFLATE)
- /* set deflate data */
- ret = H5Pset_deflate(dcpl, 5);
- HDassert(ret >= 0);
+    /* set deflate data */
+    ret = H5Pset_deflate(dcpl, 5);
+    HDassert(ret >= 0);
 #endif
 
 #if defined (H5_HAVE_FILTER_FLETCHER32)
- /* set the checksum filter */
- ret = H5Pset_fletcher32(dcpl);
- HDassert(ret >= 0);
+    /* set the checksum filter */
+    ret = H5Pset_fletcher32(dcpl);
+    HDassert(ret >= 0);
 #endif
 
 #if defined (H5_HAVE_FILTER_NBIT)
- /* set the nbit filter */
- ret = H5Pset_nbit(dcpl);
- HDassert(ret >= 0);
+    /* set the nbit filter */
+    ret = H5Pset_nbit(dcpl);
+    HDassert(ret >= 0);
 #endif
 
- ret=make_dset(fid,"all",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"all",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
 
-/*-------------------------------------------------------------------------
- * user defined filter
- *-------------------------------------------------------------------------
- */
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * user defined filter
+     *-------------------------------------------------------------------------
+     */
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
- ret = H5Zregister (H5Z_MYFILTER);
- HDassert(ret >= 0);
+    ret = H5Zregister (H5Z_MYFILTER);
+    HDassert(ret >= 0);
 
- ret = H5Pset_filter (dcpl, MYFILTER_ID, 0, 0, NULL);
- HDassert(ret >= 0);
+    ret = H5Pset_filter (dcpl, MYFILTER_ID, 0, 0, NULL);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"myfilter",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"myfilter",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
- /* remove the filters from the dcpl */
- ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- HDassert(ret >= 0);
+    /* remove the filters from the dcpl */
+    ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * make an external dataset
- *-------------------------------------------------------------------------
- */
- make_external(fid);
+    /*-------------------------------------------------------------------------
+     * make an external dataset
+     *-------------------------------------------------------------------------
+     */
+    make_external(fid);
 
-/*-------------------------------------------------------------------------
- * H5D_ALLOC_TIME_EARLY
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY);
- HDassert(ret >= 0);
- ret=make_dset(fid,"alloc_time_early",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * H5D_ALLOC_TIME_EARLY
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY);
+    HDassert(ret >= 0);
+    ret=make_dset(fid,"alloc_time_early",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * H5D_ALLOC_TIME_INCR
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR);
- HDassert(ret >= 0);
- ret=make_dset(fid,"alloc_time_incr",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * H5D_ALLOC_TIME_INCR
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR);
+    HDassert(ret >= 0);
+    ret=make_dset(fid,"alloc_time_incr",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * H5D_ALLOC_TIME_LATE
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- HDassert(ret >= 0);
- ret=make_dset(fid,"alloc_time_late",sid,H5T_NATIVE_INT,dcpl,buf1);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * H5D_ALLOC_TIME_LATE
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
+    HDassert(ret >= 0);
+    ret=make_dset(fid,"alloc_time_late",sid,H5T_NATIVE_INT,dcpl,buf1);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * commit a H5G_TYPE type with a comment
- *-------------------------------------------------------------------------
- */
- tid = H5Tcopy(H5T_STD_B8LE);
- ret = H5Tcommit2(fid, "mytype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * commit a H5G_TYPE type with a comment
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tcopy(H5T_STD_B8LE);
+    ret = H5Tcommit2(fid, "mytype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(ret >= 0);
 
- ret = H5Oset_comment_by_name(fid, "mytype", "This is a commited datatype", H5P_DEFAULT);
- HDassert(ret >= 0);
+    ret = H5Oset_comment_by_name(fid, "mytype", "This is a commited datatype", H5P_DEFAULT);
+    HDassert(ret >= 0);
 
- ret = H5Tclose(tid);
- HDassert(ret >= 0);
+    ret = H5Tclose(tid);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- ret = H5Sclose(sid);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * close
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Sclose(sid);
+    HDassert(ret >= 0);
 
- ret = H5Pclose(dcpl);
- HDassert(ret >= 0);
+    ret = H5Pclose(dcpl);
+    HDassert(ret >= 0);
 
- ret = H5Fclose(fid);
- HDassert(ret >= 0);
+    ret = H5Fclose(fid);
+    HDassert(ret >= 0);
 }
 
 
@@ -5547,10 +5572,10 @@ static void gent_filters(void)
  */
 static size_t
 myfilter(unsigned int UNUSED flags, size_t UNUSED cd_nelmts,
-      const unsigned int UNUSED *cd_values, size_t nbytes,
-      size_t UNUSED *buf_size, void UNUSED **buf)
+        const unsigned int UNUSED *cd_values, size_t nbytes,
+        size_t UNUSED *buf_size, void UNUSED **buf)
 {
- return nbytes;
+    return nbytes;
 }
 
 
@@ -5565,21 +5590,21 @@ myfilter(unsigned int UNUSED flags, size_t UNUSED cd_nelmts,
 static herr_t
 set_local_myfilter(hid_t dcpl_id, hid_t UNUSED tid, hid_t UNUSED sid)
 {
- unsigned flags;                        /* Filter flags */
- size_t   cd_nelmts = 0;                /* Number of filter parameters */
- unsigned cd_values[2] = {5, 6};        /* Filter parameters */
+    unsigned flags;                        /* Filter flags */
+    size_t   cd_nelmts = 0;                /* Number of filter parameters */
+    unsigned cd_values[2] = {5, 6};        /* Filter parameters */
 
- /* Get the filter's current parameters */
- if(H5Pget_filter_by_id2(dcpl_id, MYFILTER_ID, &flags, &cd_nelmts, cd_values, 0, NULL, NULL) < 0)
-  return(FAIL);
+    /* Get the filter's current parameters */
+    if(H5Pget_filter_by_id2(dcpl_id, MYFILTER_ID, &flags, &cd_nelmts, cd_values, 0, NULL, NULL) < 0)
+        return(FAIL);
 
- cd_nelmts = 2;
+    cd_nelmts = 2;
 
- /* Modify the filter's parameters for this dataset */
- if(H5Pmodify_filter(dcpl_id, MYFILTER_ID, flags, cd_nelmts, cd_values) < 0)
-  return(FAIL);
+    /* Modify the filter's parameters for this dataset */
+    if(H5Pmodify_filter(dcpl_id, MYFILTER_ID, flags, cd_nelmts, cd_values) < 0)
+        return(FAIL);
 
- return(SUCCEED);
+    return(SUCCEED);
 }
 
 /*-------------------------------------------------------------------------
@@ -5608,9 +5633,9 @@ static void gent_fcontents(void)
 
 
     /*-------------------------------------------------------------------------
-    * links
-    *-------------------------------------------------------------------------
-    */
+     * links
+     *-------------------------------------------------------------------------
+     */
 
 
     /* hard link to "dset" */
@@ -5659,9 +5684,9 @@ static void gent_fcontents(void)
     HDassert(ret >= 0);
 
     /*-------------------------------------------------------------------------
-    * datatypes
-    *-------------------------------------------------------------------------
-    */
+     * datatypes
+     *-------------------------------------------------------------------------
+     */
     tid = H5Tcopy(H5T_NATIVE_INT);
     ret = H5Tcommit2(fid, "mytype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     HDassert(ret >= 0);
@@ -5681,9 +5706,9 @@ static void gent_fcontents(void)
 
 
     /*-------------------------------------------------------------------------
-    * close
-    *-------------------------------------------------------------------------
-    */
+     * close
+     *-------------------------------------------------------------------------
+     */
 
 
     ret = H5Fclose(fid);
@@ -5708,153 +5733,153 @@ static void gent_fcontents(void)
  */
 static void gent_fvalues(void)
 {
- /* compound datatype */
- typedef struct c_t
- {
-  char   a;
-  double b;
- } c_t;
-
-
- hid_t      fid;  /* file id */
- hid_t      dcpl; /* dataset creation property list */
- hid_t      sid;  /* dataspace ID */
- hid_t      tid;  /* datatype ID */
- hid_t      did;  /* datasetID */
- hsize_t    dims[1]={2};
- int        buf[2]={1,2};                   /* integer */
- int        fillval1=-99;                   /* integer fill value */
- c_t        buf2[2]={{1,2},{3,4}};          /* compound */
- c_t        fillval2[1]={{1,2}};            /* compound fill value */
- hvl_t      buf3[2];                        /* vlen */
- hvl_t      fillval3;                       /* vlen fill value */
- hsize_t    dimarray[1]={3};                /* array dimension */
- int        buf4[2][3]= {{1,2,3},{4,5,6}};  /* array */
- int        ret;
-
- /* create a file */
- fid  = H5Fcreate(FILE48, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- HDassert(fid>=0);
-
- /* create a space */
- sid = H5Screate_simple(1, dims, NULL);
-
- /* create a dataset creation property list */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
-
-/*-------------------------------------------------------------------------
- * make datasets with fill value combinations
- * H5D_FILL_TIME_IFSET
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET);
- HDassert(ret >= 0);
-
- ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1);
- HDassert(ret >= 0);
+    /* compound datatype */
+    typedef struct c_t
+    {
+            char   a;
+            double b;
+    } c_t;
+
+
+    hid_t      fid;  /* file id */
+    hid_t      dcpl; /* dataset creation property list */
+    hid_t      sid;  /* dataspace ID */
+    hid_t      tid;  /* datatype ID */
+    hid_t      did;  /* datasetID */
+    hsize_t    dims[1]={2};
+    int        buf[2]={1,2};                   /* integer */
+    int        fillval1=-99;                   /* integer fill value */
+    c_t        buf2[2]={{1,2},{3,4}};          /* compound */
+    c_t        fillval2[1]={{1,2}};            /* compound fill value */
+    hvl_t      buf3[2];                        /* vlen */
+    hvl_t      fillval3;                       /* vlen fill value */
+    hsize_t    dimarray[1]={3};                /* array dimension */
+    int        buf4[2][3]= {{1,2,3},{4,5,6}};  /* array */
+    int        ret;
 
- ret=make_dset(fid,"fill_time_ifset",sid,H5T_NATIVE_INT,dcpl,buf);
- HDassert(ret >= 0);
+    /* create a file */
+    fid  = H5Fcreate(FILE48, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(fid>=0);
 
-/*-------------------------------------------------------------------------
- * H5D_FILL_TIME_NEVER
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER);
- HDassert(ret >= 0);
+    /* create a space */
+    sid = H5Screate_simple(1, dims, NULL);
 
- ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1);
- HDassert(ret >= 0);
+    /* create a dataset creation property list */
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
 
- ret=make_dset(fid,"fill_time_never",sid,H5T_NATIVE_INT,dcpl,buf);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * make datasets with fill value combinations
+     * H5D_FILL_TIME_IFSET
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * H5D_FILL_TIME_ALLOC
- *-------------------------------------------------------------------------
- */
- ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC);
- HDassert(ret >= 0);
+    ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1);
+    HDassert(ret >= 0);
 
- ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1);
- HDassert(ret >= 0);
+    ret=make_dset(fid,"fill_time_ifset",sid,H5T_NATIVE_INT,dcpl,buf);
+    HDassert(ret >= 0);
 
- ret=make_dset(fid,"fill_time_alloc",sid,H5T_NATIVE_INT,dcpl,buf);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * H5D_FILL_TIME_NEVER
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER);
+    HDassert(ret >= 0);
 
- ret = H5Pclose(dcpl);
- HDassert(ret >= 0);
+    ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * dataset with no fill value
- *-------------------------------------------------------------------------
- */
- write_dset(fid,1,dims,"no_fill",H5T_NATIVE_INT,buf);
+    ret=make_dset(fid,"fill_time_never",sid,H5T_NATIVE_INT,dcpl,buf);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * dataset with a H5T_COMPOUND fill value
- *-------------------------------------------------------------------------
- */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- tid = H5Tcreate (H5T_COMPOUND, sizeof(c_t));
- H5Tinsert(tid, "a", HOFFSET(c_t, a), H5T_NATIVE_CHAR);
- H5Tinsert(tid, "b", HOFFSET(c_t, b), H5T_NATIVE_DOUBLE);
- ret = H5Pset_fill_value(dcpl, tid, &fillval2);
- HDassert(ret >= 0);
- ret=make_dset(fid,"fill_compound",sid,tid,dcpl,buf2);
- HDassert(ret >= 0);
- ret = H5Tclose(tid);
- HDassert(ret >= 0);
- ret = H5Pclose(dcpl);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * H5D_FILL_TIME_ALLOC
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * dataset with a H5T_VLEN fill value
- *-------------------------------------------------------------------------
- */
- buf3[0].len = 1;
- buf3[0].p = HDmalloc( 1 * sizeof(int));
- ((int *)buf3[0].p)[0]=1;
- buf3[1].len = 2;
- buf3[1].p = HDmalloc(2 * sizeof(int));
- ((int *)buf3[1].p)[0] = 2;
- ((int *)buf3[1].p)[1] = 3;
-
- tid = H5Tvlen_create(H5T_NATIVE_INT);
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
-
- fillval3.p=NULL; fillval3.len=0;
- ret = H5Pset_fill_value(dcpl, tid, &fillval3);
- HDassert(ret >= 0);
-
- did = H5Dcreate2(fid, "fill_vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- ret = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf3);
- HDassert(ret >= 0);
- ret = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf3);
- HDassert(ret >= 0);
- ret = H5Dclose(did);
- ret = H5Tclose(tid);
- ret = H5Pclose(dcpl);
- HDassert(ret >= 0);
+    ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * dataset with a H5T_ARRAY fill value
- *-------------------------------------------------------------------------
- */
- tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
- write_dset(fid, 1, dims, "fill_array", tid, buf4);
- ret = H5Tclose(tid);
+    ret=make_dset(fid,"fill_time_alloc",sid,H5T_NATIVE_INT,dcpl,buf);
+    HDassert(ret >= 0);
 
+    ret = H5Pclose(dcpl);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- ret = H5Sclose(sid);
- HDassert(ret >= 0);
- ret = H5Fclose(fid);
- HDassert(ret >= 0);
-}
+    /*-------------------------------------------------------------------------
+     * dataset with no fill value
+     *-------------------------------------------------------------------------
+     */
+    write_dset(fid,1,dims,"no_fill",H5T_NATIVE_INT,buf);
+
+    /*-------------------------------------------------------------------------
+     * dataset with a H5T_COMPOUND fill value
+     *-------------------------------------------------------------------------
+     */
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(c_t));
+    H5Tinsert(tid, "a", HOFFSET(c_t, a), H5T_NATIVE_CHAR);
+    H5Tinsert(tid, "b", HOFFSET(c_t, b), H5T_NATIVE_DOUBLE);
+    ret = H5Pset_fill_value(dcpl, tid, &fillval2);
+    HDassert(ret >= 0);
+    ret=make_dset(fid,"fill_compound",sid,tid,dcpl,buf2);
+    HDassert(ret >= 0);
+    ret = H5Tclose(tid);
+    HDassert(ret >= 0);
+    ret = H5Pclose(dcpl);
+    HDassert(ret >= 0);
+
+    /*-------------------------------------------------------------------------
+     * dataset with a H5T_VLEN fill value
+     *-------------------------------------------------------------------------
+     */
+    buf3[0].len = 1;
+    buf3[0].p = HDmalloc( 1 * sizeof(int));
+    ((int *)buf3[0].p)[0]=1;
+    buf3[1].len = 2;
+    buf3[1].p = HDmalloc(2 * sizeof(int));
+    ((int *)buf3[1].p)[0] = 2;
+    ((int *)buf3[1].p)[1] = 3;
+
+    tid = H5Tvlen_create(H5T_NATIVE_INT);
+    dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+    fillval3.p=NULL; fillval3.len=0;
+    ret = H5Pset_fill_value(dcpl, tid, &fillval3);
+    HDassert(ret >= 0);
+
+    did = H5Dcreate2(fid, "fill_vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    ret = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf3);
+    HDassert(ret >= 0);
+    ret = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf3);
+    HDassert(ret >= 0);
+    ret = H5Dclose(did);
+    ret = H5Tclose(tid);
+    ret = H5Pclose(dcpl);
+    HDassert(ret >= 0);
+
+    /*-------------------------------------------------------------------------
+     * dataset with a H5T_ARRAY fill value
+     *-------------------------------------------------------------------------
+     */
+    tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray);
+    write_dset(fid, 1, dims, "fill_array", tid, buf4);
+    ret = H5Tclose(tid);
+
+
+    /*-------------------------------------------------------------------------
+     * close
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Sclose(sid);
+    HDassert(ret >= 0);
+    ret = H5Fclose(fid);
+    HDassert(ret >= 0);
+}
 
 
 /*-------------------------------------------------------------------------
@@ -5866,103 +5891,103 @@ static void gent_fvalues(void)
  */
 static void gent_string(void)
 {
-  /* compound datatype */
- typedef struct c_t
- {
-  int    a;
-  char   str[255];
- } c_t;
-
- hid_t    fid;      /* file id */
- hid_t    sid;      /* dataspace ID */
- hid_t    tid;      /* datatype ID */
- hid_t    str_tid;  /* datatype ID */
- hid_t    did;      /* dataset ID */
- char     buf1[]={"quote \"  backspace\b form feed\f new line\n tab\t new line\n carriage return\r"};
- const char *buf2[SPACE1_DIM1]= {
-        "Four score and seven\n years ago our forefathers brought forth on this continent a new nation,",
-        "conceived in liberty\n and dedicated to the proposition that all men are created equal.",
-        "Now we are engaged\n in a great civil war,",
-        "testing whether that\n nation or any nation so conceived and so dedicated can long endure."
-        };
- c_t      buf3 = {24, "Four score and seven\n years ago our forefathers brought forth on this continent a new nation"};
- char     buf4[] = {"Four score and seven\n years ago our forefathers brought forth on this continent a new nation"};
- hsize_t  dims1[]  = {1};
- hsize_t        dims2[]  = {SPACE1_DIM1};
- hsize_t        dims4[1];
- int      ret;
-
- dims4[0] = sizeof(buf4);
-
- /* create a file */
- fid  = H5Fcreate(FILE49, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- HDassert(fid>=0);
+    /* compound datatype */
+    typedef struct c_t
+    {
+            int    a;
+            char   str[255];
+    } c_t;
+
+    hid_t    fid;      /* file id */
+    hid_t    sid;      /* dataspace ID */
+    hid_t    tid;      /* datatype ID */
+    hid_t    str_tid;  /* datatype ID */
+    hid_t    did;      /* dataset ID */
+    char     buf1[]={"quote \"  backspace\b form feed\f new line\n tab\t new line\n carriage return\r"};
+    const char *buf2[SPACE1_DIM1]= {
+            "Four score and seven\n years ago our forefathers brought forth on this continent a new nation,",
+            "conceived in liberty\n and dedicated to the proposition that all men are created equal.",
+            "Now we are engaged\n in a great civil war,",
+            "testing whether that\n nation or any nation so conceived and so dedicated can long endure."
+    };
+    c_t      buf3 = {24, "Four score and seven\n years ago our forefathers brought forth on this continent a new nation"};
+    char     buf4[] = {"Four score and seven\n years ago our forefathers brought forth on this continent a new nation"};
+    hsize_t  dims1[]  = {1};
+    hsize_t        dims2[]  = {SPACE1_DIM1};
+    hsize_t        dims4[1];
+    int      ret;
 
-/*-------------------------------------------------------------------------
- * str1
- *-------------------------------------------------------------------------
- */
+    dims4[0] = sizeof(buf4);
 
- tid=H5Tcopy(H5T_C_S1);
- ret = H5Tset_size(tid, sizeof(buf1));
- HDassert(ret >= 0);
- write_dset(fid,1,dims1,"str1",tid,buf1);
- HDassert(ret >= 0);
- ret = H5Tclose(tid);
- HDassert(ret >= 0);
+    /* create a file */
+    fid  = H5Fcreate(FILE49, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(fid>=0);
 
-/*-------------------------------------------------------------------------
- * str2
- *-------------------------------------------------------------------------
- */
- sid = H5Screate_simple(SPACE1_RANK, dims2, NULL);
- tid = H5Tcopy(H5T_C_S1);
- ret = H5Tset_size(tid, H5T_VARIABLE);
- HDassert(ret >= 0);
- did = H5Dcreate2(fid, "str2", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- ret = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2);
- HDassert(ret >= 0);
- ret = H5Tclose(tid);
- HDassert(ret >= 0);
- ret = H5Dclose(did);
- HDassert(ret >= 0);
- ret = H5Sclose(sid);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * str1
+     *-------------------------------------------------------------------------
+     */
 
-/*-------------------------------------------------------------------------
- * str3
- *-------------------------------------------------------------------------
- */
- sid = H5Screate_simple(SPACE1_RANK, dims1, NULL);
- tid = H5Tcreate (H5T_COMPOUND, sizeof(c_t));
- str_tid = H5Tcopy( H5T_C_S1 );
- H5Tset_size( str_tid, 255 );
- H5Tinsert(tid, "a", HOFFSET(c_t, a), H5T_NATIVE_INT);
- H5Tinsert(tid, "str", HOFFSET(c_t, str), str_tid );
- ret=make_dset(fid,"str3",sid,tid,H5P_DEFAULT,&buf3);
- HDassert(ret >= 0);
- ret = H5Tclose(tid);
- HDassert(ret >= 0);
- ret = H5Tclose(str_tid);
- HDassert(ret >= 0);
- ret = H5Sclose(sid);
- HDassert(ret >= 0);
+    tid=H5Tcopy(H5T_C_S1);
+    ret = H5Tset_size(tid, sizeof(buf1));
+    HDassert(ret >= 0);
+    write_dset(fid,1,dims1,"str1",tid,buf1);
+    HDassert(ret >= 0);
+    ret = H5Tclose(tid);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * str4
- *-------------------------------------------------------------------------
- */
- sid = H5Screate_simple(SPACE1_RANK, dims4, NULL);
- ret=make_dset(fid,"str4",sid,H5T_NATIVE_CHAR,H5P_DEFAULT,buf4);
- ret = H5Sclose(sid);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * str2
+     *-------------------------------------------------------------------------
+     */
+    sid = H5Screate_simple(SPACE1_RANK, dims2, NULL);
+    tid = H5Tcopy(H5T_C_S1);
+    ret = H5Tset_size(tid, H5T_VARIABLE);
+    HDassert(ret >= 0);
+    did = H5Dcreate2(fid, "str2", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    ret = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2);
+    HDassert(ret >= 0);
+    ret = H5Tclose(tid);
+    HDassert(ret >= 0);
+    ret = H5Dclose(did);
+    HDassert(ret >= 0);
+    ret = H5Sclose(sid);
+    HDassert(ret >= 0);
 
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- ret = H5Fclose(fid);
- HDassert(ret >= 0);
+    /*-------------------------------------------------------------------------
+     * str3
+     *-------------------------------------------------------------------------
+     */
+    sid = H5Screate_simple(SPACE1_RANK, dims1, NULL);
+    tid = H5Tcreate (H5T_COMPOUND, sizeof(c_t));
+    str_tid = H5Tcopy( H5T_C_S1 );
+    H5Tset_size( str_tid, 255 );
+    H5Tinsert(tid, "a", HOFFSET(c_t, a), H5T_NATIVE_INT);
+    H5Tinsert(tid, "str", HOFFSET(c_t, str), str_tid );
+    ret=make_dset(fid,"str3",sid,tid,H5P_DEFAULT,&buf3);
+    HDassert(ret >= 0);
+    ret = H5Tclose(tid);
+    HDassert(ret >= 0);
+    ret = H5Tclose(str_tid);
+    HDassert(ret >= 0);
+    ret = H5Sclose(sid);
+    HDassert(ret >= 0);
+
+    /*-------------------------------------------------------------------------
+     * str4
+     *-------------------------------------------------------------------------
+     */
+    sid = H5Screate_simple(SPACE1_RANK, dims4, NULL);
+    ret=make_dset(fid,"str4",sid,H5T_NATIVE_CHAR,H5P_DEFAULT,buf4);
+    ret = H5Sclose(sid);
+    HDassert(ret >= 0);
+
+    /*-------------------------------------------------------------------------
+     * close
+     *-------------------------------------------------------------------------
+     */
+    ret = H5Fclose(fid);
+    HDassert(ret >= 0);
 }
 
 
@@ -6008,18 +6033,18 @@ static void gent_aindices(void)
     HDassert(fid>=0);
 
     /*-------------------------------------------------------------------------
-    * root datasets
-    *-------------------------------------------------------------------------
-    */
+     * root datasets
+     *-------------------------------------------------------------------------
+     */
     write_dset(fid,1,dims1,"1d",H5T_NATIVE_INT,buf1);
     write_dset(fid,2,dims2,"2d",H5T_NATIVE_INT,buf2);
     write_dset(fid,3,dims3,"3d",H5T_NATIVE_INT,buf3);
     write_dset(fid,4,dims4,"4d",H5T_NATIVE_INT,buf4);
 
     /*-------------------------------------------------------------------------
-    * test with group indentation
-    *-------------------------------------------------------------------------
-    */
+     * test with group indentation
+     *-------------------------------------------------------------------------
+     */
     gid[0] = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     gid[1] = H5Gcreate2(fid, "g1/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     gid[2] = H5Gcreate2(fid, "g1/g2/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
@@ -6034,9 +6059,9 @@ static void gent_aindices(void)
         H5Gclose(gid[i]);
 
     /*-------------------------------------------------------------------------
-    * close
-    *-------------------------------------------------------------------------
-    */
+     * close
+     *-------------------------------------------------------------------------
+     */
     ret = H5Fclose(fid);
     HDassert(ret >= 0);
 
@@ -6102,45 +6127,45 @@ static void gent_longlinks(void)
  */
 static int gent_ldouble(void)
 {
- hid_t       fid;
- hid_t       did;
- hid_t       tid;
- hid_t       sid;
- hsize_t     dims[1] = {3};
- long double buf[3] = {1,2,3};
+    hid_t       fid;
+    hid_t       did;
+    hid_t       tid;
+    hid_t       sid;
+    hsize_t     dims[1] = {3};
+    long double buf[3] = {1,2,3};
 
- if((fid = H5Fcreate(FILE52, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
-  goto error;
+    if((fid = H5Fcreate(FILE52, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        goto error;
 
- if((sid = H5Screate_simple(1, dims, NULL)) < 0)
-  goto error;
+    if((sid = H5Screate_simple(1, dims, NULL)) < 0)
+        goto error;
 
- if((tid = H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0)
-  goto error;
+    if((tid = H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0)
+        goto error;
 
- if(H5Tget_size(tid) == 0)
-  goto error;
+    if(H5Tget_size(tid) == 0)
+        goto error;
 
- if((did = H5Dcreate2(fid, "dset", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
-  goto error;
+    if((did = H5Dcreate2(fid, "dset", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        goto error;
 
- if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
-  goto error;
+    if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
+        goto error;
 
- if(H5Sclose(sid) < 0)
-  goto error;
- if(H5Tclose(tid) < 0)
-  goto error;
- if(H5Dclose(did) < 0)
-  goto error;
- if(H5Fclose(fid) < 0)
-  goto error;
+    if(H5Sclose(sid) < 0)
+        goto error;
+    if(H5Tclose(tid) < 0)
+        goto error;
+    if(H5Dclose(did) < 0)
+        goto error;
+    if(H5Fclose(fid) < 0)
+        goto error;
 
- return 0;
+    return 0;
 
-error:
- printf("error !\n");
- return -1;
+    error:
+    printf("error !\n");
+    return -1;
 
 }
 
@@ -6159,48 +6184,48 @@ error:
 static void
 gent_binary(void)
 {
- hid_t    fid, sid, did, aid;
- hsize_t  dims[1]  = {6};
- int      ibuf[6]  = {1,2,3,4,5,6};
- float    fbuf[6]  = {1,2,3,4,5,6};
- double   dbuf[6]  = {1,2,3,4,5,6};
+    hid_t    fid, sid, did, aid;
+    hsize_t  dims[1]  = {6};
+    int      ibuf[6]  = {1,2,3,4,5,6};
+    float    fbuf[6]  = {1,2,3,4,5,6};
+    double   dbuf[6]  = {1,2,3,4,5,6};
 
- fid = H5Fcreate(FILE55, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- sid = H5Screate_simple(1, dims, NULL);
+    fid = H5Fcreate(FILE55, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    sid = H5Screate_simple(1, dims, NULL);
 
 
-/*-------------------------------------------------------------------------
- * integer
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * integer
+     *-------------------------------------------------------------------------
+     */
 
- did = H5Dcreate2(fid, "integer", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ibuf);
- H5Dclose(did);
+    did = H5Dcreate2(fid, "integer", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ibuf);
+    H5Dclose(did);
 
-/*-------------------------------------------------------------------------
- * float
- *-------------------------------------------------------------------------
- */
- did = H5Dcreate2(fid, "float", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fbuf);
- H5Dclose(did);
+    /*-------------------------------------------------------------------------
+     * float
+     *-------------------------------------------------------------------------
+     */
+    did = H5Dcreate2(fid, "float", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fbuf);
+    H5Dclose(did);
 
-/*-------------------------------------------------------------------------
- * double
- *-------------------------------------------------------------------------
- */
- did = H5Dcreate2(fid, "double", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf);
- /* create an attribute */
- aid = H5Acreate2(did, "attr", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT);
- H5Aclose(aid);
- H5Dclose(did);
+    /*-------------------------------------------------------------------------
+     * double
+     *-------------------------------------------------------------------------
+     */
+    did = H5Dcreate2(fid, "double", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf);
+    /* create an attribute */
+    aid = H5Acreate2(did, "attr", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT);
+    H5Aclose(aid);
+    H5Dclose(did);
 
 
- /* close */
- H5Sclose(sid);
- H5Fclose(fid);
+    /* close */
+    H5Sclose(sid);
+    H5Fclose(fid);
 }
 
 /*-------------------------------------------------------------------------
@@ -6301,7 +6326,7 @@ gent_bigdims(void)
 
     return;
 
-out:
+    out:
     printf("Error.....\n");
     H5E_BEGIN_TRY {
         H5Pclose(dcpl);
@@ -6377,10 +6402,10 @@ gent_group_creation_order(void)
     if((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0)
         goto out;
 
-/*-------------------------------------------------------------------------
- * create a group "2"
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a group "2"
+     *-------------------------------------------------------------------------
+     */
 
 
     if((gid = H5Gcreate2(fid, "2", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0)
@@ -6416,7 +6441,7 @@ gent_group_creation_order(void)
         goto out;
     gid = -1;
 
-     if((gid = H5Gcreate2(fid, "2/a/a2/a22", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+    if((gid = H5Gcreate2(fid, "2/a/a2/a22", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
         goto out;
     if(H5Gclose(gid) < 0)
         goto out;
@@ -6428,10 +6453,10 @@ gent_group_creation_order(void)
     gid = -1;
 
 
-/*-------------------------------------------------------------------------
- * create a group "1" with H5P_CRT_ORDER_TRACKED set
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a group "1" with H5P_CRT_ORDER_TRACKED set
+     *-------------------------------------------------------------------------
+     */
     if(H5Pset_link_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED) < 0)
         goto out;
 
@@ -6469,7 +6494,7 @@ gent_group_creation_order(void)
         goto out;
     gid = -1;
 
-     if((gid = H5Gcreate2(fid, "1/a/a2/a22", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+    if((gid = H5Gcreate2(fid, "1/a/a2/a22", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
         goto out;
     if(H5Gclose(gid) < 0)
         goto out;
@@ -6493,7 +6518,7 @@ gent_group_creation_order(void)
 
     return;
 
-out:
+    out:
     printf("Error.....\n");
     H5E_BEGIN_TRY {
         H5Gclose(gid);
@@ -6560,10 +6585,10 @@ gent_attr_creation_order(void)
     if((sid = H5Screate(H5S_SCALAR)) < 0)
         goto out;
 
-/*-------------------------------------------------------------------------
- * create a dataset with creation order tracked for attributes and atributes in it
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a dataset with creation order tracked for attributes and atributes in it
+     *-------------------------------------------------------------------------
+     */
 
     /* create a dataset */
     if((did = H5Dcreate2(fid, "dt", H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0)
@@ -6586,10 +6611,10 @@ gent_attr_creation_order(void)
     did = -1;
 
 
-/*-------------------------------------------------------------------------
- * create a dataset without creation order tracked for attributes and atributes in it
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a dataset without creation order tracked for attributes and atributes in it
+     *-------------------------------------------------------------------------
+     */
 
     /* create a dataset */
     if((did = H5Dcreate2(fid, "d", H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
@@ -6613,10 +6638,10 @@ gent_attr_creation_order(void)
 
 
 
-/*-------------------------------------------------------------------------
- * create a group with creation order tracked for attributes and atributes in it
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a group with creation order tracked for attributes and atributes in it
+     *-------------------------------------------------------------------------
+     */
 
     if((gid = H5Gcreate2(fid, "gt", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0)
         goto out;
@@ -6637,10 +6662,10 @@ gent_attr_creation_order(void)
         goto out;
     gid = -1;
 
-/*-------------------------------------------------------------------------
- * create a group without creation order tracked for attributes and atributes in it
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a group without creation order tracked for attributes and atributes in it
+     *-------------------------------------------------------------------------
+     */
 
     if((gid = H5Gcreate2(fid, "g", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
         goto out;
@@ -6661,10 +6686,10 @@ gent_attr_creation_order(void)
         goto out;
     gid = -1;
 
-/*-------------------------------------------------------------------------
- * create a named datatype with creation order tracked for attributes and atributes in it
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a named datatype with creation order tracked for attributes and atributes in it
+     *-------------------------------------------------------------------------
+     */
 
     if((tid = H5Tcopy(H5T_NATIVE_INT)) < 0)
         goto out;
@@ -6688,10 +6713,10 @@ gent_attr_creation_order(void)
         goto out;
     tid = -1;
 
-/*-------------------------------------------------------------------------
- * create a named datatype without creation order tracked for attributes and atributes in it
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create a named datatype without creation order tracked for attributes and atributes in it
+     *-------------------------------------------------------------------------
+     */
 
     if((tid = H5Tcopy(H5T_NATIVE_INT)) < 0)
         goto out;
@@ -6715,10 +6740,10 @@ gent_attr_creation_order(void)
         goto out;
     tid = -1;
 
-/*-------------------------------------------------------------------------
- * add some attributes to the root group
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * add some attributes to the root group
+     *-------------------------------------------------------------------------
+     */
     if((gid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0)
         goto out;
 
@@ -6738,10 +6763,10 @@ gent_attr_creation_order(void)
         goto out;
     gid = -1;
 
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * close
+     *-------------------------------------------------------------------------
+     */
     if(H5Sclose(sid) < 0)
         goto out;
     sid = -1;
@@ -6762,7 +6787,7 @@ gent_attr_creation_order(void)
 
     return;
 
-out:
+    out:
     printf("Error.....\n");
     H5E_BEGIN_TRY {
         H5Gclose(gid);
@@ -6791,35 +6816,35 @@ out:
 static void
 gent_fpformat(void)
 {
- hid_t    fid, sid, did;
- hsize_t  dims[1]  = {6};
- double   dbuf[6]  = {-0.1234567, 0.1234567, 0, 0, 0, 0};
- float    fbuf[6]  = {-0.1234567f, 0.1234567f, 0, 0, 0, 0};
+    hid_t    fid, sid, did;
+    hsize_t  dims[1]  = {6};
+    double   dbuf[6]  = {-0.1234567, 0.1234567, 0, 0, 0, 0};
+    float    fbuf[6]  = {-0.1234567f, 0.1234567f, 0, 0, 0, 0};
 
- fid = H5Fcreate(FILE60, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- sid = H5Screate_simple(1, dims, NULL);
+    fid = H5Fcreate(FILE60, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    sid = H5Screate_simple(1, dims, NULL);
 
-/*-------------------------------------------------------------------------
- * double
- *-------------------------------------------------------------------------
- */
- did = H5Dcreate2(fid, "double", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf);
- H5Dclose(did);
+    /*-------------------------------------------------------------------------
+     * double
+     *-------------------------------------------------------------------------
+     */
+    did = H5Dcreate2(fid, "double", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf);
+    H5Dclose(did);
 
 
-/*-------------------------------------------------------------------------
- * float
- *-------------------------------------------------------------------------
- */
- did = H5Dcreate2(fid, "float", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fbuf);
- H5Dclose(did);
+    /*-------------------------------------------------------------------------
+     * float
+     *-------------------------------------------------------------------------
+     */
+    did = H5Dcreate2(fid, "float", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fbuf);
+    H5Dclose(did);
 
 
- /* close */
- H5Sclose(sid);
- H5Fclose(fid);
+    /* close */
+    H5Sclose(sid);
+    H5Fclose(fid);
 }
 
 /*-------------------------------------------------------------------------
@@ -6834,83 +6859,83 @@ gent_fpformat(void)
 static void
 gent_extlinks(void)
 {
- hid_t    source_fid, target_fid, far_fid, sid, did, gid, gid2, tid;
- hsize_t  dims[1]  = {6};
- int      buf[6]  = {1, 2, 3, 4, 5, 6};
+    hid_t    source_fid, target_fid, far_fid, sid, did, gid, gid2, tid;
+    hsize_t  dims[1]  = {6};
+    int      buf[6]  = {1, 2, 3, 4, 5, 6};
 
- /* create two files, a source and a target */
- source_fid = H5Fcreate(FILE61, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- target_fid = H5Fcreate(FILE62, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- far_fid = H5Fcreate(FILE63, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    /* create two files, a source and a target */
+    source_fid = H5Fcreate(FILE61, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    target_fid = H5Fcreate(FILE62, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    far_fid = H5Fcreate(FILE63, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
 
 
-/*-------------------------------------------------------------------------
- * create Groups, a Dataset, a committed Datatype, external links, and a
- * cycle in the target
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create Groups, a Dataset, a committed Datatype, external links, and a
+     * cycle in the target
+     *-------------------------------------------------------------------------
+     */
 
- gid = H5Gcreate2(target_fid, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Gclose(H5Gcreate2(target_fid, "empty_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT));
- sid = H5Screate_simple(1, dims, NULL);
- did = H5Dcreate2(gid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- H5Lcreate_external(FILE61, "/", gid, "elink_t1", H5P_DEFAULT, H5P_DEFAULT);
- H5Lcreate_external(FILE61, "/ext_link4", gid, "elink_t2", H5P_DEFAULT, H5P_DEFAULT);
+    gid = H5Gcreate2(target_fid, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Gclose(H5Gcreate2(target_fid, "empty_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT));
+    sid = H5Screate_simple(1, dims, NULL);
+    did = H5Dcreate2(gid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+    H5Lcreate_external(FILE61, "/", gid, "elink_t1", H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_external(FILE61, "/ext_link4", gid, "elink_t2", H5P_DEFAULT, H5P_DEFAULT);
 
- gid2 = H5Gcreate2(gid, "subgroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Lcreate_hard(target_fid, "/group", gid2, "link_to_group", H5P_DEFAULT, H5P_DEFAULT);
+    gid2 = H5Gcreate2(gid, "subgroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_hard(target_fid, "/group", gid2, "link_to_group", H5P_DEFAULT, H5P_DEFAULT);
 
- H5Dclose(did);
- H5Sclose(sid);
- H5Gclose(gid2);
- H5Gclose(gid);
+    H5Dclose(did);
+    H5Sclose(sid);
+    H5Gclose(gid2);
+    H5Gclose(gid);
 
 
- sid = H5Screate_simple(1, dims, NULL);
- did = H5Dcreate2(target_fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- H5Dclose(did);
- H5Sclose(sid);
+    sid = H5Screate_simple(1, dims, NULL);
+    did = H5Dcreate2(target_fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+    H5Dclose(did);
+    H5Sclose(sid);
 
- tid = H5Tcopy(H5T_NATIVE_INT);
- H5Tcommit2(target_fid, "type", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- H5Tclose(tid);
+    tid = H5Tcopy(H5T_NATIVE_INT);
+    H5Tcommit2(target_fid, "type", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    H5Tclose(tid);
 
-/*-------------------------------------------------------------------------
- * create external links in the source file pointing to the target objects
- *-------------------------------------------------------------------------
- */
+    /*-------------------------------------------------------------------------
+     * create external links in the source file pointing to the target objects
+     *-------------------------------------------------------------------------
+     */
 
- H5Lcreate_external(FILE62, "group", source_fid, "ext_link1", H5P_DEFAULT, H5P_DEFAULT);
- H5Lcreate_external(FILE62, "dset", source_fid, "ext_link2", H5P_DEFAULT, H5P_DEFAULT);
- H5Lcreate_external(FILE62, "type", source_fid, "ext_link3", H5P_DEFAULT, H5P_DEFAULT);
- H5Lcreate_external(FILE62, "group/elink_t2", source_fid, "ext_link4", H5P_DEFAULT, H5P_DEFAULT);
- H5Lcreate_external(FILE62, "empty_group", source_fid, "ext_link5", H5P_DEFAULT, H5P_DEFAULT);
-/* external link to soft link which linked to a dataset */
- H5Lcreate_external(FILE4_1, "/soft_dset1", source_fid, "ext2soft_link1", H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_external(FILE62, "group", source_fid, "ext_link1", H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_external(FILE62, "dset", source_fid, "ext_link2", H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_external(FILE62, "type", source_fid, "ext_link3", H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_external(FILE62, "group/elink_t2", source_fid, "ext_link4", H5P_DEFAULT, H5P_DEFAULT);
+    H5Lcreate_external(FILE62, "empty_group", source_fid, "ext_link5", H5P_DEFAULT, H5P_DEFAULT);
+    /* external link to soft link which linked to a dataset */
+    H5Lcreate_external(FILE4_1, "/soft_dset1", source_fid, "ext2soft_link1", H5P_DEFAULT, H5P_DEFAULT);
 
-/* external link to dangle soft link  */
- H5Lcreate_external(FILE4_1, "/soft_dangle", source_fid, "ext2softdangle_link1", H5P_DEFAULT, H5P_DEFAULT);
+    /* external link to dangle soft link  */
+    H5Lcreate_external(FILE4_1, "/soft_dangle", source_fid, "ext2softdangle_link1", H5P_DEFAULT, H5P_DEFAULT);
 
-/*-------------------------------------------------------------------------
- * create external link in the "far" file pointing to the source file
- *-------------------------------------------------------------------------
- */
- H5Lcreate_external(FILE61, "/", far_fid, "src_file", H5P_DEFAULT, H5P_DEFAULT);
+    /*-------------------------------------------------------------------------
+     * create external link in the "far" file pointing to the source file
+     *-------------------------------------------------------------------------
+     */
+    H5Lcreate_external(FILE61, "/", far_fid, "src_file", H5P_DEFAULT, H5P_DEFAULT);
 
- /* close */
- H5Fclose(source_fid);
- H5Fclose(target_fid);
- H5Fclose(far_fid);
+    /* close */
+    H5Fclose(source_fid);
+    H5Fclose(target_fid);
+    H5Fclose(far_fid);
 }
 
 /*-------------------------------------------------------------------------
  * Function:    gent_packedbits
  *
  * Purpose:     Generate a file to be used in the h5dump packed bits tests.
- *   Three datasets of 1, 2 and 4 bytes of unsigned int types are created.
- *   Three more datasets of 1, 2 and 4 bytes of signed int types are created.
+ *   Four datasets of 1, 2, 4 and 8 bytes of unsigned int types are created.
+ *   Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created.
  *   Fill them with raw data such that no bit will be all zero in a dataset.
  *   A dummy dataset of double type is created for failure test.
  * Created:  Albert Cheng, 2010/5/10.
@@ -6942,11 +6967,11 @@ gent_packedbits(void)
 
     valu8bits = (uint8_t) ~0u;  /* all 1s */
     for(i = 0; i < dims[0]; i++){
-  		dsetu8[i][0] = valu8bits;
-  		for(j = 1; j < dims[1]; j++) {
-              dsetu8[i][j] = dsetu8[i][j-1] << 1;
-		}
-		valu8bits <<= 1;
+        dsetu8[i][0] = valu8bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu8[i][j] = dsetu8[i][j-1] << 1;
+        }
+        valu8bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_UINT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu8);
@@ -6960,11 +6985,11 @@ gent_packedbits(void)
 
     valu16bits = (uint16_t) ~0u;	/* all 1s */
     for(i = 0; i < dims[0]; i++){
-		dsetu16[i][0] = valu16bits;
-		for(j = 1; j < dims[1]; j++) {
-              dsetu16[i][j] = dsetu16[i][j-1] << 1;
-		}
-		valu16bits <<= 1;
+        dsetu16[i][0] = valu16bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu16[i][j] = dsetu16[i][j-1] << 1;
+        }
+        valu16bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_UINT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu16);
@@ -6978,11 +7003,11 @@ gent_packedbits(void)
 
     valu32bits = (uint32_t) ~0u;	/* all 1s */
     for(i = 0; i < dims[0]; i++){
-		dsetu32[i][0] = valu32bits;
-		for(j = 1; j < dims[1]; j++) {
-              dsetu32[i][j] = dsetu32[i][j-1] << 1;
-		}
-	valu32bits <<= 1;
+        dsetu32[i][0] = valu32bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu32[i][j] = dsetu32[i][j-1] << 1;
+        }
+        valu32bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_UINT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu32);
@@ -6996,11 +7021,11 @@ gent_packedbits(void)
 
     valu64bits = (uint64_t) ~0Lu;    /* all 1s */
     for(i = 0; i < dims[0]; i++){
-    	dsetu64[i][0] = valu64bits;
-    	for(j = 1; j < dims[1]; j++) {
-              dsetu64[i][j] = dsetu64[i][j-1] << 1;
-    	}
-    	valu64bits <<= 1;
+        dsetu64[i][0] = valu64bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu64[i][j] = dsetu64[i][j-1] << 1;
+        }
+        valu64bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_UINT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu64);
@@ -7014,11 +7039,11 @@ gent_packedbits(void)
 
     val8bits = (int8_t) ~0;	/* all 1s */
     for(i = 0; i < dims[0]; i++){
-		dset8[i][0] = val8bits;
-		for(j = 1; j < dims[1]; j++) {
-              dset8[i][j] = dset8[i][j-1] << 1;
-		}
-		val8bits <<= 1;
+        dset8[i][0] = val8bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset8[i][j] = dset8[i][j-1] << 1;
+        }
+        val8bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_INT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8);
@@ -7032,11 +7057,11 @@ gent_packedbits(void)
 
     val16bits = (int16_t) ~0;	/* all 1s */
     for(i = 0; i < dims[0]; i++){
-		dset16[i][0] = val16bits;
-		for(j = 1; j < dims[1]; j++) {
-              dset16[i][j] = dset16[i][j-1] << 1;
-		}
-		val16bits <<= 1;
+        dset16[i][0] = val16bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset16[i][j] = dset16[i][j-1] << 1;
+        }
+        val16bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_INT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset16);
@@ -7050,11 +7075,11 @@ gent_packedbits(void)
 
     val32bits = (int32_t) ~0;	/* all 1s */
     for(i = 0; i < dims[0]; i++){
-		dset32[i][0] = val32bits;
-		for(j = 1; j < dims[1]; j++) {
-              dset32[i][j] = dset32[i][j-1] << 1;
-		}
-		val32bits <<= 1;
+        dset32[i][0] = val32bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset32[i][j] = dset32[i][j-1] << 1;
+        }
+        val32bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_INT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset32);
@@ -7068,11 +7093,11 @@ gent_packedbits(void)
 
     val64bits = (int64_t) ~0L;   /* all 1s */
     for(i = 0; i < dims[0]; i++){
-    	dset64[i][0] = val64bits;
-    	for(j = 1; j < dims[1]; j++) {
-              dset64[i][j] = dset64[i][j-1] << 1;
-    	}
-    	val64bits <<= 1;
+        dset64[i][0] = val64bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset64[i][j] = dset64[i][j-1] << 1;
+        }
+        val64bits <<= 1;
     }
 
     H5Dwrite(dataset, H5T_NATIVE_INT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset64);
@@ -7085,8 +7110,8 @@ gent_packedbits(void)
     dataset = H5Dcreate2(fid, F66_DUMMYDBL, H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 
     for(i = 0; i < dims[0]; i++)
-         for(j = 0; j < dims[1]; j++)
-              dsetdbl[i][j] = 0.0001 * j + i;
+        for(j = 0; j < dims[1]; j++)
+            dsetdbl[i][j] = 0.0001 * j + i;
 
     H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetdbl);
 
@@ -7096,65 +7121,1003 @@ gent_packedbits(void)
 }
 
 /*-------------------------------------------------------------------------
- * Function: main
+ * Function:    gent_attr_packedbits
  *
+ * Purpose:     Generate a file to be used in the h5dump packed bits tests.
+ *   Four attributes of 1, 2, 4 and 8 bytes of unsigned int types are created.
+ *   Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created.
+ *   Fill them with raw data such that no bit will be all zero in a dataset.
+ *   A dummy dataset of double type is created for failure test.
+ *   Use file to test Signed/Unsigned datatypes and keep in sync with gent_packedbits()
  *-------------------------------------------------------------------------
  */
-
-int main(void)
+static void
+gent_attr_intsize(void)
 {
-    gent_group();
-    gent_attribute();
-    gent_softlink();
-    gent_softlink2();
-    gent_dataset();
-    gent_hardlink();
-    gent_extlink();
-    gent_udlink();
-    gent_compound_dt();
-    gent_all();
-    gent_loop();
-    gent_dataset2();
-    gent_compound_dt2();
-    gent_loop2();
-    gent_many();
-    gent_str();
-    gent_str2();
-    gent_enum();
-    gent_objref();
-    gent_datareg();
-    gent_attrreg();
-    gent_nestcomp();
-    gent_opaque();
-    gent_bitfields();
-    gent_vldatatypes();
-    gent_vldatatypes2();
-    gent_vldatatypes3();
-    gent_vldatatypes4();
-    gent_vldatatypes5();
-    gent_array1_big();
-    gent_array1();
-    gent_array2();
-    gent_array3();
-    gent_array4();
-    gent_array5();
-    gent_array6();
-    gent_array7();
-    gent_array8();
-    gent_empty();
-    gent_group_comments();
-    gent_split_file();
-    gent_family();
-    gent_multi();
-    gent_large_objname();
-    gent_vlstr();
-    gent_char();
-    gent_attr_all();
-    gent_compound_complex();
-    gent_named_dtype_attr();
-    gent_null_space();
-    gent_zero_dim_size();
-
+    hid_t fid, attr, space, root;
+    hsize_t dims[2];
+    uint8_t  dsetu8[F66_XDIM][F66_YDIM8],   valu8bits;
+    uint16_t dsetu16[F66_XDIM][F66_YDIM16], valu16bits;
+    uint32_t dsetu32[F66_XDIM][F66_YDIM32], valu32bits;
+    uint64_t dsetu64[F66_XDIM][F66_YDIM64], valu64bits;
+    int8_t  dset8[F66_XDIM][F66_YDIM8],   val8bits;
+    int16_t dset16[F66_XDIM][F66_YDIM16], val16bits;
+    int32_t dset32[F66_XDIM][F66_YDIM32], val32bits;
+    int64_t dset64[F66_XDIM][F66_YDIM64], val64bits;
+    double  dsetdbl[F66_XDIM][F66_YDIM8];
+    unsigned int i, j;
+
+    fid = H5Fcreate(FILE69, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    root = H5Gopen2(fid, "/", H5P_DEFAULT);
+
+    /* Attribute of 8 bits unsigned int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM8;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETU08, H5T_STD_U8LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    valu8bits = (uint8_t) ~0u;  /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dsetu8[i][0] = valu8bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu8[i][j] = dsetu8[i][j-1] << 1;
+        }
+        valu8bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_UINT8, dsetu8);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 16 bits unsigned int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM16;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETU16, H5T_STD_U16LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    valu16bits = (uint16_t) ~0u;    /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dsetu16[i][0] = valu16bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu16[i][j] = dsetu16[i][j-1] << 1;
+        }
+        valu16bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_UINT16, dsetu16);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 32 bits unsigned int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM32;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETU32, H5T_STD_U32LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    valu32bits = (uint32_t) ~0u;    /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dsetu32[i][0] = valu32bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu32[i][j] = dsetu32[i][j-1] << 1;
+        }
+        valu32bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_UINT32, dsetu32);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 64 bits unsigned int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM64;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETU64, H5T_STD_U64LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    valu64bits = (uint64_t) ~0Lu;    /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dsetu64[i][0] = valu64bits;
+        for(j = 1; j < dims[1]; j++) {
+            dsetu64[i][j] = dsetu64[i][j-1] << 1;
+        }
+        valu64bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_UINT64, dsetu64);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 8 bits signed int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM8;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETS08, H5T_STD_I8LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    val8bits = (int8_t) ~0; /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dset8[i][0] = val8bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset8[i][j] = dset8[i][j-1] << 1;
+        }
+        val8bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_INT8, dset8);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 16 bits signed int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM16;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETS16, H5T_STD_I16LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    val16bits = (int16_t) ~0;   /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dset16[i][0] = val16bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset16[i][j] = dset16[i][j-1] << 1;
+        }
+        val16bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_INT16, dset16);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 32 bits signed int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM32;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETS32, H5T_STD_I32LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    val32bits = (int32_t) ~0;   /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dset32[i][0] = val32bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset32[i][j] = dset32[i][j-1] << 1;
+        }
+        val32bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_INT32, dset32);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Attribute of 64 bits signed int */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM64;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DATASETS64, H5T_STD_I64LE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    val64bits = (int64_t) ~0L;   /* all 1s */
+    for(i = 0; i < dims[0]; i++){
+        dset64[i][0] = val64bits;
+        for(j = 1; j < dims[1]; j++) {
+            dset64[i][j] = dset64[i][j-1] << 1;
+        }
+        val64bits <<= 1;
+    }
+
+    H5Awrite(attr, H5T_NATIVE_INT64, dset64);
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    /* Double Dummy set for failure tests */
+    dims[0] = F66_XDIM; dims[1] = F66_YDIM8;
+    space = H5Screate_simple(2, dims, NULL);
+    attr = H5Acreate2(root, F66_DUMMYDBL, H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    for(i = 0; i < dims[0]; i++)
+        for(j = 0; j < dims[1]; j++)
+            dsetdbl[i][j] = 0.0001 * j + i;
+
+    H5Awrite(attr, H5T_NATIVE_DOUBLE, dsetdbl);
+
+    H5Sclose(space);
+    H5Aclose(attr);
+
+    H5Gclose(root);
+    H5Fclose(fid);
+}
+
+/*-------------------------------------------------------------------------
+ * Function:    gent_charsets
+ *
+ * Purpose:     Generate a file to be used in the character set test
+ *              Contains:
+ *              1) a ascii datatype
+ *              2) a utf8 datatype
+ *
+ *-------------------------------------------------------------------------
+ */
+static void
+gent_charsets(void)
+{
+    hid_t fid, did, sid;
+    herr_t status;
+    hsize_t dim[] = {1}; /* Dataspace dimensions */
+    typedef struct CharSetInfo {
+            const char *ascii_p_;
+            const char *utf8_p_;
+    } CharSetInfo;
+
+    hid_t charset_dtid = H5Tcreate( H5T_COMPOUND, sizeof( CharSetInfo ) );
+    hid_t ascii_dtid = H5Tcreate( H5T_STRING, H5T_VARIABLE );
+    hid_t utf8_dtid = H5Tcreate( H5T_STRING, H5T_VARIABLE );
+    const char * writeData[] = { "ascii", "utf8", };
+
+    sid = H5Screate_simple( 1, dim, NULL );
+    fid = H5Fcreate( FILE68, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT );
+    status = H5Tset_cset( ascii_dtid, H5T_CSET_ASCII );
+    H5Tinsert( charset_dtid, "ascii", HOFFSET(CharSetInfo, ascii_p_ ), ascii_dtid );
+    status = H5Tset_cset( utf8_dtid, H5T_CSET_UTF8 );
+    H5Tinsert( charset_dtid, "utf8", HOFFSET( CharSetInfo, utf8_p_ ), utf8_dtid );
+
+    did = H5Dcreate2( fid, "CharSets", charset_dtid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT );
+    status = H5Dwrite( did, charset_dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, writeData );
+
+    H5Tclose( charset_dtid );
+    H5Tclose( ascii_dtid );
+    H5Tclose( utf8_dtid );
+    H5Sclose( sid );
+    H5Dclose( did );
+    H5Fclose( fid );
+}
+
+static void gent_compound_intsizes(void) {
+    hid_t fid, dataset, space, root;
+    hsize_t dims[2];
+    hsize_t    array_dim8[]={F70_XDIM,F70_YDIM8}; /* Array dimensions         */
+    hsize_t    array_dim16[]={F70_XDIM,F70_YDIM16}; /* Array dimensions         */
+    hsize_t    array_dim32[]={F70_XDIM,F70_YDIM32}; /* Array dimensions         */
+    hsize_t    array_dim64[]={F70_XDIM,F70_YDIM64}; /* Array dimensions         */
+    hid_t      arrayu8_tid;                 /* Array datatype handle    */
+    hid_t      arrayu16_tid;                /* Array datatype handle    */
+    hid_t      arrayu32_tid;                /* Array datatype handle    */
+    hid_t      arrayu64_tid;                /* Array datatype handle    */
+    hid_t      array8_tid;                 /* Array datatype handle    */
+    hid_t      array16_tid;                /* Array datatype handle    */
+    hid_t      array32_tid;                /* Array datatype handle    */
+    hid_t      array64_tid;                /* Array datatype handle    */
+    hid_t      arraydbl_tid;                /* Array datatype handle    */
+    uint8_t  valu8bits;
+    uint16_t valu16bits;
+    uint32_t valu32bits;
+    uint64_t valu64bits;
+    int8_t  val8bits;
+    int16_t val16bits;
+    int32_t val32bits;
+    int64_t val64bits;
+    /* Structure and array for compound types                             */
+    typedef struct Array1Struct {
+            uint8_t  dsetu8[F70_XDIM][F70_YDIM8];
+            uint16_t dsetu16[F70_XDIM][F70_YDIM16];
+            uint32_t dsetu32[F70_XDIM][F70_YDIM32];
+            uint64_t dsetu64[F70_XDIM][F70_YDIM64];
+            int8_t  dset8[F70_XDIM][F70_YDIM8];
+            int16_t dset16[F70_XDIM][F70_YDIM16];
+            int32_t dset32[F70_XDIM][F70_YDIM32];
+            int64_t dset64[F70_XDIM][F70_YDIM64];
+            double  dsetdbl[F70_XDIM][F70_YDIM8];
+    } Array1Struct;
+    Array1Struct Array1[F70_LENGTH];
+
+    hid_t Array1Structid; /* File datatype identifier */
+    herr_t status; /* Error checking variable */
+    hsize_t dim[] = { F70_LENGTH }; /* Dataspace dimensions     */
+
+    int m, n, o; /* Array init loop vars     */
+
+    /* Initialize the data in the arrays/datastructure                */
+    for (m = 0; m < F70_LENGTH; m++) {
+
+        /* Array of 8 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM8;
+
+        valu8bits = (uint8_t) ~0u;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu8[n][0] = valu8bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu8[n][o] = Array1[m].dsetu8[n][o-1] << 1;
+            }
+            valu8bits <<= 1;
+        }
+
+        /* Array of 16 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM16;
+
+        valu16bits = (uint16_t) ~0u;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu16[n][0] = valu16bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu16[n][o] = Array1[m].dsetu16[n][o-1] << 1;
+            }
+            valu16bits <<= 1;
+        }
+
+        /* Array of 32 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM32;
+
+        valu32bits = (uint32_t) ~0u;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu32[n][0] = valu32bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu32[n][o] = Array1[m].dsetu32[n][o-1] << 1;
+            }
+            valu32bits <<= 1;
+        }
+
+        /* Array of 64 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM64;
+
+        valu64bits = (uint64_t) ~0Lu;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu64[n][0] = valu64bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu64[n][o] = Array1[m].dsetu64[n][o-1] << 1;
+            }
+            valu64bits <<= 1;
+        }
+
+        /* Array of 8 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM8;
+
+        val8bits = (int8_t) ~0;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset8[n][0] = val8bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset8[n][o] = Array1[m].dset8[n][o-1] << 1;
+            }
+            val8bits <<= 1;
+        }
+
+        /* Array of 16 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM16;
+
+        val16bits = (int16_t) ~0;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset16[n][0] = val16bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset16[n][o] = Array1[m].dset16[n][o-1] << 1;
+            }
+            val16bits <<= 1;
+        }
+
+        /* Array of 32 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM32;
+
+        val32bits = (int32_t) ~0;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset32[n][0] = val32bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset32[n][o] = Array1[m].dset32[n][o-1] << 1;
+            }
+            val32bits <<= 1;
+        }
+
+        /* Array of 64 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM64;
+
+        val64bits = (int64_t) ~0L;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset64[n][0] = val64bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset64[n][o] = Array1[m].dset64[n][o-1] << 1;
+            }
+            val64bits <<= 1;
+        }
+
+        /* Double Dummy set for failure tests */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM8;
+
+        for(n = 0; n < dims[0]; n++)
+            for(o = 0; o < dims[1]; o++)
+                Array1[m].dsetdbl[n][o] = 0.0001 * o + n;
+    }
+
+    /* Create the array data type for the 8 bits signed int array             */
+    array8_tid = H5Tarray_create2(H5T_NATIVE_SCHAR, F70_ARRAY_RANK, array_dim8);
+    HDassert(array8_tid >= 0);
+
+    /* Create the array data type for the 16 bits signed int array             */
+    array16_tid = H5Tarray_create2(H5T_NATIVE_SHORT, F70_ARRAY_RANK, array_dim16);
+    HDassert(array16_tid >= 0);
+
+    /* Create the array data type for the 32 bits signed int array             */
+    array32_tid = H5Tarray_create2(H5T_NATIVE_INT, F70_ARRAY_RANK, array_dim32);
+    HDassert(array32_tid >= 0);
+
+    /* Create the array data type for the 64 bits signed int array             */
+    array64_tid = H5Tarray_create2(H5T_NATIVE_LONG, F70_ARRAY_RANK, array_dim64);
+    HDassert(array64_tid >= 0);
+
+    /* Create the array data type for the 8 bits signed int array             */
+    arrayu8_tid = H5Tarray_create2(H5T_NATIVE_UCHAR, F70_ARRAY_RANK, array_dim8);
+    HDassert(arrayu8_tid >= 0);
+
+    /* Create the array data type for the 16 bits signed int array             */
+    arrayu16_tid = H5Tarray_create2(H5T_NATIVE_USHORT, F70_ARRAY_RANK, array_dim16);
+    HDassert(arrayu16_tid >= 0);
+
+    /* Create the array data type for the 32 bits signed int array             */
+    arrayu32_tid = H5Tarray_create2(H5T_NATIVE_UINT, F70_ARRAY_RANK, array_dim32);
+    HDassert(arrayu32_tid >= 0);
+
+    /* Create the array data type for the 64 bits signed int array             */
+    arrayu64_tid = H5Tarray_create2(H5T_NATIVE_ULONG, F70_ARRAY_RANK, array_dim64);
+    HDassert(arrayu64_tid >= 0);
+
+    /* Create the array data type for the 32 bits double array             */
+    arraydbl_tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F70_ARRAY_RANK, array_dim8);
+    HDassert(arraydbl_tid >= 0);
+
+    /* Create the dataspace                                           */
+    space = H5Screate_simple(F70_RANK, dim, NULL);
+    HDassert(space >= 0);
+
+    /* Create the file                                                */
+    fid = H5Fcreate(FILE70, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(fid >= 0);
+
+    /* Create the memory data type                                    */
+    Array1Structid = H5Tcreate(H5T_COMPOUND, sizeof(Array1Struct));
+    HDassert(Array1Structid >= 0);
+
+    /* Insert the arrays and variables into the structure             */
+    status = H5Tinsert(Array1Structid, F70_DATASETU08, HOFFSET(Array1Struct, dsetu8), arrayu8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETU16, HOFFSET(Array1Struct, dsetu16), arrayu16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETU32, HOFFSET(Array1Struct, dsetu32), arrayu32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETU64, HOFFSET(Array1Struct, dsetu64), arrayu64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS08, HOFFSET(Array1Struct, dset8), array8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS16, HOFFSET(Array1Struct, dset16), array16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS32, HOFFSET(Array1Struct, dset32), array32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS64, HOFFSET(Array1Struct, dset64), array64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DUMMYDBL, HOFFSET(Array1Struct, dsetdbl), arraydbl_tid);
+    HDassert(status >= 0);
+
+    /* Create the dataset                                             */
+    dataset = H5Dcreate2(fid, F70_DATASETNAME, Array1Structid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    /* Write data to the dataset                                      */
+    status = H5Dwrite(dataset, Array1Structid, H5S_ALL, H5S_ALL, H5P_DEFAULT, Array1);
+    HDassert(status >= 0);
+
+    /* Release resources                                              */
+    status = H5Tclose(Array1Structid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arraydbl_tid);
+    HDassert(status >= 0);
+
+    status = H5Sclose(space);
+    HDassert(status >= 0);
+
+    status = H5Dclose(dataset);
+    HDassert(status >= 0);
+
+    status = H5Fclose(fid);
+    HDassert(status >= 0);
+}
+
+static void gent_compound_attr_intsizes(void) {
+    hid_t fid, attr, space, root;
+    hsize_t dims[2];
+    hsize_t    array_dim8[]={F70_XDIM,F70_YDIM8}; /* Array dimensions         */
+    hsize_t    array_dim16[]={F70_XDIM,F70_YDIM16}; /* Array dimensions         */
+    hsize_t    array_dim32[]={F70_XDIM,F70_YDIM32}; /* Array dimensions         */
+    hsize_t    array_dim64[]={F70_XDIM,F70_YDIM64}; /* Array dimensions         */
+    hid_t      arrayu8_tid;                 /* Array datatype handle    */
+    hid_t      arrayu16_tid;                /* Array datatype handle    */
+    hid_t      arrayu32_tid;                /* Array datatype handle    */
+    hid_t      arrayu64_tid;                /* Array datatype handle    */
+    hid_t      array8_tid;                 /* Array datatype handle    */
+    hid_t      array16_tid;                /* Array datatype handle    */
+    hid_t      array32_tid;                /* Array datatype handle    */
+    hid_t      array64_tid;                /* Array datatype handle    */
+    hid_t      arraydbl_tid;                /* Array datatype handle    */
+    uint8_t  valu8bits;
+    uint16_t valu16bits;
+    uint32_t valu32bits;
+    uint64_t valu64bits;
+    int8_t  val8bits;
+    int16_t val16bits;
+    int32_t val32bits;
+    int64_t val64bits;
+    /* Structure and array for compound types                             */
+    typedef struct Array1Struct {
+            uint8_t  dsetu8[F70_XDIM][F70_YDIM8];
+            uint16_t dsetu16[F70_XDIM][F70_YDIM16];
+            uint32_t dsetu32[F70_XDIM][F70_YDIM32];
+            uint64_t dsetu64[F70_XDIM][F70_YDIM64];
+            int8_t  dset8[F70_XDIM][F70_YDIM8];
+            int16_t dset16[F70_XDIM][F70_YDIM16];
+            int32_t dset32[F70_XDIM][F70_YDIM32];
+            int64_t dset64[F70_XDIM][F70_YDIM64];
+            double  dsetdbl[F70_XDIM][F70_YDIM8];
+    } Array1Struct;
+    Array1Struct Array1[F70_LENGTH];
+
+    hid_t Array1Structid; /* File datatype identifier */
+    herr_t status; /* Error checking variable */
+    hsize_t dim[] = { F70_LENGTH }; /* Dataspace dimensions     */
+
+    int m, n, o; /* Array init loop vars     */
+
+    /* Initialize the data in the arrays/datastructure                */
+    for (m = 0; m < F70_LENGTH; m++) {
+
+        /* Array of 8 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM8;
+
+        valu8bits = (uint8_t) ~0u;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu8[n][0] = valu8bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu8[n][o] = Array1[m].dsetu8[n][o-1] << 1;
+            }
+            valu8bits <<= 1;
+        }
+
+        /* Array of 16 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM16;
+
+        valu16bits = (uint16_t) ~0u;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu16[n][0] = valu16bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu16[n][o] = Array1[m].dsetu16[n][o-1] << 1;
+            }
+            valu16bits <<= 1;
+        }
+
+        /* Array of 32 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM32;
+
+        valu32bits = (uint32_t) ~0u;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu32[n][0] = valu32bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu32[n][o] = Array1[m].dsetu32[n][o-1] << 1;
+            }
+            valu32bits <<= 1;
+        }
+
+        /* Array of 64 bits unsigned int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM64;
+
+        valu64bits = (uint64_t) ~0Lu;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dsetu64[n][0] = valu64bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dsetu64[n][o] = Array1[m].dsetu64[n][o-1] << 1;
+            }
+            valu64bits <<= 1;
+        }
+
+        /* Array of 8 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM8;
+
+        val8bits = (int8_t) ~0;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset8[n][0] = val8bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset8[n][o] = Array1[m].dset8[n][o-1] << 1;
+            }
+            val8bits <<= 1;
+        }
+
+        /* Array of 16 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM16;
+
+        val16bits = (int16_t) ~0;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset16[n][0] = val16bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset16[n][o] = Array1[m].dset16[n][o-1] << 1;
+            }
+            val16bits <<= 1;
+        }
+
+        /* Array of 32 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM32;
+
+        val32bits = (int32_t) ~0;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset32[n][0] = val32bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset32[n][o] = Array1[m].dset32[n][o-1] << 1;
+            }
+            val32bits <<= 1;
+        }
+
+        /* Array of 64 bits signed int */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM64;
+
+        val64bits = (int64_t) ~0L;  /* all 1s */
+        for(n = 0; n < dims[0]; n++){
+            Array1[m].dset64[n][0] = val64bits;
+            for(o = 1; o < dims[1]; o++) {
+                Array1[m].dset64[n][o] = Array1[m].dset64[n][o-1] << 1;
+            }
+            val64bits <<= 1;
+        }
+
+        /* Double Dummy set for failure tests */
+        dims[0] = F70_XDIM; dims[1] = F70_YDIM8;
+
+        for(n = 0; n < dims[0]; n++)
+            for(o = 0; o < dims[1]; o++)
+                Array1[m].dsetdbl[n][o] = 0.0001 * o + n;
+    }
+
+    /* Create the array data type for the 8 bits signed int array             */
+    array8_tid = H5Tarray_create2(H5T_NATIVE_SCHAR, F70_ARRAY_RANK, array_dim8);
+    HDassert(array8_tid >= 0);
+
+    /* Create the array data type for the 16 bits signed int array             */
+    array16_tid = H5Tarray_create2(H5T_NATIVE_SHORT, F70_ARRAY_RANK, array_dim16);
+    HDassert(array16_tid >= 0);
+
+    /* Create the array data type for the 32 bits signed int array             */
+    array32_tid = H5Tarray_create2(H5T_NATIVE_INT, F70_ARRAY_RANK, array_dim32);
+    HDassert(array32_tid >= 0);
+
+    /* Create the array data type for the 64 bits signed int array             */
+    array64_tid = H5Tarray_create2(H5T_NATIVE_LONG, F70_ARRAY_RANK, array_dim64);
+    HDassert(array64_tid >= 0);
+
+    /* Create the array data type for the 8 bits signed int array             */
+    arrayu8_tid = H5Tarray_create2(H5T_NATIVE_UCHAR, F70_ARRAY_RANK, array_dim8);
+    HDassert(arrayu8_tid >= 0);
+
+    /* Create the array data type for the 16 bits signed int array             */
+    arrayu16_tid = H5Tarray_create2(H5T_NATIVE_USHORT, F70_ARRAY_RANK, array_dim16);
+    HDassert(arrayu16_tid >= 0);
+
+    /* Create the array data type for the 32 bits signed int array             */
+    arrayu32_tid = H5Tarray_create2(H5T_NATIVE_UINT, F70_ARRAY_RANK, array_dim32);
+    HDassert(arrayu32_tid >= 0);
+
+    /* Create the array data type for the 64 bits signed int array             */
+    arrayu64_tid = H5Tarray_create2(H5T_NATIVE_ULONG, F70_ARRAY_RANK, array_dim64);
+    HDassert(arrayu64_tid >= 0);
+
+    /* Create the array data type for the 32 bits double array             */
+    arraydbl_tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F70_ARRAY_RANK, array_dim8);
+    HDassert(arraydbl_tid >= 0);
+
+    /* Create the dataspace                                           */
+    space = H5Screate_simple(F70_RANK, dim, NULL);
+    HDassert(space >= 0);
+
+    /* Create the file                                                */
+    fid = H5Fcreate(FILE71, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    HDassert(fid >= 0);
+
+    /* Create the memory data type                                    */
+    Array1Structid = H5Tcreate(H5T_COMPOUND, sizeof(Array1Struct));
+    HDassert(Array1Structid >= 0);
+
+    /* Insert the arrays and variables into the structure             */
+    status = H5Tinsert(Array1Structid, F70_DATASETU08, HOFFSET(Array1Struct, dsetu8), arrayu8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETU16, HOFFSET(Array1Struct, dsetu16), arrayu16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETU32, HOFFSET(Array1Struct, dsetu32), arrayu32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETU64, HOFFSET(Array1Struct, dsetu64), arrayu64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS08, HOFFSET(Array1Struct, dset8), array8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS16, HOFFSET(Array1Struct, dset16), array16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS32, HOFFSET(Array1Struct, dset32), array32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DATASETS64, HOFFSET(Array1Struct, dset64), array64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tinsert(Array1Structid, F70_DUMMYDBL, HOFFSET(Array1Struct, dsetdbl), arraydbl_tid);
+    HDassert(status >= 0);
+
+    root = H5Gopen2(fid, "/", H5P_DEFAULT);
+
+    /* Create the Attribute  */
+    attr = H5Acreate2(root, F71_DATASETNAME, Array1Structid, space, H5P_DEFAULT, H5P_DEFAULT);
+
+    /* Write data to the attribute                                      */
+    status = H5Awrite(attr, Array1Structid, Array1);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arrayu64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array8_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array16_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array32_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(array64_tid);
+    HDassert(status >= 0);
+
+    status = H5Tclose(arraydbl_tid);
+    HDassert(status >= 0);
+
+    /* Release resources                                              */
+    status = H5Tclose(Array1Structid);
+    HDassert(status >= 0);
+
+    status = H5Sclose(space);
+    HDassert(status >= 0);
+
+    status = H5Aclose(attr);
+    HDassert(status >= 0);
+
+    status = H5Fclose(fid);
+    HDassert(status >= 0);
+}
+
+static void gent_nested_compound_dt(void) {       /* test nested data type */
+    hid_t fid, group, dataset, space, type, create_plist, type1, type2;
+    hid_t array_dt, enum_dt;
+    enumtype val;
+
+    typedef struct {
+            int a;
+            float b;
+    } dset1_t;
+    dset1_t dset1[10];
+
+    typedef struct {
+            int a;
+            float b;
+            enumtype c;
+    } dset2_t;
+    dset2_t dset2[10];
+
+    typedef struct {
+            int a[5];
+            float b[5][6];
+            dset1_t c;
+    } dset3_t;
+    dset3_t dset3[10];
+
+    enumtype dset4[] = {RED, GREEN, BLUE, GREEN, WHITE, BLUE};
+    dset1_t dset5[10];
+
+    int i, j, k;
+    unsigned ndims;
+    hsize_t dim[2];
+
+    hsize_t sdim, maxdim;
+
+    sdim = 10;
+    for(i = 0; i < (int)sdim; i++) {
+        dset1[i].a = i;
+        dset1[i].b = (float)(i*i);
+
+        dset2[i].a = i;
+        dset2[i].b = (float)(i+i*0.1);
+        dset2[i].c = GREEN;
+
+        for(j = 0; j < 5; j++) {
+            dset3[i].a[j] = i*j;
+            for(k = 0; k < 6; k++) {
+                dset3[i].b[j][k] = (float)(i*j*k*1.0);
+            }
+        }
+        dset3[i].c.a = i;
+        dset3[i].c.b = (float)(i*1.0);
+    }
+
+    fid = H5Fcreate(FILE72, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+    create_plist = H5Pcreate(H5P_DATASET_CREATE);
+
+    sdim = 2;
+    H5Pset_chunk(create_plist, 1, &sdim);
+
+
+    sdim = 6;
+    maxdim = H5S_UNLIMITED;
+
+    space = H5Screate_simple(1, &sdim, &maxdim);
+
+    type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0]));
+    H5Tinsert(type, "a_name", HOFFSET(dset1_t, a), H5T_STD_I32LE);
+    H5Tinsert(type, "b_name", HOFFSET(dset1_t, b), H5T_IEEE_F32LE);
+
+    dataset = H5Dcreate2(fid, "/dset1", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
+
+    H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1);
+
+    H5Tclose(type);
+    H5Dclose(dataset);
+
+    /* Create the shared enumerated datatype. */
+    enum_dt = H5Tenum_create (H5T_NATIVE_INT);
+    val = (enumtype) RED;
+    H5Tenum_insert (enum_dt, "Red", &val);
+    val = (enumtype) GREEN;
+    H5Tenum_insert (enum_dt, "Green", &val);
+    val = (enumtype) BLUE;
+    H5Tenum_insert (enum_dt, "Blue", &val);
+    val = (enumtype) WHITE;
+    H5Tenum_insert (enum_dt, "White", &val);
+    val = (enumtype) BLACK;
+    H5Tenum_insert (enum_dt, "Black", &val);
+    H5Tcommit2(fid, "enumtype", enum_dt,  H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset2[0]));
+
+    H5Tinsert(type2, "a_name", HOFFSET(dset2_t, a), H5T_NATIVE_INT);
+    H5Tinsert(type2, "b_name", HOFFSET(dset2_t, b), H5T_NATIVE_FLOAT);
+    H5Tinsert(type2, "c_name", HOFFSET(dset2_t, c), enum_dt);
+
+    dataset = H5Dcreate2(fid, "/dset2", type2, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
+
+    H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2);
+
+    H5Tclose(type2);
+
+    dataset = H5Dcreate2(fid, "/dset4", enum_dt, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
+    H5Dwrite(dataset, enum_dt, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4);
+
+    H5Tclose(enum_dt);
+    H5Dclose(dataset);
+
+    /* shared data type 1 */
+    type1 = H5Tcreate(H5T_COMPOUND, sizeof(dset1_t));
+    H5Tinsert(type1, "int_name", HOFFSET(dset1_t, a), H5T_STD_I32LE);
+    H5Tinsert(type1, "float_name", HOFFSET(dset1_t, b), H5T_IEEE_F32LE);
+    H5Tcommit2(fid, "type1", type1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    group = H5Gcreate2(fid, "/group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+    type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t));
+
+    ndims = 1; dim[0] = 5;
+    array_dt = H5Tarray_create2(H5T_STD_I32LE, ndims, dim);
+    H5Tinsert(type2, "int_name", HOFFSET(dset3_t, a), array_dt);
+    H5Tclose(array_dt);
+
+    ndims = 2; dim[0] = 5; dim[1] = 6;
+    array_dt = H5Tarray_create2(H5T_IEEE_F32LE, ndims, dim);
+    H5Tinsert(type2, "float_name", HOFFSET(dset3_t, b), array_dt);
+    H5Tclose(array_dt);
+
+    H5Tinsert (type2, "cmpd_name", HOFFSET (dset3_t, c), type1);
+
+    dataset = H5Dcreate2(group, "dset3", type2, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
+
+    H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset3);
+
+    dataset = H5Dcreate2(fid, "/dset5", type1, space, H5P_DEFAULT, create_plist, H5P_DEFAULT);
+    H5Dwrite(dataset, type1, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1);
+
+    H5Tclose(type1);
+    H5Tclose(type2);
+    H5Sclose(space);
+    H5Dclose(dataset);
+    H5Gclose(group);
+
+    H5Pclose(create_plist);
+
+    H5Fclose(fid);
+
+}
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ *-------------------------------------------------------------------------
+ */
+
+int main(void)
+{
+    gent_group();
+    gent_attribute();
+    gent_softlink();
+    gent_softlink2();
+    gent_dataset();
+    gent_hardlink();
+    gent_extlink();
+    gent_udlink();
+    gent_compound_dt();
+    gent_all();
+    gent_loop();
+    gent_dataset2();
+    gent_compound_dt2();
+    gent_loop2();
+    gent_many();
+    gent_str();
+    gent_str2();
+    gent_enum();
+    gent_objref();
+    gent_datareg();
+    gent_attrreg();
+    gent_nestcomp();
+    gent_opaque();
+    gent_bitfields();
+    gent_vldatatypes();
+    gent_vldatatypes2();
+    gent_vldatatypes3();
+    gent_vldatatypes4();
+    gent_vldatatypes5();
+    gent_array1_big();
+    gent_array1();
+    gent_array2();
+    gent_array3();
+    gent_array4();
+    gent_array5();
+    gent_array6();
+    gent_array7();
+    gent_array8();
+    gent_empty();
+    gent_group_comments();
+    gent_split_file();
+    gent_family();
+    gent_multi();
+    gent_large_objname();
+    gent_vlstr();
+    gent_char();
+    gent_attr_all();
+    gent_compound_complex();
+    gent_named_dtype_attr();
+    gent_null_space();
+    gent_zero_dim_size();
+
     gent_filters();
     gent_fvalues();
     gent_fcontents();
@@ -7170,6 +8133,12 @@ int main(void)
     gent_fpformat();
     gent_extlinks();
     gent_packedbits();
+    gent_attr_intsize();
+    gent_charsets();
+    gent_compound_intsizes();
+    gent_compound_attr_intsizes();
+
+    gent_nested_compound_dt();
 
     return 0;
 }
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 006cf66..1dbda52 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -15,13 +15,7 @@
 #
 # Tests for the h5dump tool
 
-# Determine which filters are available
-USE_FILTER_SZIP="@USE_FILTER_SZIP@"
-USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
-USE_FILTER_SHUFFLE="@USE_FILTER_SHUFFLE@"
-USE_FILTER_FLETCHER32="@USE_FILTER_FLETCHER32@"
-USE_FILTER_NBIT="@USE_FILTER_NBIT@"
-USE_FILTER_SCALEOFFSET="@USE_FILTER_SCALEOFFSET@"
+srcdir=@srcdir@
 
 TESTNAME=h5dump
 EXIT_SUCCESS=0
@@ -40,14 +34,13 @@ H5IMPORT_BIN=`pwd`/$H5IMPORT      # The path of the h5import  tool binary
 CMP='cmp -s'
 DIFF='diff -c'
 CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
 
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
 # source dirs
 SRC_TOOLS="$srcdir/../"
 
@@ -55,6 +48,7 @@ SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
 # testfiles source dirs for tools
 SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
 SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_ERRORFILES="$srcdir/errfiles"
 SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
 SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
 SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
@@ -75,6 +69,7 @@ test -d $TESTDIR || mkdir $TESTDIR
 #       Comment '#' without space can be used.
 # --------------------------------------------------------------------
 LIST_HDF5_TEST_FILES="
+$SRC_H5DUMP_TESTFILES/charsets.h5
 $SRC_H5DUMP_TESTFILES/filter_fail.h5
 $SRC_H5DUMP_TESTFILES/packedbits.h5
 $SRC_H5DUMP_TESTFILES/taindices.h5
@@ -91,10 +86,13 @@ $SRC_H5DUMP_TESTFILES/tarray8.h5
 $SRC_H5DUMP_TESTFILES/tattr.h5
 $SRC_H5DUMP_TESTFILES/tattr2.h5
 $SRC_H5DUMP_TESTFILES/tattr4_be.h5
+$SRC_H5DUMP_TESTFILES/tattrintsize.h5
 $SRC_H5DUMP_TESTFILES/tattrreg.h5
 $SRC_H5DUMP_TESTFILES/tbigdims.h5
 $SRC_H5DUMP_TESTFILES/tbinary.h5
 $SRC_H5DUMP_TESTFILES/tchar.h5
+$SRC_H5DUMP_TESTFILES/tcmpdattrintsize.h5
+$SRC_H5DUMP_TESTFILES/tcmpdintsize.h5
 $SRC_H5DUMP_TESTFILES/tcompound.h5
 $SRC_H5DUMP_TESTFILES/tcompound_complex.h5
 $SRC_H5DUMP_TESTFILES/tdatareg.h5
@@ -137,6 +135,7 @@ $SRC_H5DUMP_TESTFILES/tmulti-r.h5
 $SRC_H5DUMP_TESTFILES/tmulti-s.h5
 $SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5
 $SRC_H5DUMP_TESTFILES/tnestedcomp.h5
+$SRC_H5DUMP_TESTFILES/tnestedcmpddt.h5
 $SRC_H5DUMP_TESTFILES/tno-subset.h5
 $SRC_H5DUMP_TESTFILES/tnullspace.h5
 $SRC_H5DUMP_TESTFILES/zerodim.h5
@@ -157,9 +156,11 @@ $SRC_H5DUMP_TESTFILES/tvldtypes4.h5
 $SRC_H5DUMP_TESTFILES/tvldtypes5.h5
 $SRC_H5DUMP_TESTFILES/tvlstr.h5
 $SRC_H5DUMP_TESTFILES/tvms.h5
+$SRC_H5DUMP_TESTFILES/twidedisplay.ddl
 "
 
 LIST_OTHER_TEST_FILES="
+$SRC_H5DUMP_TESTFILES/charsets.ddl
 $SRC_H5DUMP_TESTFILES/filter_fail.ddl
 $SRC_H5DUMP_TESTFILES/packedbits.ddl
 $SRC_H5DUMP_TESTFILES/tall-1.ddl
@@ -184,6 +185,9 @@ $SRC_H5DUMP_TESTFILES/tattr-1.ddl
 $SRC_H5DUMP_TESTFILES/tattr-2.ddl
 $SRC_H5DUMP_TESTFILES/tattr-3.ddl
 $SRC_H5DUMP_TESTFILES/tattr-4_be.ddl
+$SRC_H5DUMP_TESTFILES/tattrcontents1.ddl
+$SRC_H5DUMP_TESTFILES/tattrcontents2.ddl
+$SRC_H5DUMP_TESTFILES/tattrintsize.ddl
 $SRC_H5DUMP_TESTFILES/tattrreg.ddl
 $SRC_H5DUMP_TESTFILES/tattrregR.ddl
 $SRC_H5DUMP_TESTFILES/tbin1.ddl
@@ -197,6 +201,8 @@ $SRC_H5DUMP_TESTFILES/tboot1.ddl
 $SRC_H5DUMP_TESTFILES/tboot2.ddl
 $SRC_H5DUMP_TESTFILES/tchar1.ddl
 $SRC_H5DUMP_TESTFILES/tchunked.ddl
+$SRC_H5DUMP_TESTFILES/tcmpdattrintsize.ddl
+$SRC_H5DUMP_TESTFILES/tcmpdintsize.ddl
 $SRC_H5DUMP_TESTFILES/tcomp-1.ddl
 $SRC_H5DUMP_TESTFILES/tcomp-2.ddl
 $SRC_H5DUMP_TESTFILES/tcomp-3.ddl
@@ -248,6 +254,7 @@ $SRC_H5DUMP_TESTFILES/tqmarkfile.ddl
 $SRC_H5DUMP_TESTFILES/tstarfile.ddl
 $SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.ddl
 $SRC_H5DUMP_TESTFILES/tnestcomp-1.ddl
+$SRC_H5DUMP_TESTFILES/tnestedcmpddt.ddl
 $SRC_H5DUMP_TESTFILES/tnbit.ddl
 $SRC_H5DUMP_TESTFILES/tno-subset.ddl
 $SRC_H5DUMP_TESTFILES/tnullspace.ddl
@@ -261,6 +268,10 @@ $SRC_H5DUMP_TESTFILES/torderattr1.ddl
 $SRC_H5DUMP_TESTFILES/torderattr2.ddl
 $SRC_H5DUMP_TESTFILES/torderattr3.ddl
 $SRC_H5DUMP_TESTFILES/torderattr4.ddl
+$SRC_H5DUMP_TESTFILES/tordercontents1.ddl
+$SRC_H5DUMP_TESTFILES/tordercontents2.ddl
+$SRC_H5DUMP_TESTFILES/torderlinks1.ddl
+$SRC_H5DUMP_TESTFILES/torderlinks2.ddl
 $SRC_H5DUMP_TESTFILES/tperror.ddl
 $SRC_H5DUMP_TESTFILES/treference.ddl
 $SRC_H5DUMP_TESTFILES/tsaf.ddl
@@ -288,156 +299,39 @@ $SRC_H5DUMP_TESTFILES/tvlstr.ddl
 $SRC_H5DUMP_TESTFILES/tvms.ddl
 $SRC_H5DUMP_TESTFILES/h5dump-help.txt
 $SRC_H5DUMP_TESTFILES/out3.h5import
-$SRC_H5DUMP_TESTFILES/tnofilename-with-packed-bits.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsArray.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsCompound.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsIncomplete.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsLengthExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsCharLengthExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsIntLengthExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsLongLengthExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsLengthPositive.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsMax.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsMaxExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsOffsetExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsCharOffsetExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsIntOffsetExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsLongOffsetExceeded.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsOffsetNegative.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsOverlapped.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSigned.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsigned.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedInt.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedInt.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLong.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLong.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLong.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLong.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedIntWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedIntWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLongWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLongWhole.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLongWhole1.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLongWhole1.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLongWhole63.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLongWhole63.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSigned4.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsigned4.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedInt8.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedInt8.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLong16.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLong16.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLong32.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLong32.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSigned2.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsigned2.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedInt4.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedInt4.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLong8.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLong8.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLong16.ddl
-$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLong16.ddl
 $SRC_H5DUMP_TESTFILES/tbinregR.exp
 "
 
-LIST_HDF5_TEST_FILES_XML="
-$SRC_H5DUMP_TESTFILES/tbitfields.h5
-$SRC_H5DUMP_TESTFILES/tcompound2.h5
-$SRC_H5DUMP_TESTFILES/tdset2.h5
-$SRC_H5DUMP_TESTFILES/tenum.h5
-$SRC_H5DUMP_TESTFILES/textlink.h5
-$SRC_H5DUMP_TESTFILES/tloop2.h5
-$SRC_H5DUMP_TESTFILES/tmany.h5
-$SRC_H5DUMP_TESTFILES/tname-amp.h5
-$SRC_H5DUMP_TESTFILES/tname-apos.h5
-$SRC_H5DUMP_TESTFILES/tname-gt.h5
-$SRC_H5DUMP_TESTFILES/tname-lt.h5
-$SRC_H5DUMP_TESTFILES/tname-quot.h5
-$SRC_H5DUMP_TESTFILES/tname-sp.h5
-$SRC_H5DUMP_TESTFILES/tnodata.h5
-$SRC_H5DUMP_TESTFILES/tobjref.h5
-$SRC_H5DUMP_TESTFILES/topaque.h5
-$SRC_H5DUMP_TESTFILES/tref.h5
-$SRC_H5DUMP_TESTFILES/tref-escapes.h5
-$SRC_H5DUMP_TESTFILES/tref-escapes-at.h5
-$SRC_H5DUMP_TESTFILES/tstring.h5
-$SRC_H5DUMP_TESTFILES/tstring-at.h5
-"
-
-LIST_OTHER_TEST_FILES_XML="
-$SRC_H5DUMP_TESTFILES/tall.h5.xml
-$SRC_H5DUMP_TESTFILES/tall-2A.h5.xml
-$SRC_H5DUMP_TESTFILES/tarray1.h5.xml
-$SRC_H5DUMP_TESTFILES/tarray2.h5.xml
-$SRC_H5DUMP_TESTFILES/tarray3.h5.xml
-$SRC_H5DUMP_TESTFILES/tarray6.h5.xml
-$SRC_H5DUMP_TESTFILES/tarray7.h5.xml
-$SRC_H5DUMP_TESTFILES/tattr.h5.xml
-$SRC_H5DUMP_TESTFILES/tbitfields.h5.xml
-$SRC_H5DUMP_TESTFILES/tcompound_complex.h5.xml
-$SRC_H5DUMP_TESTFILES/tcompound.h5.xml
-$SRC_H5DUMP_TESTFILES/tcompound2.h5.xml
-$SRC_H5DUMP_TESTFILES/tdatareg.h5.xml
-$SRC_H5DUMP_TESTFILES/tdset.h5.xml
-$SRC_H5DUMP_TESTFILES/tdset2.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-dtd.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-dtd-2.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-dtd-uri.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-nons.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-nons-2.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-nons-uri.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-ns.h5.xml
-$SRC_H5DUMP_TESTFILES/tempty-ns-2.h5.xml
-$SRC_H5DUMP_TESTFILES/tenum.h5.xml
-$SRC_H5DUMP_TESTFILES/textlink.h5.xml
-$SRC_H5DUMP_TESTFILES/tfpformat.h5.xml
-$SRC_H5DUMP_TESTFILES/tgroup.h5.xml
-$SRC_H5DUMP_TESTFILES/thlink.h5.xml
-$SRC_H5DUMP_TESTFILES/tloop.h5.xml
-$SRC_H5DUMP_TESTFILES/tloop2.h5.xml
-$SRC_H5DUMP_TESTFILES/tmany.h5.xml
-$SRC_H5DUMP_TESTFILES/tname-amp.h5.xml
-$SRC_H5DUMP_TESTFILES/tname-apos.h5.xml
-$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5.xml
-$SRC_H5DUMP_TESTFILES/tname-gt.h5.xml
-$SRC_H5DUMP_TESTFILES/tname-lt.h5.xml
-$SRC_H5DUMP_TESTFILES/tname-quot.h5.xml
-$SRC_H5DUMP_TESTFILES/tname-sp.h5.xml
-$SRC_H5DUMP_TESTFILES/tnestedcomp.h5.xml
-$SRC_H5DUMP_TESTFILES/tnodata.h5.xml
-$SRC_H5DUMP_TESTFILES/tobjref.h5.xml
-$SRC_H5DUMP_TESTFILES/topaque.h5.xml
-$SRC_H5DUMP_TESTFILES/torderattr1.h5.xml
-$SRC_H5DUMP_TESTFILES/torderattr2.h5.xml
-$SRC_H5DUMP_TESTFILES/torderattr3.h5.xml
-$SRC_H5DUMP_TESTFILES/torderattr4.h5.xml
-$SRC_H5DUMP_TESTFILES/tref.h5.xml
-$SRC_H5DUMP_TESTFILES/tref-escapes.h5.xml
-$SRC_H5DUMP_TESTFILES/tref-escapes-at.h5.xml
-$SRC_H5DUMP_TESTFILES/tsaf.h5.xml
-$SRC_H5DUMP_TESTFILES/tslink.h5.xml
-$SRC_H5DUMP_TESTFILES/tstr.h5.xml
-$SRC_H5DUMP_TESTFILES/tstr2.h5.xml
-$SRC_H5DUMP_TESTFILES/tstring.h5.xml
-$SRC_H5DUMP_TESTFILES/tstring-at.h5.xml
-$SRC_H5DUMP_TESTFILES/tudlink.h5.xml
-$SRC_H5DUMP_TESTFILES/tvldtypes1.h5.xml
-$SRC_H5DUMP_TESTFILES/tvldtypes2.h5.xml
-$SRC_H5DUMP_TESTFILES/tvldtypes3.h5.xml
-$SRC_H5DUMP_TESTFILES/tvldtypes4.h5.xml
-$SRC_H5DUMP_TESTFILES/tvldtypes5.h5.xml
-$SRC_H5DUMP_TESTFILES/tvlstr.h5.xml
+LIST_ERROR_TEST_FILES="
+${SRC_H5DUMP_ERRORFILES}/filter_fail.err
+${SRC_H5DUMP_ERRORFILES}/tall-1.err
+${SRC_H5DUMP_ERRORFILES}/tall-2A.err
+${SRC_H5DUMP_ERRORFILES}/tall-2B.err
+${SRC_H5DUMP_ERRORFILES}/tarray1_big.err
+${SRC_H5DUMP_ERRORFILES}/tattr-3.err
+${SRC_H5DUMP_ERRORFILES}/tattrregR.err
+${SRC_H5DUMP_ERRORFILES}/tcomp-3.err
+${SRC_H5DUMP_ERRORFILES}/tdataregR.err
+${SRC_H5DUMP_ERRORFILES}/tdset-2.err
+${SRC_H5DUMP_ERRORFILES}/texceedsubblock.err
+${SRC_H5DUMP_ERRORFILES}/texceedsubcount.err
+${SRC_H5DUMP_ERRORFILES}/texceedsubstart.err
+${SRC_H5DUMP_ERRORFILES}/texceedsubstride.err
+${SRC_H5DUMP_ERRORFILES}/textlink.err
+${SRC_H5DUMP_ERRORFILES}/textlinkfar.err
+${SRC_H5DUMP_ERRORFILES}/textlinksrc.err
+${SRC_H5DUMP_ERRORFILES}/tgroup-2.err
+${SRC_H5DUMP_ERRORFILES}/torderlinks1.err
+${SRC_H5DUMP_ERRORFILES}/torderlinks2.err
+${SRC_H5DUMP_ERRORFILES}/tperror.err
+${SRC_H5DUMP_ERRORFILES}/tqmarkfile.err
+${SRC_H5DUMP_ERRORFILES}/tslink-D.err
 "
 
 #
 # copy test files and expected output files from source dirs to test dir
 #
-COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML"
+COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_ERROR_TEST_FILES"
 
 COPY_TESTFILES_TO_TESTDIR()
 {
@@ -448,18 +342,25 @@ COPY_TESTFILES_TO_TESTDIR()
         echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
         RET=$?
         if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile"
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
             fi
         fi
     done
 }
 
-
 # Print a line-line message left justified in a field of 70 characters
 # beginning with the word "Testing".
 #
@@ -628,6 +529,69 @@ TOOLTEST3() {
 
 }
 
+# same as TOOLTEST3 but filters error stack output and compares to an error file
+# Extract file name, line number, version and thread IDs because they may be different
+TOOLTEST4() {
+
+    expect="$TESTDIR/$1"
+    expect_err="$TESTDIR/`basename $1 .ddl`.err"
+    actual="$TESTDIR/`basename $1 .ddl`.out"
+    actual_err="$TESTDIR/`basename $1 .ddl`.oerr"
+    actual_ext="$TESTDIR/`basename $1 .ddl`.ext"
+    actual_sav=${actual}-sav
+    actual_err_sav=${actual_err}-sav
+    shift
+
+    # Run test.
+    TESTING $DUMPER $@
+    (
+      cd $TESTDIR
+      $RUNSERIAL $DUMPER_BIN "$@"
+    ) >$actual 2>$actual_err
+
+    # save actual and actual_err in case they are needed later.
+    cp $actual $actual_sav
+    STDOUT_FILTER $actual
+    cp $actual_err $actual_err_sav
+    STDERR_FILTER $actual_err
+
+    # Extract file name, line number, version and thread IDs because they may be different
+    sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
+        -e 's/line [0-9]*/line (number)/' \
+        -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \
+        -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
+        -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \
+        -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \
+     $actual_err > $actual_ext
+    #cat $actual_ext >> $actual
+
+    if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+     echo " CREATED"
+     cp $actual $expect
+    elif $CMP $expect $actual; then
+     if $CMP $expect_err $actual_ext; then
+      echo " PASSED"
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.err) differs from actual result (*.oerr)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/    /'
+    fi
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.ddl) differs from actual result (*.out)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+   rm -f $actual $actual_err $actual_sav $actual_err_sav
+    fi
+
+}
+
 # Print a "SKIP" message
 SKIP() {
    TESTING $DUMPER $@
@@ -705,24 +669,33 @@ COPY_TESTFILES_TO_TESTDIR
 
 #TOOLTEST h5dump-help.txt -h
 
+# test for maximum display datasets
+TOOLTEST twidedisplay.ddl --enable-error-stack -w0 packedbits.h5
+
 # test for signed/unsigned datasets
 TOOLTEST packedbits.ddl --enable-error-stack packedbits.h5
+# test for compound signed/unsigned datasets
+TOOLTEST tcmpdintsize.ddl --enable-error-stack tcmpdintsize.h5
+# test for signed/unsigned attributes
+TOOLTEST tattrintsize.ddl --enable-error-stack tattrintsize.h5
+# test for compound signed/unsigned attributes
+TOOLTEST tcmpdattrintsize.ddl --enable-error-stack tcmpdattrintsize.h5
 # test for displaying groups
 TOOLTEST tgroup-1.ddl --enable-error-stack tgroup.h5
 # test for displaying the selected groups
-TOOLTEST tgroup-2.ddl --group=/g2 --group / -g /y tgroup.h5
+TOOLTEST4 tgroup-2.ddl --enable-error-stack --group=/g2 --group / -g /y tgroup.h5
 
 # test for displaying simple space datasets
 TOOLTEST tdset-1.ddl --enable-error-stack tdset.h5
 # test for displaying selected datasets
-TOOLTEST3 tdset-2.ddl --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5
+TOOLTEST4 tdset-2.ddl --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5
 
 # test for displaying attributes
 TOOLTEST tattr-1.ddl --enable-error-stack tattr.h5
 # test for displaying the selected attributes of string type and scalar space
-TOOLTEST tattr-2.ddl --enable-error-stack -a /attr1 --attribute /attr4 --attribute=/attr5 tattr.h5
+TOOLTEST tattr-2.ddl --enable-error-stack -a "/\/attr1" --attribute /attr4 --attribute=/attr5 tattr.h5
 # test for header and error messages
-TOOLTEST3 tattr-3.ddl --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5
+TOOLTEST4 tattr-3.ddl --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5
 # test for displaying at least 9 attributes on root from a BE machine
 TOOLTEST tattr-4_be.ddl --enable-error-stack tattr4_be.h5
 # test for displaying attributes in shared datatype (also in group and dataset)
@@ -735,7 +708,7 @@ TOOLTEST tudlink-1.ddl --enable-error-stack tudlink.h5
 TOOLTEST tslink-2.ddl --enable-error-stack -l slink2 tslink.h5
 TOOLTEST tudlink-2.ddl --enable-error-stack -l udlink2 tudlink.h5
 # test for displaying dangling soft links
-TOOLTEST3 tslink-D.ddl --enable-error-stack -d /slink1 tslink.h5
+TOOLTEST4 tslink-D.ddl --enable-error-stack -d /slink1 tslink.h5
 
 # tests for hard links
 TOOLTEST thlink-1.ddl --enable-error-stack thlink.h5
@@ -749,17 +722,16 @@ TOOLTEST tcomp-1.ddl --enable-error-stack tcompound.h5
 # test for named data types
 TOOLTEST tcomp-2.ddl --enable-error-stack -t /type1 --datatype /type2 --datatype=/group1/type3 tcompound.h5
 # test for unamed type 
-# JIRA HDFFV-7936 TOOLTEST tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5
-TOOLTEST tcomp-3.ddl -t /#6632 -g /group2 tcompound.h5
+TOOLTEST4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5
 # test complicated compound datatype
 TOOLTEST tcomp-4.ddl --enable-error-stack tcompound_complex.h5
 
 #test for the nested compound type
 TOOLTEST tnestcomp-1.ddl --enable-error-stack tnestedcomp.h5
+TOOLTEST tnestedcmpddt.ddl --enable-error-stack tnestedcmpddt.h5
 
 # test for options
-# JIRA HDFFV-7936 TOOLTEST tall-1.ddl --enable-error-stack tall.h5
-TOOLTEST tall-1.ddl tall.h5
+TOOLTEST4 tall-1.ddl --enable-error-stack tall.h5
 TOOLTEST tall-2.ddl --enable-error-stack --header -g /g1/g1.1 -a attr2 tall.h5
 TOOLTEST tall-3.ddl --enable-error-stack -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5
 
@@ -786,8 +758,7 @@ TOOLTEST tvlstr.ddl --enable-error-stack tvlstr.h5
 # test for files with array data
 TOOLTEST tarray1.ddl --enable-error-stack tarray1.h5
 # # added for bug# 2092 - tarray1_big.h
-# JIRA HDFFV-7936 TOOLTEST tarray1_big.ddl --enable-error-stack -R tarray1_big.h5
-TOOLTEST tarray1_big.ddl -R tarray1_big.h5
+TOOLTEST4 tarray1_big.ddl --enable-error-stack -R tarray1_big.h5
 TOOLTEST tarray2.ddl --enable-error-stack tarray2.h5
 TOOLTEST tarray3.ddl --enable-error-stack tarray3.h5
 TOOLTEST tarray4.ddl --enable-error-stack tarray4.h5
@@ -798,7 +769,7 @@ TOOLTEST tarray8.ddl --enable-error-stack tarray8.h5
 
 # test for wildcards in filename (does not work with cmake)
 # inconsistent across platforms TOOLTEST3 tstarfile.ddl --enable-error-stack -H -d Dataset1 tarr*.h5
-TOOLTEST3 tqmarkfile.ddl --enable-error-stack -H -d Dataset1 tarray?.h5
+TOOLTEST4 tqmarkfile.ddl --enable-error-stack -H -d Dataset1 tarray?.h5
 TOOLTEST tmultifile.ddl --enable-error-stack -H -d Dataset1 tarray2.h5 tarray3.h5 tarray4.h5 tarray5.h5 tarray6.h5 tarray7.h5
 
 # test for files with empty data
@@ -816,22 +787,23 @@ TOOLTEST tmulti.ddl --enable-error-stack --filedriver=multi tmulti
 TOOLTEST tlarge_objname.ddl --enable-error-stack -w157 tlarge_objname.h5
 
 # test '-A' to suppress data but print attr's
-# JIRA HDFFV-7936 TOOLTEST tall-2A.ddl --enable-error-stack -A tall.h5
-TOOLTEST tall-2A.ddl -A tall.h5
+TOOLTEST4 tall-2A.ddl --enable-error-stack -A tall.h5
 
 # test '-r' to print attributes in ASCII instead of decimal
-# JIRA HDFFV-7936 TOOLTEST tall-2B.ddl --enable-error-stack -A -r tall.h5
-TOOLTEST tall-2B.ddl -A -r tall.h5
+TOOLTEST4 tall-2B.ddl --enable-error-stack -A -r tall.h5
 
 # test Subsetting
 TOOLTEST tall-4s.ddl --enable-error-stack --dataset=/g1/g1.1/dset1.1.1 --start=1,1 --stride=2,3 --count=3,2 --block=1,1 tall.h5
 TOOLTEST tall-5s.ddl --enable-error-stack -d "/g1/g1.1/dset1.1.2[0;2;10;]" tall.h5
 TOOLTEST tdset-3s.ddl --enable-error-stack -d "/dset1[1,1;;;]" tdset.h5
-TOOLTEST tno-subset.ddl --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0" tno-subset.h5
+TOOLTEST tno-subset.ddl --enable-error-stack --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0" tno-subset.h5
 
 # test printing characters in ASCII instead of decimal
 TOOLTEST tchar1.ddl --enable-error-stack -r tchar.h5
 
+# test datatypes in ASCII and UTF8
+TOOLTEST charsets.ddl --enable-error-stack charsets.h5
+
 # rev. 2004
 
 # tests for super block
@@ -839,10 +811,14 @@ TOOLTEST tboot1.ddl --enable-error-stack -H -B -d dset tfcontents1.h5
 TOOLTEST tboot2.ddl --enable-error-stack -B tfcontents2.h5
 
 # test -p with a non existing dataset
-TOOLTEST3 tperror.ddl --enable-error-stack -p -d bogus tfcontents1.h5
+TOOLTEST4 tperror.ddl --enable-error-stack -p -d bogus tfcontents1.h5
 
 # test for file contents
 TOOLTEST tcontents.ddl --enable-error-stack -n tfcontents1.h5
+TOOLTEST tordercontents1.ddl --enable-error-stack -n --sort_by=name --sort_order=ascending tfcontents1.h5
+TOOLTEST tordercontents2.ddl --enable-error-stack -n --sort_by=name --sort_order=descending tfcontents1.h5
+TOOLTEST tattrcontents1.ddl --enable-error-stack -n 1 --sort_order=ascending tall.h5
+TOOLTEST tattrcontents2.ddl --enable-error-stack -n 1 --sort_order=descending tall.h5
 
 # tests for storage layout
 # compact
@@ -892,54 +868,19 @@ TOOLTEST texceedsubblock.ddl --enable-error-stack -d 1d -k 1,3 taindices.h5
 
 # tests for filters
 # SZIP
-option="--enable-error-stack -H -p -d szip tfilters.h5"
-if test $USE_FILTER_SZIP != "yes"; then
- SKIP $option
-else
-TOOLTEST tszip.ddl $option
-fi
+TOOLTEST tszip.ddl --enable-error-stack -H -p -d szip tfilters.h5
 # deflate
-option="--enable-error-stack -H -p -d deflate tfilters.h5"
-if test $USE_FILTER_DEFLATE != "yes"; then
- SKIP $option
-else
- TOOLTEST tdeflate.ddl $option
-fi
+TOOLTEST tdeflate.ddl --enable-error-stack -H -p -d deflate tfilters.h5
 # shuffle
-option="--enable-error-stack -H -p -d shuffle tfilters.h5"
-if test $USE_FILTER_SHUFFLE != "yes"; then
- SKIP $option
-else
- TOOLTEST tshuffle.ddl $option
-fi
+TOOLTEST tshuffle.ddl --enable-error-stack -H -p -d shuffle tfilters.h5
 # fletcher32
-option="--enable-error-stack -H -p -d fletcher32  tfilters.h5"
-if test $USE_FILTER_FLETCHER32 != "yes"; then
- SKIP $option
-else
- TOOLTEST tfletcher32.ddl $option
-fi
+TOOLTEST tfletcher32.ddl --enable-error-stack -H -p -d fletcher32  tfilters.h5
 # nbit
-option="--enable-error-stack -H -p -d nbit  tfilters.h5"
-if test $USE_FILTER_NBIT != "yes"; then
- SKIP $option
-else
- TOOLTEST tnbit.ddl $option
-fi
+TOOLTEST tnbit.ddl --enable-error-stack -H -p -d nbit  tfilters.h5
 # scaleoffset
-option="--enable-error-stack -H -p -d scaleoffset  tfilters.h5"
-if test $USE_FILTER_SCALEOFFSET != "yes"; then
- SKIP $option
-else
- TOOLTEST tscaleoffset.ddl $option
-fi
+TOOLTEST tscaleoffset.ddl --enable-error-stack -H -p -d scaleoffset  tfilters.h5
 # all
-option="--enable-error-stack -H -p -d all  tfilters.h5"
-if test $USE_FILTER_FLETCHER32 != "yes" -o  $USE_FILTER_SZIP != "yes" -o  $USE_FILTER_DEFLATE != "yes" -o  $USE_FILTER_SHUFFLE != "yes" -o $USE_FILTER_NBIT != "yes" -o  $USE_FILTER_SCALEOFFSET != "yes"; then
- SKIP $option
-else
- TOOLTEST tallfilters.ddl $option
-fi
+TOOLTEST tallfilters.ddl --enable-error-stack -H -p -d all  tfilters.h5
 # user defined
 TOOLTEST tuserfilter.ddl --enable-error-stack -H  -p -d myfilter  tfilters.h5
 
@@ -974,6 +915,9 @@ TOOLTEST   tbin1.ddl --enable-error-stack -d integer -o out1.bin -b LE    tbinar
 TOOLTEST   tbin1.ddl --enable-error-stack -d integer -o out1.bin  -b      tbinary.h5
 IMPORTTEST out1.bin -c out3.h5import -o out1.h5
 DIFFTEST   tbinary.h5 out1.h5 /integer /integer
+# Same but use h5dump as input to h5import
+IMPORTTEST out1.bin -c tbin1.ddl -o out1D.h5
+DIFFTEST   tbinary.h5 out1D.h5 /integer /integer
 
 TOOLTEST   tbin2.ddl --enable-error-stack -b BE -d float  -o out2.bin      tbinary.h5
 
@@ -981,6 +925,9 @@ TOOLTEST   tbin2.ddl --enable-error-stack -b BE -d float  -o out2.bin      tbina
 TOOLTEST   tbin3.ddl --enable-error-stack -d integer -o out3.bin -b NATIVE tbinary.h5
 IMPORTTEST out3.bin -c out3.h5import -o out3.h5
 DIFFTEST   tbinary.h5 out3.h5 /integer /integer
+# Same but use h5dump as input to h5import
+IMPORTTEST out3.bin -c tbin3.ddl -o out3D.h5
+DIFFTEST   tbinary.h5 out3D.h5 /integer /integer
 
 TOOLTEST   tbin4.ddl --enable-error-stack -d double  -b FILE -o out4.bin    tbinary.h5
    
@@ -993,11 +940,9 @@ fi
 
 # test for dataset region references 
 TOOLTEST tdatareg.ddl --enable-error-stack tdatareg.h5
-# JIRA HDFFV-7936 TOOLTEST tdataregR.ddl --enable-error-stack -R tdatareg.h5
-TOOLTEST tdataregR.ddl -R tdatareg.h5
+TOOLTEST4 tdataregR.ddl --enable-error-stack -R tdatareg.h5
 TOOLTEST tattrreg.ddl --enable-error-stack tattrreg.h5
-# JIRA HDFFV-7936 TOOLTEST tattrregR.ddl --enable-error-stack -R tattrreg.h5
-TOOLTEST tattrregR.ddl -R tattrreg.h5
+TOOLTEST4 tattrregR.ddl --enable-error-stack -R tattrreg.h5
 
 TOOLTEST2   tbinregR.exp --enable-error-stack -d /Dataset1 -s 0 -R -y -o tbinregR.txt    tdatareg.h5
 
@@ -1020,106 +965,26 @@ TOOLTEST torderattr2.ddl --enable-error-stack -H --sort_by=name --sort_order=des
 TOOLTEST torderattr3.ddl --enable-error-stack -H --sort_by=creation_order --sort_order=ascending torderattr.h5
 TOOLTEST torderattr4.ddl --enable-error-stack -H --sort_by=creation_order --sort_order=descending torderattr.h5
 
+# tests for link references and order
+TOOLTEST4 torderlinks1.ddl --enable-error-stack --sort_by=name --sort_order=ascending tfcontents1.h5
+TOOLTEST4 torderlinks2.ddl --enable-error-stack --sort_by=name --sort_order=descending tfcontents1.h5
+
 # tests for floating point user defined printf format
 TOOLTEST tfpformat.ddl --enable-error-stack -m %.7f tfpformat.h5
 
 # tests for traversal of external links
-# JIRA HDFFV-7936 TOOLTEST textlinksrc.ddl --enable-error-stack textlinksrc.h5
-TOOLTEST textlinksrc.ddl textlinksrc.h5
-# JIRA HDFFV-7936 TOOLTEST textlinkfar.ddl --enable-error-stack textlinkfar.h5
-TOOLTEST textlinkfar.ddl textlinkfar.h5
+TOOLTEST4 textlinksrc.ddl --enable-error-stack textlinksrc.h5
+TOOLTEST4 textlinkfar.ddl --enable-error-stack textlinkfar.h5
 
 # test for dangling external links
-# JIRA HDFFV-7936 TOOLTEST textlink.ddl --enable-error-stack textlink.h5
-TOOLTEST3 textlink.ddl --enable-error-stack textlink.h5
+TOOLTEST4 textlink.ddl --enable-error-stack textlink.h5
 
 # test for error stack display (BZ2048)
-TOOLTEST3 filter_fail.ddl --enable-error-stack filter_fail.h5
+TOOLTEST4 filter_fail.ddl --enable-error-stack filter_fail.h5
 
 # test for -o -y for dataset with attributes
 TOOLTEST tall-6.ddl --enable-error-stack -y -o data -d /g1/g1.1/dset1.1.1 tall.h5
 
-####### test for dataset packed bits ######
-
-# test failure handling
-# Missing file name
-TOOLTEST tnofilename-with-packed-bits.ddl --enable-error-stack
-# Limits:
-# Maximum number of packed bits is 8 (for now).
-# Maximum integer size is 64 (for now).
-# Maximun Offset is 63 (Maximum size - 1).
-# Maximum Offset+Length is 64 (Maximum size).
-# Tests:
-# Normal operation on both signed and unsigned int datasets.
-# Sanity check
-# Their rawdata output should be the same.
-TOOLTEST tpbitsSignedWhole.ddl --enable-error-stack -d /DS08BITS -M 0,8 packedbits.h5
-TOOLTEST tpbitsUnsignedWhole.ddl --enable-error-stack -d /DU08BITS -M 0,8 packedbits.h5
-TOOLTEST tpbitsSignedIntWhole.ddl --enable-error-stack -d /DS16BITS -M 0,16 packedbits.h5
-TOOLTEST tpbitsUnsignedIntWhole.ddl --enable-error-stack -d /DU16BITS -M 0,16 packedbits.h5
-TOOLTEST tpbitsSignedLongWhole.ddl --enable-error-stack -d /DS32BITS -M 0,32 packedbits.h5
-TOOLTEST tpbitsUnsignedLongWhole.ddl --enable-error-stack -d /DU32BITS -M 0,32 packedbits.h5
-TOOLTEST tpbitsSignedLongLongWhole.ddl --enable-error-stack -d /DS64BITS -M 0,64 packedbits.h5
-TOOLTEST tpbitsUnsignedLongLongWhole.ddl --enable-error-stack -d /DU64BITS -M 0,64 packedbits.h5
-TOOLTEST tpbitsSignedLongLongWhole63.ddl --enable-error-stack -d /DS64BITS -M 0,63 packedbits.h5
-TOOLTEST tpbitsUnsignedLongLongWhole63.ddl --enable-error-stack -d /DU64BITS -M 0,63 packedbits.h5
-TOOLTEST tpbitsSignedLongLongWhole1.ddl --enable-error-stack -d /DS64BITS -M 1,63 packedbits.h5
-TOOLTEST tpbitsUnsignedLongLongWhole1.ddl --enable-error-stack -d /DU64BITS -M 1,63 packedbits.h5
-# Half sections
-TOOLTEST tpbitsSigned4.ddl --enable-error-stack -d /DS08BITS -M 0,4,4,4 packedbits.h5
-TOOLTEST tpbitsUnsigned4.ddl --enable-error-stack -d /DU08BITS -M 0,4,4,4 packedbits.h5
-TOOLTEST tpbitsSignedInt8.ddl --enable-error-stack -d /DS16BITS -M 0,8,8,8 packedbits.h5
-TOOLTEST tpbitsUnsignedInt8.ddl --enable-error-stack -d /DU16BITS -M 0,8,8,8 packedbits.h5
-TOOLTEST tpbitsSignedLong16.ddl --enable-error-stack -d /DS32BITS -M 0,16,16,16 packedbits.h5
-TOOLTEST tpbitsUnsignedLong16.ddl --enable-error-stack -d /DU32BITS -M 0,16,16,16 packedbits.h5
-TOOLTEST tpbitsSignedLongLong32.ddl --enable-error-stack -d /DS64BITS -M 0,32,32,32 packedbits.h5
-TOOLTEST tpbitsUnsignedLongLong32.ddl --enable-error-stack -d /DU64BITS -M 0,32,32,32 packedbits.h5
-# Quarter sections
-TOOLTEST tpbitsSigned2.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5
-TOOLTEST tpbitsUnsigned2.ddl --enable-error-stack -d /DU08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5
-TOOLTEST tpbitsSignedInt4.ddl --enable-error-stack -d /DS16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5
-TOOLTEST tpbitsUnsignedInt4.ddl --enable-error-stack -d /DU16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5
-TOOLTEST tpbitsSignedLong8.ddl --enable-error-stack -d /DS32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5
-TOOLTEST tpbitsUnsignedLong8.ddl --enable-error-stack -d /DU32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5
-TOOLTEST tpbitsSignedLongLong16.ddl --enable-error-stack -d /DS64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5
-TOOLTEST tpbitsUnsignedLongLong16.ddl --enable-error-stack -d /DU64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5
-# Begin and End
-TOOLTEST tpbitsSigned.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,6 packedbits.h5
-TOOLTEST tpbitsUnsigned.ddl --enable-error-stack -d /DU08BITS -M 0,2,2,6 packedbits.h5
-TOOLTEST tpbitsSignedInt.ddl --enable-error-stack -d /DS16BITS -M 0,2,10,6 packedbits.h5
-TOOLTEST tpbitsUnsignedInt.ddl --enable-error-stack -d /DU16BITS -M 0,2,10,6 packedbits.h5
-TOOLTEST tpbitsSignedLong.ddl --enable-error-stack -d /DS32BITS -M 0,2,26,6 packedbits.h5
-TOOLTEST tpbitsUnsignedLong.ddl --enable-error-stack -d /DU32BITS -M 0,2,26,6 packedbits.h5
-TOOLTEST tpbitsSignedLongLong.ddl --enable-error-stack -d /DS64BITS -M 0,2,58,6 packedbits.h5
-TOOLTEST tpbitsUnsignedLongLong.ddl --enable-error-stack -d /DU64BITS -M 0,2,58,6 packedbits.h5
-# Overlapped packed bits.
-TOOLTEST tpbitsOverlapped.ddl --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,0,3 packedbits.h5
-# Maximum number of packed bits.
-TOOLTEST tpbitsMax.ddl --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5
-# Compound type.
-TOOLTEST tpbitsCompound.ddl --enable-error-stack -d /dset1 -M 0,1,1,1 tcompound.h5
-# Array type.
-TOOLTEST tpbitsArray.ddl --enable-error-stack -d /Dataset1 -M 0,1,1,1 tarray1.h5
-# Test Error handling.
-# Too many packed bits requested. Max is 8 for now.
-TOOLTEST tpbitsMaxExceeded.ddl --enable-error-stack -d /DS08BITS -M 0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5
-# Offset too large. Max is 7 (8-1) for now.
-TOOLTEST tpbitsOffsetExceeded.ddl --enable-error-stack -d /DS08BITS -M 64,1 packedbits.h5
-TOOLTEST tpbitsCharOffsetExceeded.ddl --enable-error-stack -d /DS08BITS -M 8,1 packedbits.h5
-TOOLTEST tpbitsIntOffsetExceeded.ddl --enable-error-stack -d /DS16BITS -M 16,1 packedbits.h5
-TOOLTEST tpbitsLongOffsetExceeded.ddl --enable-error-stack -d /DS32BITS -M 32,1 packedbits.h5
-# Bad offset, must not be negative.
-TOOLTEST tpbitsOffsetNegative.ddl --enable-error-stack -d /DS08BITS -M -1,1 packedbits.h5
-# Bad length, must not be positive.
-TOOLTEST tpbitsLengthPositive.ddl --enable-error-stack -d /DS08BITS -M 4,0 packedbits.h5
-# Offset+Length is too large. Max is 8 for now.
-TOOLTEST tpbitsLengthExceeded.ddl --enable-error-stack -d /DS08BITS -M 37,28 packedbits.h5
-TOOLTEST tpbitsCharLengthExceeded.ddl --enable-error-stack -d /DS08BITS -M 2,7 packedbits.h5
-TOOLTEST tpbitsIntLengthExceeded.ddl --enable-error-stack -d /DS16BITS -M 10,7 packedbits.h5
-TOOLTEST tpbitsLongLengthExceeded.ddl --enable-error-stack -d /DS32BITS -M 26,7 packedbits.h5
-# Incomplete pair of packed bits request.
-TOOLTEST tpbitsIncomplete.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,1,0,2,2, packedbits.h5
-
 
 # Report test results and exit
 if test $nerrors -eq 0 ; then
diff --git a/tools/h5dump/testh5dumppbits.sh.in b/tools/h5dump/testh5dumppbits.sh.in
new file mode 100644
index 0000000..a390766
--- /dev/null
+++ b/tools/h5dump/testh5dumppbits.sh.in
@@ -0,0 +1,585 @@
+#! /bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5.  The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html.  COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page.  It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+# access to either file, you may request a copy from help at hdfgroup.org.
+#
+# Tests for the h5dump tool with packed bits type files
+
+srcdir=@srcdir@
+
+# Determine which filters are available
+USE_FILTER_SZIP="@USE_FILTER_SZIP@"
+USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
+USE_FILTER_SHUFFLE="@USE_FILTER_SHUFFLE@"
+USE_FILTER_FLETCHER32="@USE_FILTER_FLETCHER32@"
+USE_FILTER_NBIT="@USE_FILTER_NBIT@"
+USE_FILTER_SCALEOFFSET="@USE_FILTER_SCALEOFFSET@"
+
+TESTNAME=h5dump
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+DUMPER=h5dump                     # The tool name
+DUMPER_BIN=`pwd`/$DUMPER          # The path of the tool binary
+
+H5DIFF=../h5diff/h5diff           # The h5diff tool name 
+H5DIFF_BIN=`pwd`/$H5DIFF          # The path of the h5diff  tool binary
+
+H5IMPORT=../h5import/h5import     # The h5import tool name 
+H5IMPORT_BIN=`pwd`/$H5IMPORT      # The path of the h5import  tool binary
+
+
+CMP='cmp -s'
+DIFF='diff -c'
+CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
+
+nerrors=0
+verbose=yes
+
+# source dirs
+SRC_TOOLS="$srcdir/../"
+
+SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+# testfiles source dirs for tools
+SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_ERRORFILES="$srcdir/errfiles"
+SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
+SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
+SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
+SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
+SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
+SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
+
+TESTDIR=./testfiles
+test -d $TESTDIR || mkdir $TESTDIR
+
+######################################################################
+# test files
+# --------------------------------------------------------------------
+# All the test files copy from source directory to test directory
+# NOTE: Keep this framework to add/remove test files.
+#       Any test files from other tools can be used in this framework.
+#       This list are also used for checking exist.
+#       Comment '#' without space can be used.
+# --------------------------------------------------------------------
+LIST_HDF5_TEST_FILES="
+$SRC_H5DUMP_TESTFILES/packedbits.h5
+$SRC_H5DUMP_TESTFILES/tarray1.h5
+$SRC_H5DUMP_TESTFILES/tcompound.h5
+"
+
+LIST_OTHER_TEST_FILES="
+$SRC_H5DUMP_TESTFILES/tnofilename-with-packed-bits.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsArray.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsCompound.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsIncomplete.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsLengthExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsCharLengthExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsIntLengthExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsLongLengthExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsLengthPositive.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsMax.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsMaxExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsOffsetExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsCharOffsetExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsIntOffsetExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsLongOffsetExceeded.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsOffsetNegative.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsOverlapped.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSigned.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsigned.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedInt.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedInt.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLong.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLong.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLong.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLong.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedIntWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedIntWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLongWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLongWhole.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLongWhole1.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLongWhole1.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLongWhole63.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLongWhole63.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSigned4.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsigned4.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedInt8.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedInt8.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLong16.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLong16.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLong32.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLong32.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSigned2.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsigned2.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedInt4.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedInt4.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLong8.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLong8.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsSignedLongLong16.ddl
+$SRC_H5DUMP_TESTFILES/tpbitsUnsignedLongLong16.ddl
+"
+
+LIST_ERROR_TEST_FILES="
+${SRC_H5DUMP_ERRORFILES}/tnofilename-with-packed-bits.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsCharLengthExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsCharOffsetExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsIncomplete.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsIntLengthExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsIntOffsetExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsLengthExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsLengthPositive.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsLongLengthExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsLongOffsetExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsMaxExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsOffsetExceeded.err
+${SRC_H5DUMP_ERRORFILES}/tpbitsOffsetNegative.err
+"
+
+#
+# copy test files and expected output files from source dirs to test dir
+#
+COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_ERROR_TEST_FILES"
+
+COPY_TESTFILES_TO_TESTDIR()
+{
+    # copy test files. Used -f to make sure get a new copy
+    for tstfile in $COPY_TESTFILES
+    do
+        # ignore '#' comment
+        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
+        RET=$?
+        if [ $RET -eq 1 ]; then
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
+            fi
+        fi
+    done
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+#
+TESTING() {
+   SPACES="                                                               "
+   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Source in the output filter function definitions.
+. $srcdir/../../bin/output_filter.sh
+
+# Run a test and print PASS or *FAIL*.  If a test fails then increment
+# the `nerrors' global variable and (if $verbose is set) display the
+# difference between the actual output and the expected output. The
+# expected output is given as the first argument to this function and
+# the actual output file is calculated by replacing the `.ddl' with
+# `.out'.  The actual output is not removed if $HDF5_NOCLEANUP has a
+# non-zero value.
+#
+TOOLTEST() {
+    expect="$TESTDIR/$1"
+    actual="$TESTDIR/`basename $1 .ddl`.out"
+    actual_err="$TESTDIR/`basename $1 .ddl`.err"
+    actual_sav=${actual}-sav
+    actual_err_sav=${actual_err}-sav
+    shift
+
+    # Run test.
+    TESTING $DUMPER $@
+    (
+    cd $TESTDIR
+      $RUNSERIAL $DUMPER_BIN "$@"
+    ) >$actual 2>$actual_err
+
+    # save actual and actual_err in case they are needed later.
+    cp $actual $actual_sav
+    STDOUT_FILTER $actual
+    cp $actual_err $actual_err_sav
+    STDERR_FILTER $actual_err
+    cat $actual_err >> $actual
+
+  if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+     echo " CREATED"
+     cp $actual $expect
+    elif $CMP $expect $actual; then
+     echo " PASSED"
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.ddl) differs from actual result (*.out)"
+   nerrors="`expr $nerrors + 1`"
+   test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+   rm -f $actual $actual_err $actual_sav $actual_err_sav $actual_ext
+    fi
+
+}
+
+
+# same as TOOLTEST1 but compares generated file to expected output
+#                   and compares the generated data file to the expected data file
+# used for the binary tests that expect a full path in -o without -b
+TOOLTEST2() {
+
+    expectdata="$TESTDIR/$1"
+    expect="$TESTDIR/`basename $1 .exp`.ddl"
+    actualdata="$TESTDIR/`basename $1 .exp`.txt"
+    actual="$TESTDIR/`basename $1 .exp`.out"
+    actual_err="$TESTDIR/`basename $1 .exp`.err"
+    shift
+
+    # Run test.
+    TESTING $DUMPER $@
+    (
+      cd $TESTDIR
+      $RUNSERIAL $DUMPER_BIN "$@"
+    ) >$actual 2>$actual_err
+    cat $actual_err >> $actual
+
+    if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+     echo " CREATED"
+     cp $actual $expect
+    elif $CMP $expect $actual; then
+      if [ ! -f $expectdata ]; then
+      # Create the expect data file if it doesn't yet exist.
+        echo " CREATED"
+        cp $actualdata $expectdata
+      elif $CMP $expectdata $actualdata; then
+        echo " PASSED"
+      else
+        echo "*FAILED*"
+        echo "    Expected datafile (*.exp) differs from actual datafile (*.txt)"
+        nerrors="`expr $nerrors + 1`"
+        test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/    /'
+      fi
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.ddl) differs from actual result (*.out)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
+    
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+     rm -f $actual $actualdata $actual_err
+    fi
+
+}
+
+# same as TOOLTEST but filters error stack outp
+# Extract file name, line number, version and thread IDs because they may be different
+TOOLTEST3() {
+
+    expect="$TESTDIR/$1"
+    actual="$TESTDIR/`basename $1 .ddl`.out"
+    actual_err="$TESTDIR/`basename $1 .ddl`.err"
+    actual_ext="$TESTDIR/`basename $1 .ddl`.ext"
+    actual_sav=${actual}-sav
+    actual_err_sav=${actual_err}-sav
+    shift
+
+    # Run test.
+    TESTING $DUMPER $@
+    (
+      cd $TESTDIR
+      $RUNSERIAL $DUMPER_BIN "$@"
+    ) >$actual 2>$actual_err
+
+    # save actual and actual_err in case they are needed later.
+    cp $actual $actual_sav
+    STDOUT_FILTER $actual
+    cp $actual_err $actual_err_sav
+    STDERR_FILTER $actual_err
+
+    # Extract file name, line number, version and thread IDs because they may be different
+    sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
+        -e 's/line [0-9]*/line (number)/' \
+        -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \
+        -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
+        -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \
+        -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \
+     $actual_err > $actual_ext
+    cat $actual_ext >> $actual
+
+    if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+     echo " CREATED"
+     cp $actual $expect
+    elif $CMP $expect $actual; then
+     echo " PASSED"
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.ddl) differs from actual result (*.out)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+   rm -f $actual $actual_err $actual_sav $actual_err_sav
+    fi
+
+}
+
+# same as TOOLTEST3 but filters error stack output and compares to an error file
+# Extract file name, line number, version and thread IDs because they may be different
+TOOLTEST4() {
+
+    expect="$TESTDIR/$1"
+    expect_err="$TESTDIR/`basename $1 .ddl`.err"
+    actual="$TESTDIR/`basename $1 .ddl`.out"
+    actual_err="$TESTDIR/`basename $1 .ddl`.oerr"
+    actual_ext="$TESTDIR/`basename $1 .ddl`.ext"
+    actual_sav=${actual}-sav
+    actual_err_sav=${actual_err}-sav
+    shift
+
+    # Run test.
+    TESTING $DUMPER $@
+    (
+      cd $TESTDIR
+      $RUNSERIAL $DUMPER_BIN "$@"
+    ) >$actual 2>$actual_err
+
+    # save actual and actual_err in case they are needed later.
+    cp $actual $actual_sav
+    STDOUT_FILTER $actual
+    cp $actual_err $actual_err_sav
+    STDERR_FILTER $actual_err
+
+    # Extract file name, line number, version and thread IDs because they may be different
+    sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
+        -e 's/line [0-9]*/line (number)/' \
+        -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \
+        -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
+        -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \
+        -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \
+     $actual_err > $actual_ext
+    #cat $actual_ext >> $actual
+
+    if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+     echo " CREATED"
+     cp $actual $expect
+    elif $CMP $expect $actual; then
+     if $CMP $expect_err $actual_ext; then
+      echo " PASSED"
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.err) differs from actual result (*.oerr)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/    /'
+    fi
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.ddl) differs from actual result (*.out)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+   rm -f $actual $actual_err $actual_sav $actual_err_sav
+    fi
+
+}
+
+# Print a "SKIP" message
+SKIP() {
+   TESTING $DUMPER $@
+    echo  " -SKIP-"
+}
+  
+# Print a line-line message left justified in a field of 70 characters
+#
+PRINT_H5DIFF() {
+ SPACES="                                                               "
+ echo " Running h5diff $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+
+# Call the h5diff tool
+#
+DIFFTEST() 
+{
+    PRINT_H5DIFF  $@
+    (
+  cd $TESTDIR
+  $RUNSERIAL $H5DIFF_BIN "$@" -q
+    )
+    RET=$?
+    if [ $RET != 0 ] ; then
+         echo "*FAILED*"
+         nerrors="`expr $nerrors + 1`"
+    else
+         echo " PASSED"
+    fi
+        
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+PRINT_H5IMPORT() {
+ SPACES="                                                               "
+ echo " Running h5import $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Call the h5import tool
+#
+IMPORTTEST() 
+{
+    # remove the output hdf5 file if it exists
+    hdf5_file="$TESTDIR/$5"
+    if [ -f $hdf5_file ]; then
+     rm -f $hdf5_file
+    fi
+
+    PRINT_H5IMPORT  $@
+    (
+  cd $TESTDIR
+  $RUNSERIAL $H5IMPORT_BIN "$@" 
+    )
+    RET=$?
+    if [ $RET != 0 ] ; then
+         echo "*FAILED*"
+         nerrors="`expr $nerrors + 1`"
+    else
+         echo " PASSED"
+    fi
+        
+}
+
+
+##############################################################################
+##############################################################################
+###        T H E   T E S T S                                            ###
+##############################################################################
+##############################################################################
+# prepare for test
+COPY_TESTFILES_TO_TESTDIR
+
+####### test for dataset packed bits ######
+
+# test failure handling
+# Missing file name
+TOOLTEST tnofilename-with-packed-bits.ddl --enable-error-stack
+# Limits:
+# Maximum number of packed bits is 8 (for now).
+# Maximum integer size is 64 (for now).
+# Maximun Offset is 63 (Maximum size - 1).
+# Maximum Offset+Length is 64 (Maximum size).
+# Tests:
+# Normal operation on both signed and unsigned int datasets.
+# Sanity check
+# Their rawdata output should be the same.
+TOOLTEST tpbitsSignedWhole.ddl --enable-error-stack -d /DS08BITS -M 0,8 packedbits.h5
+TOOLTEST tpbitsUnsignedWhole.ddl --enable-error-stack -d /DU08BITS -M 0,8 packedbits.h5
+TOOLTEST tpbitsSignedIntWhole.ddl --enable-error-stack -d /DS16BITS -M 0,16 packedbits.h5
+TOOLTEST tpbitsUnsignedIntWhole.ddl --enable-error-stack -d /DU16BITS -M 0,16 packedbits.h5
+TOOLTEST tpbitsSignedLongWhole.ddl --enable-error-stack -d /DS32BITS -M 0,32 packedbits.h5
+TOOLTEST tpbitsUnsignedLongWhole.ddl --enable-error-stack -d /DU32BITS -M 0,32 packedbits.h5
+TOOLTEST tpbitsSignedLongLongWhole.ddl --enable-error-stack -d /DS64BITS -M 0,64 packedbits.h5
+TOOLTEST tpbitsUnsignedLongLongWhole.ddl --enable-error-stack -d /DU64BITS -M 0,64 packedbits.h5
+TOOLTEST tpbitsSignedLongLongWhole63.ddl --enable-error-stack -d /DS64BITS -M 0,63 packedbits.h5
+TOOLTEST tpbitsUnsignedLongLongWhole63.ddl --enable-error-stack -d /DU64BITS -M 0,63 packedbits.h5
+TOOLTEST tpbitsSignedLongLongWhole1.ddl --enable-error-stack -d /DS64BITS -M 1,63 packedbits.h5
+TOOLTEST tpbitsUnsignedLongLongWhole1.ddl --enable-error-stack -d /DU64BITS -M 1,63 packedbits.h5
+# Half sections
+TOOLTEST tpbitsSigned4.ddl --enable-error-stack -d /DS08BITS -M 0,4,4,4 packedbits.h5
+TOOLTEST tpbitsUnsigned4.ddl --enable-error-stack -d /DU08BITS -M 0,4,4,4 packedbits.h5
+TOOLTEST tpbitsSignedInt8.ddl --enable-error-stack -d /DS16BITS -M 0,8,8,8 packedbits.h5
+TOOLTEST tpbitsUnsignedInt8.ddl --enable-error-stack -d /DU16BITS -M 0,8,8,8 packedbits.h5
+TOOLTEST tpbitsSignedLong16.ddl --enable-error-stack -d /DS32BITS -M 0,16,16,16 packedbits.h5
+TOOLTEST tpbitsUnsignedLong16.ddl --enable-error-stack -d /DU32BITS -M 0,16,16,16 packedbits.h5
+TOOLTEST tpbitsSignedLongLong32.ddl --enable-error-stack -d /DS64BITS -M 0,32,32,32 packedbits.h5
+TOOLTEST tpbitsUnsignedLongLong32.ddl --enable-error-stack -d /DU64BITS -M 0,32,32,32 packedbits.h5
+# Quarter sections
+TOOLTEST tpbitsSigned2.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5
+TOOLTEST tpbitsUnsigned2.ddl --enable-error-stack -d /DU08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5
+TOOLTEST tpbitsSignedInt4.ddl --enable-error-stack -d /DS16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5
+TOOLTEST tpbitsUnsignedInt4.ddl --enable-error-stack -d /DU16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5
+TOOLTEST tpbitsSignedLong8.ddl --enable-error-stack -d /DS32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5
+TOOLTEST tpbitsUnsignedLong8.ddl --enable-error-stack -d /DU32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5
+TOOLTEST tpbitsSignedLongLong16.ddl --enable-error-stack -d /DS64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5
+TOOLTEST tpbitsUnsignedLongLong16.ddl --enable-error-stack -d /DU64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5
+# Begin and End
+TOOLTEST tpbitsSigned.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,6 packedbits.h5
+TOOLTEST tpbitsUnsigned.ddl --enable-error-stack -d /DU08BITS -M 0,2,2,6 packedbits.h5
+TOOLTEST tpbitsSignedInt.ddl --enable-error-stack -d /DS16BITS -M 0,2,10,6 packedbits.h5
+TOOLTEST tpbitsUnsignedInt.ddl --enable-error-stack -d /DU16BITS -M 0,2,10,6 packedbits.h5
+TOOLTEST tpbitsSignedLong.ddl --enable-error-stack -d /DS32BITS -M 0,2,26,6 packedbits.h5
+TOOLTEST tpbitsUnsignedLong.ddl --enable-error-stack -d /DU32BITS -M 0,2,26,6 packedbits.h5
+TOOLTEST tpbitsSignedLongLong.ddl --enable-error-stack -d /DS64BITS -M 0,2,58,6 packedbits.h5
+TOOLTEST tpbitsUnsignedLongLong.ddl --enable-error-stack -d /DU64BITS -M 0,2,58,6 packedbits.h5
+# Overlapped packed bits.
+TOOLTEST tpbitsOverlapped.ddl --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,0,3 packedbits.h5
+# Maximum number of packed bits.
+TOOLTEST tpbitsMax.ddl --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5
+# Compound type.
+TOOLTEST tpbitsCompound.ddl --enable-error-stack -d /dset1 -M 0,1,1,1 tcompound.h5
+# Array type.
+TOOLTEST tpbitsArray.ddl --enable-error-stack -d /Dataset1 -M 0,1,1,1 tarray1.h5
+# Test Error handling.
+# Too many packed bits requested. Max is 8 for now.
+TOOLTEST tpbitsMaxExceeded.ddl --enable-error-stack -d /DS08BITS -M 0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5
+# Offset too large. Max is 7 (8-1) for now.
+TOOLTEST tpbitsOffsetExceeded.ddl --enable-error-stack -d /DS08BITS -M 64,1 packedbits.h5
+TOOLTEST tpbitsCharOffsetExceeded.ddl --enable-error-stack -d /DS08BITS -M 8,1 packedbits.h5
+TOOLTEST tpbitsIntOffsetExceeded.ddl --enable-error-stack -d /DS16BITS -M 16,1 packedbits.h5
+TOOLTEST tpbitsLongOffsetExceeded.ddl --enable-error-stack -d /DS32BITS -M 32,1 packedbits.h5
+# Bad offset, must not be negative.
+TOOLTEST tpbitsOffsetNegative.ddl --enable-error-stack -d /DS08BITS -M -1,1 packedbits.h5
+# Bad length, must not be positive.
+TOOLTEST tpbitsLengthPositive.ddl --enable-error-stack -d /DS08BITS -M 4,0 packedbits.h5
+# Offset+Length is too large. Max is 8 for now.
+TOOLTEST tpbitsLengthExceeded.ddl --enable-error-stack -d /DS08BITS -M 37,28 packedbits.h5
+TOOLTEST tpbitsCharLengthExceeded.ddl --enable-error-stack -d /DS08BITS -M 2,7 packedbits.h5
+TOOLTEST tpbitsIntLengthExceeded.ddl --enable-error-stack -d /DS16BITS -M 10,7 packedbits.h5
+TOOLTEST tpbitsLongLengthExceeded.ddl --enable-error-stack -d /DS32BITS -M 26,7 packedbits.h5
+# Incomplete pair of packed bits request.
+TOOLTEST tpbitsIncomplete.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,1,0,2,2, packedbits.h5
+
+
+# Report test results and exit
+if test $nerrors -eq 0 ; then
+    echo "All $TESTNAME tests passed."
+    exit $EXIT_SUCCESS
+else
+    echo "$TESTNAME tests failed with $nerrors errors."
+    exit $EXIT_FAILURE
+fi
diff --git a/tools/h5dump/testh5dumpxml.sh.in b/tools/h5dump/testh5dumpxml.sh.in
index 1bbf232..374f504 100644
--- a/tools/h5dump/testh5dumpxml.sh.in
+++ b/tools/h5dump/testh5dumpxml.sh.in
@@ -15,6 +15,8 @@
 #
 # Tests for the h5dump tool
 
+srcdir=@srcdir@
+
 TESTNAME=h5dumpxml
 EXIT_SUCCESS=0
 EXIT_FAILURE=1
@@ -26,16 +28,192 @@ DUMPER_BIN=`pwd`/$DUMPER    # The path of the tool binary
 
 CMP='cmp -s'
 DIFF='diff -c'
+CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
 
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
+# source dirs
+SRC_TOOLS="$srcdir/../"
+
+SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+# testfiles source dirs for tools
+SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
+SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
+SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
+SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
+SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
+SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
+
+TESTDIR=./testfiles
+test -d $TESTDIR || mkdir $TESTDIR
+
+######################################################################
+# test files
+# --------------------------------------------------------------------
+# All the test files copy from source directory to test directory
+# NOTE: Keep this framework to add/remove test files.
+#       Any test files from other tools can be used in this framework.
+#       This list are also used for checking exist.
+#       Comment '#' without space can be used.
+# --------------------------------------------------------------------
+LIST_HDF5_TEST_FILES_XML="
+$SRC_H5DUMP_TESTFILES/tall.h5
+$SRC_H5DUMP_TESTFILES/tarray1.h5
+$SRC_H5DUMP_TESTFILES/tarray2.h5
+$SRC_H5DUMP_TESTFILES/tarray3.h5
+$SRC_H5DUMP_TESTFILES/tarray6.h5
+$SRC_H5DUMP_TESTFILES/tarray7.h5
+$SRC_H5DUMP_TESTFILES/tattr.h5
+$SRC_H5DUMP_TESTFILES/tbitfields.h5
+$SRC_H5DUMP_TESTFILES/tcompound.h5
+$SRC_H5DUMP_TESTFILES/tcompound2.h5
+$SRC_H5DUMP_TESTFILES/tcompound_complex.h5
+$SRC_H5DUMP_TESTFILES/tdatareg.h5
+$SRC_H5DUMP_TESTFILES/tdset.h5
+$SRC_H5DUMP_TESTFILES/tdset2.h5
+$SRC_H5DUMP_TESTFILES/tempty.h5
+$SRC_H5DUMP_TESTFILES/tenum.h5
+$SRC_H5DUMP_TESTFILES/textlink.h5
+$SRC_H5DUMP_TESTFILES/tfpformat.h5
+$SRC_H5DUMP_TESTFILES/tgroup.h5
+$SRC_H5DUMP_TESTFILES/thlink.h5
+$SRC_H5DUMP_TESTFILES/tloop.h5
+$SRC_H5DUMP_TESTFILES/tloop2.h5
+$SRC_H5DUMP_TESTFILES/tmany.h5
+$SRC_H5DUMP_TESTFILES/tname-amp.h5
+$SRC_H5DUMP_TESTFILES/tname-apos.h5
+$SRC_H5DUMP_TESTFILES/tname-gt.h5
+$SRC_H5DUMP_TESTFILES/tname-lt.h5
+$SRC_H5DUMP_TESTFILES/tname-quot.h5
+$SRC_H5DUMP_TESTFILES/tname-sp.h5
+$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5
+$SRC_H5DUMP_TESTFILES/tnestedcomp.h5
+$SRC_H5DUMP_TESTFILES/tnodata.h5
+$SRC_H5DUMP_TESTFILES/tobjref.h5
+$SRC_H5DUMP_TESTFILES/topaque.h5
+$SRC_H5DUMP_TESTFILES/torderattr.h5
+$SRC_H5DUMP_TESTFILES/tref.h5
+$SRC_H5DUMP_TESTFILES/tref-escapes.h5
+$SRC_H5DUMP_TESTFILES/tref-escapes-at.h5
+$SRC_H5DUMP_TESTFILES/tsaf.h5
+$SRC_H5DUMP_TESTFILES/tslink.h5
+$SRC_H5DUMP_TESTFILES/tstring.h5
+$SRC_H5DUMP_TESTFILES/tstring-at.h5
+$SRC_H5DUMP_TESTFILES/tstr.h5
+$SRC_H5DUMP_TESTFILES/tstr2.h5
+$SRC_H5DUMP_TESTFILES/tudlink.h5
+$SRC_H5DUMP_TESTFILES/tvldtypes1.h5
+$SRC_H5DUMP_TESTFILES/tvldtypes2.h5
+$SRC_H5DUMP_TESTFILES/tvldtypes3.h5
+$SRC_H5DUMP_TESTFILES/tvldtypes4.h5
+$SRC_H5DUMP_TESTFILES/tvldtypes5.h5
+$SRC_H5DUMP_TESTFILES/tvlstr.h5
+"
 
-test -d ../testfiles || mkdir ../testfiles
+LIST_OTHER_TEST_FILES_XML="
+$SRC_H5DUMP_TESTFILES/tall.h5.xml
+$SRC_H5DUMP_TESTFILES/tall-2A.h5.xml
+$SRC_H5DUMP_TESTFILES/tarray1.h5.xml
+$SRC_H5DUMP_TESTFILES/tarray2.h5.xml
+$SRC_H5DUMP_TESTFILES/tarray3.h5.xml
+$SRC_H5DUMP_TESTFILES/tarray6.h5.xml
+$SRC_H5DUMP_TESTFILES/tarray7.h5.xml
+$SRC_H5DUMP_TESTFILES/tattr.h5.xml
+$SRC_H5DUMP_TESTFILES/tbitfields.h5.xml
+$SRC_H5DUMP_TESTFILES/tcompound_complex.h5.xml
+$SRC_H5DUMP_TESTFILES/tcompound.h5.xml
+$SRC_H5DUMP_TESTFILES/tcompound2.h5.xml
+$SRC_H5DUMP_TESTFILES/tdatareg.h5.xml
+$SRC_H5DUMP_TESTFILES/tdset.h5.xml
+$SRC_H5DUMP_TESTFILES/tdset2.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-dtd.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-dtd-2.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-dtd-uri.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-nons.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-nons-2.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-nons-uri.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-ns.h5.xml
+$SRC_H5DUMP_TESTFILES/tempty-ns-2.h5.xml
+$SRC_H5DUMP_TESTFILES/tenum.h5.xml
+$SRC_H5DUMP_TESTFILES/textlink.h5.xml
+$SRC_H5DUMP_TESTFILES/tfpformat.h5.xml
+$SRC_H5DUMP_TESTFILES/tgroup.h5.xml
+$SRC_H5DUMP_TESTFILES/thlink.h5.xml
+$SRC_H5DUMP_TESTFILES/tloop.h5.xml
+$SRC_H5DUMP_TESTFILES/tloop2.h5.xml
+$SRC_H5DUMP_TESTFILES/tmany.h5.xml
+$SRC_H5DUMP_TESTFILES/tname-amp.h5.xml
+$SRC_H5DUMP_TESTFILES/tname-apos.h5.xml
+$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5.xml
+$SRC_H5DUMP_TESTFILES/tname-gt.h5.xml
+$SRC_H5DUMP_TESTFILES/tname-lt.h5.xml
+$SRC_H5DUMP_TESTFILES/tname-quot.h5.xml
+$SRC_H5DUMP_TESTFILES/tname-sp.h5.xml
+$SRC_H5DUMP_TESTFILES/tnestedcomp.h5.xml
+$SRC_H5DUMP_TESTFILES/tnodata.h5.xml
+$SRC_H5DUMP_TESTFILES/tobjref.h5.xml
+$SRC_H5DUMP_TESTFILES/topaque.h5.xml
+$SRC_H5DUMP_TESTFILES/torderattr1.h5.xml
+$SRC_H5DUMP_TESTFILES/torderattr2.h5.xml
+$SRC_H5DUMP_TESTFILES/torderattr3.h5.xml
+$SRC_H5DUMP_TESTFILES/torderattr4.h5.xml
+$SRC_H5DUMP_TESTFILES/tref.h5.xml
+$SRC_H5DUMP_TESTFILES/tref-escapes.h5.xml
+$SRC_H5DUMP_TESTFILES/tref-escapes-at.h5.xml
+$SRC_H5DUMP_TESTFILES/tsaf.h5.xml
+$SRC_H5DUMP_TESTFILES/tslink.h5.xml
+$SRC_H5DUMP_TESTFILES/tstr.h5.xml
+$SRC_H5DUMP_TESTFILES/tstr2.h5.xml
+$SRC_H5DUMP_TESTFILES/tstring.h5.xml
+$SRC_H5DUMP_TESTFILES/tstring-at.h5.xml
+$SRC_H5DUMP_TESTFILES/tudlink.h5.xml
+$SRC_H5DUMP_TESTFILES/tvldtypes1.h5.xml
+$SRC_H5DUMP_TESTFILES/tvldtypes2.h5.xml
+$SRC_H5DUMP_TESTFILES/tvldtypes3.h5.xml
+$SRC_H5DUMP_TESTFILES/tvldtypes4.h5.xml
+$SRC_H5DUMP_TESTFILES/tvldtypes5.h5.xml
+$SRC_H5DUMP_TESTFILES/tvlstr.h5.xml
+"
+
+#
+# copy test files and expected output files from source dirs to test dir
+#
+COPY_TESTFILES="$LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML"
+
+COPY_TESTFILES_TO_TESTDIR()
+{
+    # copy test files. Used -f to make sure get a new copy
+    for tstfile in $COPY_TESTFILES
+    do
+        # ignore '#' comment
+        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
+        RET=$?
+        if [ $RET -eq 1 ]; then
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
+            fi
+        fi
+    done
+}
 
 # Print a line-line message left justified in a field of 70 characters
 # beginning with the word "Testing".
diff --git a/tools/h5import/CMakeLists.txt b/tools/h5import/CMakeLists.txt
index 76dcf26..b3df94b 100644
--- a/tools/h5import/CMakeLists.txt
+++ b/tools/h5import/CMakeLists.txt
@@ -52,11 +52,21 @@ IF (BUILD_TESTING)
   SET (HDF5_REFERENCE_TXT_FILES
       txtfp32.txt
       txtfp64.txt
+      txtuin16.txt
       txtuin32.txt
+      txtin8.txt
       txtin16.txt
       txtin32.txt
       textpfe64.txt
       txtstr.txt
+      dbinfp64.h5.txt
+      dbinin8.h5.txt
+      dbinin8w.h5.txt
+      dbinin16.h5.txt
+      dbinin32.h5.txt
+      dbinuin16.h5.txt
+      dbinuin32.h5.txt
+      dtxtstr.h5.txt
   )
   SET (HDF5_REFERENCE_TEST_FILES
       binfp64.h5
@@ -90,7 +100,7 @@ IF (BUILD_TESTING)
   ENDFOREACH (conf_file ${HDF5_REFERENCE_CONF_FILES})
 
   FOREACH (txt_file ${HDF5_REFERENCE_TXT_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/${txt_file}")
+    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${txt_file}")
     #MESSAGE (STATUS " Copying ${txt_file}")
     ADD_CUSTOM_COMMAND (
         TARGET     h5import
@@ -117,24 +127,22 @@ IF (BUILD_TESTING)
 ##############################################################################
 ##############################################################################
   MACRO (ADD_H5_TEST testname importfile conffile testfile)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
-          NAME H5IMPORT-${testname}-clear-objects
-          COMMAND    ${CMAKE_COMMAND}
-              -E remove
-              ${testfile}
-              ${testfile}.new
-              ${testfile}.new.err
-              ${testfile}.out
-              ${testfile}.out.err
-      )
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      SET (last_test "H5IMPORT-${testname}-clear-objects")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    ADD_TEST (
+        NAME H5IMPORT-${testname}-clear-objects
+        COMMAND    ${CMAKE_COMMAND}
+            -E remove
+            ${testfile}
+            ${testfile}.new
+            ${testfile}.new.err
+            ${testfile}.out
+            ${testfile}.out.err
+    )
+    IF (NOT "${last_test}" STREQUAL "")
+      SET_TESTS_PROPERTIES (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+    ENDIF (NOT "${last_test}" STREQUAL "")
+    SET (last_test "H5IMPORT-${testname}-clear-objects")
 
-    ADD_TEST (NAME H5IMPORT-${testname} COMMAND $<TARGET_FILE:h5import> ${importfile} -c testfiles/${conffile} -o ${testfile})
+    ADD_TEST (NAME H5IMPORT-${testname} COMMAND $<TARGET_FILE:h5import> ${importfile} -c ${conffile} -o ${testfile})
     IF (NOT "${last_test}" STREQUAL "")
       SET_TESTS_PROPERTIES (H5IMPORT-${testname} PROPERTIES DEPENDS ${last_test})
     ENDIF (NOT "${last_test}" STREQUAL "")
@@ -170,7 +178,103 @@ IF (BUILD_TESTING)
       SET_TESTS_PROPERTIES (H5IMPORT-H5DMP_CMP-${testname} PROPERTIES DEPENDS H5IMPORT-H5DMP-${testname})
       SET (last_test "H5IMPORT-H5DMP_CMP-${testname}")
     ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-  ENDMACRO (ADD_H5_TEST testname resultcode testfile vparam srcname dstname)
+  ENDMACRO (ADD_H5_TEST testname importfile conffile testfile)
+
+  MACRO (ADD_H5_DUMPTEST testname datasetname testfile)
+    # If using memchecker add tests without using scripts
+    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      ADD_TEST (
+          NAME H5IMPORT-DUMP-${testname}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove
+              d${testfile}
+              d${testfile}.bin
+              d${testfile}.imp
+              d${testfile}.imp.err
+              d${testfile}.dmp
+              d${testfile}.dmp.err
+              d${testfile}.dff
+              d${testfile}.dff.err
+      )
+      IF (NOT "${last_test}" STREQUAL "")
+        SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+      ENDIF (NOT "${last_test}" STREQUAL "")
+
+      IF ("${ARGN}" STREQUAL "BINARY")
+        ADD_TEST (
+            NAME H5IMPORT-DUMP-${testname}-H5DUMP
+            COMMAND "${CMAKE_COMMAND}"
+                -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
+                -D "TEST_ARGS:STRING=-p;-d;${datasetname};-o;d${testfile}.bin;-b;testfiles/${testfile}"
+                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+                -D "TEST_OUTPUT=d${testfile}.dmp"
+                -D "TEST_EXPECT=0"
+                -D "TEST_SKIP_COMPARE=TRUE"
+                -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
+        )
+      ELSE ("${ARGN}" STREQUAL "BINARY")
+        ADD_TEST (
+            NAME H5IMPORT-DUMP-${testname}-H5DUMP
+            COMMAND "${CMAKE_COMMAND}"
+                -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
+                -D "TEST_ARGS:STRING=-p;-d;${datasetname};-o;d${testfile}.bin;-y;--width=1;testfiles/${testfile}"
+                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+                -D "TEST_OUTPUT=d${testfile}.dmp"
+                -D "TEST_EXPECT=0"
+                -D "TEST_SKIP_COMPARE=TRUE"
+                -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
+        )
+      ENDIF ("${ARGN}" STREQUAL "BINARY")
+      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname}-H5DUMP PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-clear-objects")
+      
+      ADD_TEST (
+          NAME H5IMPORT-DUMP-${testname}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5import>"
+              -D "TEST_ARGS:STRING=d${testfile}.bin;-c;d${testfile}.dmp;-o;d${testfile}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_OUTPUT=d${testfile}.imp"
+              -D "TEST_EXPECT=0"
+              -D "TEST_SKIP_COMPARE=TRUE"
+              -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
+      )
+      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname} PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-H5DUMP")
+
+      ADD_TEST (
+          NAME H5IMPORT-DUMP-${testname}-H5DIFF
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
+              -D "TEST_ARGS:STRING=-v;d${testfile};testfiles/${testfile};${datasetname};${datasetname}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_OUTPUT=d${testfile}.dff"
+              -D "TEST_EXPECT=0"
+              -D "TEST_FILTER=(^(Warning)[^\n]*)"
+              -D "TEST_REFERENCE=testfiles/d${testfile}.txt"
+              -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
+      )
+      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname}-H5DIFF PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}")
+      SET (last_test "H5IMPORT-DUMP-${testname}-H5DIFF")
+    ELSE (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      ADD_TEST (
+          NAME H5IMPORT-DUMP-${testname}-SKIPPED
+          COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${testname} ${datasetname} ${testfile}"
+      )
+    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_DUMPTEST testname datasetname testfile)
+
+  MACRO (ADD_H5_SKIP_DUMPTEST testname datasetname testfile)
+    ADD_TEST (
+        NAME H5IMPORT-DUMP-${testname}-SKIPPED
+        COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${testname} ${datasetname} ${testfile} --- DEFLATE filter not available"
+    )
+  ENDMACRO (ADD_H5_SKIP_DUMPTEST testname datasetname testfile)
+
+  # --------------------------------------------------------------------
+  # Determine if filter is available for h5diff
+  # --------------------------------------------------------------------
+  IF (H5_HAVE_FILTER_DEFLATE)
+    SET (USE_FILTER_DEFLATE "true")
+  ENDIF (H5_HAVE_FILTER_DEFLATE)
 
 ##############################################################################
 ##############################################################################
@@ -190,8 +294,6 @@ IF (BUILD_TESTING)
           binin32.bin
           binuin16.bin
           binuin32.bin
-          txtin16.txt
-          txtin32.txt
           ${HDF5_REFERENCE_TEST_FILES}
   )
   SET (last_test "H5IMPORT-clear-objects")
@@ -203,52 +305,68 @@ IF (BUILD_TESTING)
   SET (last_test "H5IMPORT-h5importtest")
 
   # ----- TESTING "ASCII I32 rank 3 - Output BE " ;
-  ADD_H5_TEST (ASCII_I32 txtin16.txt txtin32.conf txtin32.h5)
+  ADD_H5_TEST (ASCII_I32 testfiles/txtin32.txt testfiles/txtin32.conf txtin32.h5)
 
   # ----- TESTING "ASCII I16 rank 3 - Output LE - CHUNKED - extended" 
-  ADD_H5_TEST (ASCII_I16 txtin16.txt txtin16.conf txtin16.h5)
+  ADD_H5_TEST (ASCII_I16 testfiles/txtin16.txt testfiles/txtin16.conf txtin16.h5)
 
   # ----- TESTING "ASCII I8 - rank 3 - Output I8 LE-Chunked+Extended+Compressed " 
-  ADD_H5_TEST (ASCII_I8 txtin16.txt txtin8.conf txtin8.h5)
-
-  # ----- TESTING "ASCII UI32 - rank 3 - Output BE" 
-  ADD_H5_TEST (ASCII_UI32 txtuin32.txt txtuin32.conf txtuin32.h5)
+  ADD_H5_TEST (ASCII_I8 testfiles/txtin8.txt testfiles/txtin8.conf txtin8.h5)
 
   # ----- TESTING "ASCII UI16 - rank 2 - Output LE+Chunked+Compressed " 
-  ADD_H5_TEST (ASCII_UI16 txtuin32.txt txtuin16.conf txtuin16.h5)
+  ADD_H5_TEST (ASCII_UI16 testfiles/txtuin16.txt testfiles/txtuin16.conf txtuin16.h5)
+
+  # ----- TESTING "ASCII UI32 - rank 3 - Output BE" 
+  ADD_H5_TEST (ASCII_UI32 testfiles/txtuin32.txt testfiles/txtuin32.conf txtuin32.h5)
 
   # ----- TESTING "ASCII F32 - rank 3 - Output LE " 
-  ADD_H5_TEST (ASCII_F32 txtfp32.txt txtfp32.conf txtfp32.h5)
+  ADD_H5_TEST (ASCII_F32 testfiles/txtfp32.txt testfiles/txtfp32.conf txtfp32.h5)
 
   # ----- TESTING "ASCII F64 - rank 3 - Output BE + CHUNKED+Extended+Compressed " 
-  ADD_H5_TEST (ASCII_F64 txtfp64.txt txtfp64.conf txtfp64.h5)
+  ADD_H5_TEST (ASCII_F64 testfiles/txtfp64.txt testfiles/txtfp64.conf txtfp64.h5)
 
   # ----- TESTING "BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " 
-  ADD_H5_TEST (BINARY_F64 binfp64.bin binfp64.conf binfp64.h5)
-
-  # ----- TESTING "BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " 
-  ADD_H5_TEST (BINARY_I16 binin16.bin binin16.conf binin16.h5)
+  ADD_H5_TEST (BINARY_F64 binfp64.bin testfiles/binfp64.conf binfp64.h5)
+  IF (NOT USE_FILTER_DEFLATE)
+    ADD_H5_SKIP_DUMPTEST (BINARY_F64 "/fp/bin/64-bit" binfp64.h5 BINARY)
+  ELSE (NOT USE_FILTER_DEFLATE)
+    ADD_H5_DUMPTEST (BINARY_F64 "/fp/bin/64-bit" binfp64.h5 BINARY)
+  ENDIF (NOT USE_FILTER_DEFLATE)
 
   # ----- TESTING "BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " 
-  ADD_H5_TEST (BINARY_I8 binin8.bin binin8.conf binin8.h5)
+  ADD_H5_TEST (BINARY_I8 binin8.bin testfiles/binin8.conf binin8.h5)
+  IF (NOT USE_FILTER_DEFLATE)
+    ADD_H5_SKIP_DUMPTEST (BINARY_I8 "/int/bin/8-bit" binin8.h5 BINARY)
+  ELSE (NOT USE_FILTER_DEFLATE)
+    ADD_H5_DUMPTEST (BINARY_I8 "/int/bin/8-bit" binin8.h5 BINARY)
+  ENDIF (NOT USE_FILTER_DEFLATE)
+
+  # ----- TESTING "BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " 
+  ADD_H5_TEST (BINARY_I16 binin16.bin testfiles/binin16.conf binin16.h5)
+  ADD_H5_DUMPTEST (BINARY_I16 "/int/bin/16-bit" binin16.h5 BINARY)
 
   # ----- TESTING "BINARY I32 - rank 3 - Output BE + CHUNKED " 
-  ADD_H5_TEST (BINARY_I32 binin32.bin binin32.conf binin32.h5)
+  ADD_H5_TEST (BINARY_I32 binin32.bin testfiles/binin32.conf binin32.h5)
+  ADD_H5_DUMPTEST (BINARY_I32 "/int/bin/32-bit" binin32.h5 BINARY)
 
   # ----- TESTING "BINARY UI16 - rank 3 - Output byte BE + CHUNKED " 
-  ADD_H5_TEST (BINARY_UI16 binuin16.bin binuin16.conf binuin16.h5)
+  ADD_H5_TEST (BINARY_UI16 binuin16.bin testfiles/binuin16.conf binuin16.h5)
+  ADD_H5_DUMPTEST (BINARY_UI16 "/int/buin/16-bit" binuin16.h5 BINARY)
 
-  # ----- TESTING "BINARY UI32 - rank 3 - Output LE + CHUNKED " 
-  ADD_H5_TEST (BINARY_UI32 binuin32.bin binuin32.conf binuin32.h5)
+  # ----- TESTING "BINARY UI32 - rank 3 - Output LE " 
+  ADD_H5_TEST (BINARY_UI32 binuin32.bin testfiles/binuin32.conf binuin32.h5)
+  ADD_H5_DUMPTEST (BINARY_UI32 "/int/buin/32-bit" binuin32.h5 BINARY)
 
   # ----- TESTING "STR" 
-  ADD_H5_TEST (STR txtstr.txt txtstr.conf txtstr.h5)
+  ADD_H5_TEST (STR testfiles/txtstr.txt testfiles/txtstr.conf txtstr.h5)
+  ADD_H5_DUMPTEST (STR "/mytext/data" txtstr.h5)
 
   # ----- TESTING "BINARY I8 CR LF EOF" 
-  ADD_H5_TEST (BINARY_I8_EOF binin8w.bin binin8w.conf binin8w.h5)
+  ADD_H5_TEST (BINARY_I8_EOF binin8w.bin testfiles/binin8w.conf binin8w.h5)
+  ADD_H5_DUMPTEST (BINARY_I8_EOF "/dataset0" binin8w.h5 BINARY)
 
   # ----- TESTING "ASCII F64 - rank 1 - INPUT-CLASS TEXTFPE " 
-  ADD_H5_TEST (ASCII_F64_R1 textpfe64.txt textpfe.conf textpfe.h5)
+  ADD_H5_TEST (ASCII_F64_R1 testfiles/textpfe64.txt testfiles/textpfe.conf textpfe.h5)
 
 ENDIF (BUILD_TESTING)
 
@@ -261,11 +379,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5import ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5import
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5import/Makefile.am b/tools/h5import/Makefile.am
index 49f4f71..167dbc9 100644
--- a/tools/h5import/Makefile.am
+++ b/tools/h5import/Makefile.am
@@ -25,7 +25,7 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG=h5importtest
-TEST_SCRIPT=$(srcdir)/h5importtestutil.sh
+TEST_SCRIPT=h5importtestutil.sh
 
 check_PROGRAMS=$(TEST_PROG)
 check_SCRIPT=h5importtestutil.sh
diff --git a/tools/h5import/Makefile.in b/tools/h5import/Makefile.in
index b2a90ff..16e8901 100644
--- a/tools/h5import/Makefile.in
+++ b/tools/h5import/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,19 +68,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/h5importtestutil.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 check_PROGRAMS = $(am__EXEEXT_1)
 bin_PROGRAMS = h5import$(EXEEXT)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = tools/h5import
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = h5importtestutil.sh
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)"
 am__EXEEXT_1 = h5importtest$(EXEEXT)
@@ -73,9 +91,10 @@ h5import_SOURCES = h5import.c
 h5import_OBJECTS = h5import.$(OBJEXT)
 h5import_LDADD = $(LDADD)
 h5import_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5import_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5import_LDFLAGS) $(LDFLAGS) -o $@
@@ -83,6 +102,18 @@ h5importtest_SOURCES = h5importtest.c
 h5importtest_OBJECTS = h5importtest.$(OBJEXT)
 h5importtest_LDADD = $(LDADD)
 h5importtest_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -93,30 +124,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = h5import.c h5importtest.c
 DIST_SOURCES = h5import.c h5importtest.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -134,12 +168,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -403,7 +434,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG = h5importtest
-TEST_SCRIPT = $(srcdir)/h5importtestutil.sh
+TEST_SCRIPT = h5importtestutil.sh
 check_SCRIPT = h5importtestutil.sh
 SCRIPT_DEPEND = h5import$(EXEEXT)
 
@@ -424,6 +455,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -453,6 +488,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -462,10 +498,15 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+h5importtestutil.sh: $(top_builddir)/config.status $(srcdir)/h5importtestutil.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -514,10 +555,10 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5import$(EXEEXT): $(h5import_OBJECTS) $(h5import_DEPENDENCIES) 
+h5import$(EXEEXT): $(h5import_OBJECTS) $(h5import_DEPENDENCIES) $(EXTRA_h5import_DEPENDENCIES) 
 	@rm -f h5import$(EXEEXT)
 	$(AM_V_CCLD)$(h5import_LINK) $(h5import_OBJECTS) $(h5import_LDADD) $(LIBS)
-h5importtest$(EXEEXT): $(h5importtest_OBJECTS) $(h5importtest_DEPENDENCIES) 
+h5importtest$(EXEEXT): $(h5importtest_OBJECTS) $(h5importtest_DEPENDENCIES) $(EXTRA_h5importtest_DEPENDENCIES) 
 	@rm -f h5importtest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5importtest_OBJECTS) $(h5importtest_LDADD) $(LIBS)
 
@@ -533,26 +574,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -609,6 +647,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -661,10 +713,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -751,7 +808,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -780,7 +837,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -806,7 +863,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -830,7 +887,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -840,7 +897,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -930,7 +987,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -960,7 +1017,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5import/h5import.c b/tools/h5import/h5import.c
index 56dc5ab..34870fb 100644
--- a/tools/h5import/h5import.c
+++ b/tools/h5import/h5import.c
@@ -371,11 +371,19 @@ static int processDataFile(char *infile, struct Input *in, hid_t file_id)
         break;
 
     case 5: /*  STR  */
-
-        if (processStrData(strm, in, file_id) == -1) {
-            (void) HDfprintf(stderr, err11, infile);
-            HDfclose(strm);
-            return (-1);
+        if (in->h5dumpInput) {
+            if (processStrHDFData(strm, in, file_id) == -1) {
+                (void) HDfprintf(stderr, err11, infile);
+                HDfclose(strm);
+                return (-1);
+            }
+        }
+        else {
+            if (processStrData(strm, in, file_id) == -1) {
+                (void) HDfprintf(stderr, err11, infile);
+                HDfclose(strm);
+                return (-1);
+            }
         }
 
         break;
@@ -944,6 +952,179 @@ out:
     return (-1);
 }
 
+/*-------------------------------------------------------------------------
+ * Function: processStrData
+ *
+ * Purpose: read an ASCII file with string data and generate an HDF5 dataset
+ *  with a variable length type
+ *
+ * Return: 0, ok, -1 no
+ *
+ *-------------------------------------------------------------------------
+ */
+static int processStrHDFData(FILE *strm, struct Input *in, hid_t file_id)
+{
+    hid_t   group_id;
+    hid_t   dset_id;
+    hid_t   space_id;
+    hid_t   mspace_id;
+    hid_t   type_id;
+    hid_t   handle;
+    char   *str1 = NULL;
+    char   *str2 = NULL;
+    char   *str3 = NULL;
+    char    str[1024] = "";
+    char    c;
+    int     results;
+    int     j;
+    int     nlines = 0;
+    int     line;
+
+    /*-------------------------------------------------------------------------
+     * read file and generate an HDF5 dataset
+     *-------------------------------------------------------------------------
+     */
+#ifdef H5DEBUGIMPORT
+    printf("processStrHDFData DATATYPE STRING\n");
+#endif
+
+    if ((type_id = H5Tcopy(H5T_C_S1)) < 0)
+        goto out;
+
+    if (H5Tset_size(type_id, H5T_VARIABLE) < 0)
+        goto out;
+
+    /* disable error reporting */
+    H5E_BEGIN_TRY
+    {
+        /* create parent groups */
+        if (in->path.count > 1) {
+            j = 0;
+            handle = file_id;
+            while (j < in->path.count - 1) {
+                if ((group_id = H5Gopen2(handle, in->path.group[j], H5P_DEFAULT)) < 0) {
+                    group_id = H5Gcreate2(handle, in->path.group[j++], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+                    for (; j < in->path.count - 1; j++)
+                        group_id = H5Gcreate2(group_id, in->path.group[j], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+                    handle = group_id;
+                    break;
+                }
+                handle = group_id;
+                j++;
+            }
+        }
+        else {
+            handle = file_id;
+            j = 0;
+        }
+
+        /*enable error reporting */
+    }
+    H5E_END_TRY;
+#ifdef H5DEBUGIMPORT
+    printf("processStrHDFData DATATYPE STRING groups created\n");
+#endif
+
+    if ((space_id = H5Screate_simple(in->rank, in->sizeOfDimension, NULL)) < 0)
+        goto out;
+
+    if ((mspace_id = H5Screate(H5S_SCALAR)) < 0)
+        goto out;
+
+    if ((dset_id = H5Dcreate2(handle, in->path.group[j], type_id, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        goto out;
+
+#ifdef H5DEBUGIMPORT
+    printf("processStrHDFData DATATYPE STRING ready to process strings\n");
+#endif
+    line = 0;
+    j = 0;
+
+    while (HDfgets(str,sizeof(str),strm)) {
+        str1 = str;
+        str2 = NULL;
+        str3 = NULL;
+#ifdef H5DEBUGIMPORT
+            printf("processStrHDFData DATATYPE STRING[%d]={%s}\n", line, str1);
+#endif
+            /* process string to remove the first and last quote char */
+            str2 = strchr(str1, '"');
+            if (str2 != NULL) {
+#ifdef H5DEBUGIMPORT
+                    printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str2), str2);
+#endif
+                str2++;
+#ifdef H5DEBUGIMPORT
+                    printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str2), str2);
+#endif
+                str3 = strrchr(str2, '"');
+                if (str3 != NULL) {
+#ifdef H5DEBUGIMPORT
+                    printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str3), str3);
+#endif
+                    *str3 = '\0';
+
+#ifdef H5DEBUGIMPORT
+                    printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str2), str2);
+#endif
+
+                    if(strlen(str2) > 0) {
+                        hid_t fspace_id;
+                        hsize_t start[1];
+                        hsize_t count[1] = { 1 };
+
+#ifdef H5DEBUGIMPORT
+                        printf("processStrHDFData DATATYPE STRING[%d] store %s\n", line, str2);
+#endif
+                        if ((fspace_id = H5Dget_space(dset_id)) < 0)
+                            goto out;
+
+                        start[0] = line++;
+
+                        if (H5Sselect_hyperslab(fspace_id, H5S_SELECT_SET, start, NULL, count, NULL) < 0)
+                            goto out;
+
+                        if (H5Dwrite(dset_id, type_id, mspace_id, fspace_id, H5P_DEFAULT, &str2) < 0)
+                            goto out;
+
+                        if (H5Sclose(fspace_id) < 0)
+                            goto out;
+                    }
+                }
+            }
+        str[0] = '\0';
+        j++;
+    }
+#ifdef H5DEBUGIMPORT
+    printf("processStrHDFData DATATYPE STRING eof reached\n");
+#endif
+
+    /* close */
+    H5Dclose(dset_id);
+    H5Sclose(space_id);
+    H5Sclose(mspace_id);
+    H5Tclose(type_id);
+
+    return (0);
+
+out:
+#ifdef H5DEBUGIMPORT
+    printf("processStrHDFData DATATYPE STRING error exit\n");
+#endif
+/* disable error reporting */
+H5E_BEGIN_TRY
+{
+    /* close */
+    H5Dclose(dset_id);
+    H5Sclose(space_id);
+    H5Sclose(mspace_id);
+    H5Tclose(type_id);
+}
+H5E_END_TRY;
+
+    return (-1);
+}
+
 static int allocateIntegerStorage(struct Input *in)
 {
     hsize_t     len = 1;
@@ -1075,6 +1256,7 @@ static int processConfigurationFile(char *infile, struct Input *in)
     int         kindex;
     char        temp[255];
     int         ival;
+    int         scanret;
 
     const char *err1 = "Unable to open the configuration file:  %s for reading.\n";
     const char *err2 = "Unknown keyword in configuration file: %s\n";
@@ -1124,502 +1306,1818 @@ static int processConfigurationFile(char *infile, struct Input *in)
         return (-1);
     }
 
-    while (fscanf(strm, "%s", key) == 1) {
-        if ((kindex = mapKeywordToIndex(key)) == -1) {
-            (void) HDfprintf(stderr, err2, infile);
-            HDfclose(strm);
-            return (-1);
-        }
-        switch (kindex) {
-        case 0: /* PATH */
-            if (in->configOptionVector[PATH] == 1) {
-                (void) HDfprintf(stderr, err3a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (fscanf(strm, "%s", temp) != 1) {
-                (void) HDfprintf(stderr, "%s", err18);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (parsePathInfo(&in->path, temp) == -1) {
-                (void) HDfprintf(stderr, err3b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[PATH] = 1;
-            break;
-
-        case 1: /* INPUT-CLASS */
-            if (in->configOptionVector[INPUT_CLASS] == 1) {
-                (void) HDfprintf(stderr, err4a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-
-            if (fscanf(strm, "%s", temp) != 1) {
-                (void) HDfprintf(stderr, "%s", err18);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (getInputClass(in, temp) == -1) {
-                (void) HDfprintf(stderr, err4b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-
-            in->configOptionVector[INPUT_CLASS] = 1;
-
-            /*set default value for output-class */
-            if (in->configOptionVector[OUTPUT_CLASS] == 0) {
-                if (in->inputClass == 0 || in->inputClass == 4)
-                    in->outputClass = 0;
-                if (in->inputClass == 1 || in->inputClass == 2
-                        || in->inputClass == 3)
-                    in->outputClass = 1;
-                if (in->inputClass == 6 || in->inputClass == 7)
-                    in->outputClass = 2;
-            }
-            break;
-
-        case 2: /* INPUT-SIZE */
-            if (in->configOptionVector[INPUT_SIZE] == 1) {
-                (void) HDfprintf(stderr, err5a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (fscanf(strm, "%d", (&ival)) != 1) {
-                (void) HDfprintf(stderr, "%s", err19);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (getInputSize(in, ival) == -1) {
-                (void) HDfprintf(stderr, err5b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[INPUT_SIZE] = 1;
-
-            /*set default value for output-size */
-            if (in->configOptionVector[OUTPUT_SIZE] == 0)
-                in->outputSize = in->inputSize;
-            break;
-
-        case 3: /* RANK */
-            if (in->configOptionVector[RANK] == 1) {
-                (void) HDfprintf(stderr, err6a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-
-            if (getRank(in, strm) == -1) {
-                (void) HDfprintf(stderr, err6b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[RANK] = 1;
-            break;
-
-        case 4: /* DIMENSION-SIZES */
-            if (in->configOptionVector[DIM] == 1) {
-                (void) HDfprintf(stderr, err7a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+    scanret = fscanf(strm, "%s", key);
+    if((scanret == 1) && !HDstrcmp("HDF5", key)) {
+#ifdef H5DEBUGIMPORT
+        int pndx;
+        printf("\nh5dump file\n");
+#endif
+        in->h5dumpInput = 1;
+        scanret = fscanf(strm, "%s", temp); /* filename */
+        scanret = fscanf(strm, "%s", temp); /* start bracket */
+        scanret = fscanf(strm, "%s", key); /* DATASET */
+        while (scanret == 1) {
+            if(!HDstrcmp("DATASET", key)) { /* PATH */
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATASET key\n");
+#endif
+                if (in->configOptionVector[PATH] == 1) {
+                    (void) HDfprintf(stderr, err3a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (fscanf(strm, "%s", temp) != 1) {
+                    (void) HDfprintf(stderr, "%s", err18);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATASET %s found\n", temp);
+#endif
+                if (parsePathInfo(&in->path, temp) == -1) {
+                    (void) HDfprintf(stderr, err3b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[PATH] = 1;
+                scanret = fscanf(strm, "%s", temp); /* start bracket */
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATASET %s found\n", temp);
+#endif
+            } /* if(!HDstrcmp("DATASET", key))  PATH */
+            else if(!HDstrcmp("DATATYPE", key)) { /* INPUT-CLASS */
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATATYPE key\n");
+#endif
+                if (in->configOptionVector[INPUT_CLASS] == 1) {
+                    (void) HDfprintf(stderr, err4a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-            if (in->configOptionVector[RANK] == 0) {
-                (void) HDfprintf(stderr, err7b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (getDimensionSizes(in, strm) == -1) {
-                (void) HDfprintf(stderr, err7c, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[DIM] = 1;
-            break;
+                if (fscanf(strm, "%s", temp) != 1) {
+                    (void) HDfprintf(stderr, "%s", err18);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATATYPE %s found\n", temp);
+#endif
+                if ((kindex = getInputClassType(in, temp)) == -1) {
+                    (void) HDfprintf(stderr, err4b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATATYPE type %d inputClass\n", in->inputClass);
+#endif
 
-        case 5: /* OUTPUT-CLASS */
-            if (in->configOptionVector[OUTPUT_CLASS] == 1) {
-                (void) HDfprintf(stderr, err8a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+                in->configOptionVector[INPUT_CLASS] = 1;
+
+                /*set default value for output-class */
+                if (in->configOptionVector[OUTPUT_CLASS] == 0) {
+                    if (in->inputClass == 0 || in->inputClass == 4)
+                        in->outputClass = 0;
+                    if (in->inputClass == 1 || in->inputClass == 2
+                            || in->inputClass == 3)
+                        in->outputClass = 1;
+                    if (in->inputClass == 6 || in->inputClass == 7)
+                        in->outputClass = 2;
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATATYPE type %d outputClass\n", in->outputClass);
+#endif
 
-            if (getOutputClass(in, strm) == -1) {
-                (void) HDfprintf(stderr, err8b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[OUTPUT_CLASS] = 1;
-            break;
+                if(in->inputClass == 5) { /* STRING */
+                    int get_next_prop = 1;
+                    in->outputClass = -1;
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump DATATYPE STRING found\n");
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* start bracket */
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump DATATYPE STRING %s found\n", temp);
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* string properties */
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+                    while (get_next_prop) {
+                        if(!HDstrcmp("STRSIZE", temp)) { /* STRSIZE */
+                            if (fscanf(strm, "%s", temp) != 1) {
+                                (void) HDfprintf(stderr, "%s", err19);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATATYPE STRING STRSIZE %s found\n", temp);
+#endif
+                            if (HDstrcmp("H5T_VARIABLE;", temp)) {
+                                char *more = temp;
+                                ival = HDstrtol(more, &more, 10);
+                                if (getInputSize(in, ival) == -1) {
+                                    (void) HDfprintf(stderr, err5b, infile);
+                                    HDfclose(strm);
+                                    return (-1);
+                                }
+#ifdef H5DEBUGIMPORT
+                                printf("h5dump DATATYPE STRING %d InputSize\n", in->inputSize);
+#endif
+                            }
+                        }
+                        else if(!HDstrcmp("STRPAD", temp)) { /* STRPAD */
+                            if (fscanf(strm, "%s", temp) != 1) { /* STRPAD type */
+                                (void) HDfprintf(stderr, "%s", err18);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATATYPE STRING STRPAD %s found\n", temp);
+#endif
+                        }
+                        else if(!HDstrcmp("CSET", key)) { /* CSET */
+                            if (fscanf(strm, "%s", temp) != 1) { /* CSET type */
+                                (void) HDfprintf(stderr, "%s", err18);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATATYPE STRING CSET %s found\n", temp);
+#endif
 
-        case 6: /* OUTPUT-SIZE */
-            if (in->configOptionVector[OUTPUT_SIZE] == 1) {
-                (void) HDfprintf(stderr, err9a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+                        }
+                        else if(!HDstrcmp("CTYPE", temp)) { /* CTYPE */
+                            if (fscanf(strm, "%s", temp) != 1) { /* CTYPE type */
+                                (void) HDfprintf(stderr, "%s", err18);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATATYPE STRING  CTYPE %s found\n", temp);
+#endif
+                        } /* if(!HDstrcmp("CSET", key)) */
+                        if (fscanf(strm, "%s", temp) != 1) {
+                            (void) HDfprintf(stderr, "%s", err18);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump DATATYPE STRING %s found\n", temp);
+#endif
+                        if(!HDstrcmp("}", temp)) { /* end bracket */
+                            get_next_prop = 0;
+                        }
+                    } /* while (get_next_prop) */
+                } /* if(kindex == 5)  STRING */
+             } /* else if(!HDstrcmp("DATATYPE", key))  INPUT-CLASS */
+            else if(!HDstrcmp("DATASPACE", key)) { /* RANK and DIMENSIONS */
+                hsize_t     temp_dims[MAX_NUM_DIMENSION];
+
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATASPACE key\n");
+#endif
+                if (fscanf(strm, "%s", temp) != 1) {
+                    (void) HDfprintf(stderr, "%s", err18);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if(!HDstrcmp("SCALAR", temp)) { /* SCALAR */
+                    in->rank = 0;
+                } /* if(!HDstrcmp("SCALAR", key)) */
+                else if(!HDstrcmp("NULL", temp)) { /* NULL */
+                    (void) HDfprintf(stderr, err6b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                } /* else if(!HDstrcmp("NULL", key)) */
+                else if(!HDstrcmp("SIMPLE", temp)) { /* SIMPLE */
+                    int icount = 0;
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump DATASPACE SIMPLE found\n");
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* start bracket */
+                        (void) HDfprintf(stderr, err6b, infile);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* start paren */
+                        (void) HDfprintf(stderr, err6b, infile);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                    if(!HDstrcmp("(", temp)) { /* start paren */
+                        int get_next_dim = 1;
+                        int i = 0;
+
+                        if (fscanf(strm, "%s", temp) != 1) { /* Dimension with optional comma */
+                            (void) HDfprintf(stderr, err16c, infile);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                        while (get_next_dim) {
+                            char *more = temp;
+                            temp_dims[icount] = HDstrtoull(more, &more, 10);
+                            if (fscanf(strm, "%s", temp) != 1) { /* Dimension or end paren */
+                                (void) HDfprintf(stderr, err6b, infile);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                            if(!HDstrcmp(")", temp)) { /* end paren */
+                                in->rank = ++icount;
+                                in->configOptionVector[RANK] = 1;
+                                get_next_dim = 0;
+                            }
+                            else { /* Dimension */
+                                icount++;
+                                if (icount > MAX_NUM_DIMENSION) {
+                                    (void) HDfprintf(stderr, "Invalid value for rank.\n");
+                                    HDfclose(strm);
+                                    return (-1);
+                                }
+                            }
+                        } /* while (get_next_dim) */
+
+                        if ((in->sizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) {
+                            (void) HDfprintf(stderr, "Unable to allocate dynamic memory.\n");
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump DATASPACE SIMPLE %d rank\n", in->rank);
+#endif
+                        for (i = 0; i < in->rank; i++) {
+                            in->sizeOfDimension[i] = temp_dims[i];
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump DATASPACE SIMPLE dims:", in->rank);
+                        for (pndx = 0; pndx < in->rank; pndx++) {
+                            printf(" %d", in->sizeOfDimension[pndx]);
+                        }
+                        printf("\n");
+#endif
+                        in->configOptionVector[DIM] = 1;
+                    } /* if(!HDstrcmp("(", key))  start paren */
+                    else {
+                        (void) HDfprintf(stderr, err5b, infile);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+                    if (fscanf(strm, "%s", temp) != 1) {
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                    if(!HDstrcmp("/", temp)) { /* / max dims */
+                        if ((in->maxsizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) {
+                            (void) HDfprintf(stderr, "Unable to allocate dynamic memory.\n");
+                            return (-1);
+                        }
+                        if (fscanf(strm, "%s", temp) != 1) { /* start paren */
+                            (void) HDfprintf(stderr, err6b, infile);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                        if(!HDstrcmp("(", temp)) { /* start paren */
+                            int get_next_dim = 1;
+                            int i = 0;
 
-            if (getOutputSize(in, strm) == -1) {
-                (void) HDfprintf(stderr, err9b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[OUTPUT_SIZE] = 1;
-            break;
-
-        case 7: /* OUTPUT-ARCHITECTURE */
-            if (in->configOptionVector[OUTPUT_ARCH] == 1) {
-                (void) HDfprintf(stderr, err10a, infile);
-                HDfclose(strm);
-                return (-1);
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATASPACE SIMPLE process max dim values\n");
+#endif
+                            if (fscanf(strm, "%s", temp) != 1) { /* max dim with optional comma */
+                                (void) HDfprintf(stderr, err16c, infile);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                            while (get_next_dim) {
+#ifdef H5DEBUGIMPORT
+                                printf("h5dump DATASPACE SIMPLE get max dim value\n");
+#endif
+                                if(!HDstrcmp("H5S_UNLIMITED", temp) || !HDstrcmp("H5S_UNLIMITED,", temp)) { /* unlimited */
+                                    in->maxsizeOfDimension[i] = H5S_UNLIMITED;
+                                    in->configOptionVector[EXTEND] = 1;
+                                }
+                                else {
+                                    char *more = temp;
+                                    in->maxsizeOfDimension[i] = HDstrtoull(more, &more, 10);
+                                }
+                                if (fscanf(strm, "%s", temp) != 1) { /* max dim or end paren */
+                                    (void) HDfprintf(stderr, err16c, infile);
+                                    HDfclose(strm);
+                                    return (-1);
+                                }
+#ifdef H5DEBUGIMPORT
+                                printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                                if(!HDstrcmp(")", temp)) { /* end paren */
+                                    get_next_dim = 0;
+                                }
+                                else { /* comma */
+                                    i++;
+                                    if (i > MAX_NUM_DIMENSION) {
+                                        (void) HDfprintf(stderr, "Invalid value for rank.\n");
+                                        HDfclose(strm);
+                                        return (-1);
+                                    }
+                                }
+                            } /* while (get_next_dim) */
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump DATASPACE SIMPLE maxdims:", in->rank);
+                            for (pndx = 0; pndx < in->rank; pndx++) {
+                                printf(" %d", in->maxsizeOfDimension[pndx]);
+                            }
+                            printf("\n");
+                            printf("h5dump DATASPACE SIMPLE get max dim finished\n");
+#endif
+                        } /* if(!HDstrcmp("(", key))  start paren */
+                        else {
+                            (void) HDfprintf(stderr, err16c, infile);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+                        scanret = fscanf(strm, "%s", temp); /* end bracket */
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump DATASPACE SIMPLE %s found\n", temp);
+#endif
+                    } /* if(!HDstrcmp("/", key)) max dims separator */
+                } /* else if(!HDstrcmp("SIMPLE", key)) */
+                else {
+                    (void) HDfprintf(stderr, err5b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+            } /* else if(!HDstrcmp("DATASPACE", key))  RANK and DIMENSIONS */
+            else if(!HDstrcmp("STORAGE_LAYOUT", key)) { /* CHUNKED-DIMENSION-SIZES */
+#ifdef H5DEBUGIMPORT
+                printf("h5dump STORAGE_LAYOUT key\n");
+#endif
+                if (fscanf(strm, "%s", temp) != 1) { /* start bracket */
+                    (void) HDfprintf(stderr, err6b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump STORAGE_LAYOUT %s found\n", temp);
+#endif
+                if (fscanf(strm, "%s", temp) != 1) { /* CHUNKED */
+                    (void) HDfprintf(stderr, err6b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump STORAGE_LAYOUT %s found\n", temp);
+#endif
+                if(!HDstrcmp("CHUNKED", temp)) { /* CHUNKED */
+                    if ((in->sizeOfChunk = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) {
+                        (void) HDfprintf(stderr, "Unable to allocate dynamic memory.\n");
+                        return (-1);
+                    }
+                    if (fscanf(strm, "%s", temp) != 1) { /* start paren */
+                        (void) HDfprintf(stderr, err6b, infile);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp);
+#endif
+                    if(!HDstrcmp("(", temp)) { /* start paren */
+                        int get_next_dim = 1;
+                        int icount = 0;
+
+                        if (fscanf(strm, "%s", temp) != 1) { /* Dimension with optional comma */
+                            (void) HDfprintf(stderr, err16c, infile);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp);
+#endif
+                        while (get_next_dim) {
+                            char *more = temp;
+                            in->sizeOfChunk[icount] = HDstrtoull(more, &more, 10);
+                            if (fscanf(strm, "%s", temp) != 1) { /* Dimension or end paren */
+                                (void) HDfprintf(stderr, err6b, infile);
+                                HDfclose(strm);
+                                return (-1);
+                            }
+#ifdef H5DEBUGIMPORT
+                            printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp);
+#endif
+                            if(!HDstrcmp(")", temp)) { /* end paren */
+                                in->configOptionVector[RANK] = 1;
+                                get_next_dim = 0;
+                            }
+                            else { /* Dimension */
+                                icount++;
+                                if (icount > MAX_NUM_DIMENSION) {
+                                    (void) HDfprintf(stderr, "Invalid value for rank.\n");
+                                    HDfclose(strm);
+                                    return (-1);
+                                }
+                            }
+                        } /* while (get_next_dim) */
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump STORAGE_LAYOUT CHUNKED dims:", in->rank);
+                        for (pndx = 0; pndx < in->rank; pndx++) {
+                            printf(" %d", in->sizeOfChunk[pndx]);
+                        }
+                        printf("\n");
+#endif
+                        in->configOptionVector[DIM] = 1;
+                    } /* if(!HDstrcmp("(", key))  start paren */
+                    else {
+                        (void) HDfprintf(stderr, err5b, infile);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+                    if (fscanf(strm, "%s", temp) != 1) { /* SIZE */
+                        (void) HDfprintf(stderr, err6b, infile);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp);
+#endif
+                    if(!HDstrcmp("SIZE", temp)) { /* SIZE */
+                        if (fscanf(strm, "%d", (&ival)) != 1) {
+                            (void) HDfprintf(stderr, "%s", err19);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump STORAGE_LAYOUT CHUNKED SIZE %d found\n", ival);
+#endif
+                    }
+                    while (HDstrcmp("}", temp)) {
+                        if (fscanf(strm, "%s", temp) != 1) { /* end bracket */
+                            (void) HDfprintf(stderr, "%s", err18);
+                            HDfclose(strm);
+                            return (-1);
+                        }
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp);
+#endif
+                    }
+                    in->configOptionVector[CHUNK] = 1;
+                } /* if(!HDstrcmp("CHUNKED", key))  CHUNKED */
+            } /* else if(!HDstrcmp("STORAGE_LAYOUT", key))  CHUNKED-DIMENSION-SIZES */
+            else if(!HDstrcmp("FILTERS", key)) { /* FILTERS */
+#ifdef H5DEBUGIMPORT
+                printf("h5dump FILTERS key\n");
+#endif
+                if (fscanf(strm, "%s", temp) != 1) { /* start bracket */
+                    (void) HDfprintf(stderr, err6b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump FILTERS %s found\n", temp);
+#endif
+                if (fscanf(strm, "%s", temp) != 1) {
+                    (void) HDfprintf(stderr, err6b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump FILTERS %s found\n", temp);
+#endif
+                if(!HDstrcmp("COMPRESSION", temp)) { /* COMPRESSION */
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump FILTERS COMPRESSION found\n");
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* DEFLATE */
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump FILTERS COMPRESSION %s found\n", temp);
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* bgin bracket */
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump FILTERS COMPRESSION %s found\n", temp);
+#endif
+                    if (fscanf(strm, "%s", temp) != 1) { /* LEVEL */
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump FILTERS COMPRESSION %s found\n", temp);
+#endif
+                    if (fscanf(strm, "%d", (&ival)) != 1) {
+                        (void) HDfprintf(stderr, "%s", err19);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump FILTERS COMPRESSION LEVEL %d found\n", ival);
+#endif
+                    in->compressionParam = ival;
+                    if (fscanf(strm, "%s", temp) != 1) { /* end bracket */
+                        (void) HDfprintf(stderr, "%s", err18);
+                        HDfclose(strm);
+                        return (-1);
+                    }
+#ifdef H5DEBUGIMPORT
+                    printf("h5dump FILTERS COMPRESSION %s found\n", temp);
+#endif
+                    in->compressionType = 0; /* ONLY GZIP supported */
+                    in->configOptionVector[COMPRESS] = 1;
+                }
+                else if(!HDstrcmp("CONTIGUOUS", temp)) { /* CONTIGUOUS */
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump FILTERS CONTIGUOUS found\n");
+#endif
+                    in->configOptionVector[COMPRESS] = 0;
+                }
+                else if(!HDstrcmp("NONE", temp)) { /* NONE */
+#ifdef H5DEBUGIMPORT
+                        printf("h5dump FILTERS NONE found\n");
+#endif
+                    in->configOptionVector[COMPRESS] = 0;
+                }
+                if (fscanf(strm, "%s", temp) != 1) { /* end bracket */
+                    (void) HDfprintf(stderr, "%s", err18);
+                    HDfclose(strm);
+                    return (-1);
+                }
+#ifdef H5DEBUGIMPORT
+                printf("h5dump FILTERS %s found\n", temp);
+#endif
             }
-
-            if (getOutputArchitecture(in, strm) == -1) {
-                (void) HDfprintf(stderr, err10b, infile);
-                HDfclose(strm);
-                return (-1);
+            else if(!HDstrcmp("DATA", key)) { /* FINSHED */
+#ifdef H5DEBUGIMPORT
+                printf("h5dump DATA key\n");
+#endif
+                scanret = 0;
+                break;
             }
-            in->configOptionVector[OUTPUT_ARCH] = 1;
-            break;
-
-        case 8: /* OUTPUT-BYTE-ORDER */
-            if (in->configOptionVector[OUTPUT_B_ORDER] == 1) {
-                (void) HDfprintf(stderr, err11a, infile);
+            scanret = fscanf(strm, "%s", key);
+        }
+#ifdef H5DEBUGIMPORT
+        printf("h5dump path");
+        for (pndx = 0; pndx < in->path.count; pndx++) {
+            printf(" : %s", in->path.group[pndx]);
+        }
+        printf("\n");
+        printf("h5dump inputClass=%d\n", in->inputClass);
+        printf("h5dump inputSize=%d\n", in->inputSize);
+        printf("h5dump rank=%d\n", in->rank);
+        printf("h5dump outputClass=%d\n", in->outputClass);
+        printf("h5dump outputSize=%d\n", in->outputSize);
+        printf("h5dump outputArchitecture=%d\n", in->outputArchitecture);
+        printf("h5dump outputByteOrder=%d\n", in->outputByteOrder);
+        printf("h5dump compressionType=%d\n", in->compressionType);
+        printf("h5dump compressionParam=%d\n", in->compressionParam);
+        printf("h5dump externFilename=%s\n", in->externFilename);
+        printf("h5dump configOptionVector:\n");
+        for (pndx = 0; pndx < NUM_KEYS; pndx++) {
+            printf("    %s=%d\n", keytable[pndx], in->configOptionVector[pndx]);
+        }
+#endif
+    }
+    else {
+        while (scanret == 1) {
+            if ((kindex = mapKeywordToIndex(key)) == -1) {
+                (void) HDfprintf(stderr, err2, infile);
                 HDfclose(strm);
                 return (-1);
             }
+            switch (kindex) {
+            case 0: /* PATH */
+                if (in->configOptionVector[PATH] == 1) {
+                    (void) HDfprintf(stderr, err3a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (fscanf(strm, "%s", temp) != 1) {
+                    (void) HDfprintf(stderr, "%s", err18);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (parsePathInfo(&in->path, temp) == -1) {
+                    (void) HDfprintf(stderr, err3b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[PATH] = 1;
+                break;
 
-            if (getOutputByteOrder(in, strm) == -1) {
-                (void) HDfprintf(stderr, err11b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[OUTPUT_B_ORDER] = 1;
-            break;
+            case 1: /* INPUT-CLASS */
+                if (in->configOptionVector[INPUT_CLASS] == 1) {
+                    (void) HDfprintf(stderr, err4a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-        case 9: /* CHUNKED-DIMENSION-SIZES */
-            if (in->configOptionVector[CHUNK] == 1) {
-                (void) HDfprintf(stderr, err12a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            /* cant appear before dimension sizes have been provided */
-            if (in->configOptionVector[DIM] == 0) {
-                (void) HDfprintf(stderr, err12b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+                if (fscanf(strm, "%s", temp) != 1) {
+                    (void) HDfprintf(stderr, "%s", err18);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (getInputClass(in, temp) == -1) {
+                    (void) HDfprintf(stderr, err4b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-            if (getChunkedDimensionSizes(in, strm) == -1) {
-                (void) HDfprintf(stderr, err12c, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[CHUNK] = 1;
-            break;
+                in->configOptionVector[INPUT_CLASS] = 1;
+
+                /*set default value for output-class */
+                if (in->configOptionVector[OUTPUT_CLASS] == 0) {
+                    if (in->inputClass == 0 || in->inputClass == 4)
+                        in->outputClass = 0;
+                    if (in->inputClass == 1 || in->inputClass == 2
+                            || in->inputClass == 3)
+                        in->outputClass = 1;
+                    if (in->inputClass == 6 || in->inputClass == 7)
+                        in->outputClass = 2;
+                }
+                break;
 
-        case 10: /* COMPRESSION-TYPE */
-            if (in->configOptionVector[COMPRESS] == 1) {
-                (void) HDfprintf(stderr, err13a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+            case 2: /* INPUT-SIZE */
+                if (in->configOptionVector[INPUT_SIZE] == 1) {
+                    (void) HDfprintf(stderr, err5a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (fscanf(strm, "%d", (&ival)) != 1) {
+                    (void) HDfprintf(stderr, "%s", err19);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (getInputSize(in, ival) == -1) {
+                    (void) HDfprintf(stderr, err5b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[INPUT_SIZE] = 1;
 
-            if (getCompressionType(in, strm) == -1) {
-                (void) HDfprintf(stderr, err13b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[COMPRESS] = 1;
+                /*set default value for output-size */
+                if (in->configOptionVector[OUTPUT_SIZE] == 0)
+                    in->outputSize = in->inputSize;
+                break;
 
-            if (in->configOptionVector[COMPRESS_PARAM] == 0) {
-                if (in->compressionType == 0)
-                    in->compressionParam = 6; /* default value if compressionType is GZIP */
-            }
-            break;
+            case 3: /* RANK */
+                if (in->configOptionVector[RANK] == 1) {
+                    (void) HDfprintf(stderr, err6a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-        case 11: /* COMPRESSION-PARAM */
-            if (in->configOptionVector[COMPRESS_PARAM] == 1) {
-                (void) HDfprintf(stderr, err14a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+                if (getRank(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err6b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[RANK] = 1;
+                break;
 
-            if (getCompressionParameter(in, strm) == -1) {
-                (void) HDfprintf(stderr, err14b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+            case 4: /* DIMENSION-SIZES */
+                if (in->configOptionVector[DIM] == 1) {
+                    (void) HDfprintf(stderr, err7a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-            in->configOptionVector[COMPRESS_PARAM] = 1;
+                if (in->configOptionVector[RANK] == 0) {
+                    (void) HDfprintf(stderr, err7b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (getDimensionSizes(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err7c, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[DIM] = 1;
+                break;
 
-            if (in->configOptionVector[COMPRESS] == 0)
-                in->compressionType = 0;
+            case 5: /* OUTPUT-CLASS */
+                if (in->configOptionVector[OUTPUT_CLASS] == 1) {
+                    (void) HDfprintf(stderr, err8a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-            break;
+                if (getOutputClass(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err8b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[OUTPUT_CLASS] = 1;
+                break;
 
-        case 12: /* EXTERNAL-STORAGE */
-            if (in->configOptionVector[EXTERNALSTORE] == 1) {
-                (void) HDfprintf(stderr, err15a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
+            case 6: /* OUTPUT-SIZE */
+                if (in->configOptionVector[OUTPUT_SIZE] == 1) {
+                    (void) HDfprintf(stderr, err9a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
 
-            if (getExternalFilename(in, strm) == -1) {
-                (void) HDfprintf(stderr, err15b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            in->configOptionVector[EXTERNALSTORE] = 1;
-            break;
+                if (getOutputSize(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err9b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[OUTPUT_SIZE] = 1;
+                break;
 
-        case 13: /* MAXIMUM-DIMENSIONS */
-            if (in->configOptionVector[EXTEND] == 1) {
-                (void) HDfprintf(stderr, err16a, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            /* cant appear before dimension sizes have been provided */
-            if (in->configOptionVector[DIM] == 0) {
-                (void) HDfprintf(stderr, err16b, infile);
-                HDfclose(strm);
-                return (-1);
-            }
-            if (getMaximumDimensionSizes(in, strm) == -1) {
-                (void) HDfprintf(stderr, err16c, infile);
-                HDfclose(strm);
-                return (-1);
+            case 7: /* OUTPUT-ARCHITECTURE */
+                if (in->configOptionVector[OUTPUT_ARCH] == 1) {
+                    (void) HDfprintf(stderr, err10a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                if (getOutputArchitecture(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err10b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[OUTPUT_ARCH] = 1;
+                break;
+
+            case 8: /* OUTPUT-BYTE-ORDER */
+                if (in->configOptionVector[OUTPUT_B_ORDER] == 1) {
+                    (void) HDfprintf(stderr, err11a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                if (getOutputByteOrder(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err11b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[OUTPUT_B_ORDER] = 1;
+                break;
+
+            case 9: /* CHUNKED-DIMENSION-SIZES */
+                if (in->configOptionVector[CHUNK] == 1) {
+                    (void) HDfprintf(stderr, err12a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                /* cant appear before dimension sizes have been provided */
+                if (in->configOptionVector[DIM] == 0) {
+                    (void) HDfprintf(stderr, err12b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                if (getChunkedDimensionSizes(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err12c, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[CHUNK] = 1;
+                break;
+
+            case 10: /* COMPRESSION-TYPE */
+                if (in->configOptionVector[COMPRESS] == 1) {
+                    (void) HDfprintf(stderr, err13a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                if (getCompressionType(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err13b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[COMPRESS] = 1;
+
+                if (in->configOptionVector[COMPRESS_PARAM] == 0) {
+                    if (in->compressionType == 0)
+                        in->compressionParam = 6; /* default value if compressionType is GZIP */
+                }
+                break;
+
+            case 11: /* COMPRESSION-PARAM */
+                if (in->configOptionVector[COMPRESS_PARAM] == 1) {
+                    (void) HDfprintf(stderr, err14a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                if (getCompressionParameter(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err14b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                in->configOptionVector[COMPRESS_PARAM] = 1;
+
+                if (in->configOptionVector[COMPRESS] == 0)
+                    in->compressionType = 0;
+
+                break;
+
+            case 12: /* EXTERNAL-STORAGE */
+                if (in->configOptionVector[EXTERNALSTORE] == 1) {
+                    (void) HDfprintf(stderr, err15a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+
+                if (getExternalFilename(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err15b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[EXTERNALSTORE] = 1;
+                break;
+
+            case 13: /* MAXIMUM-DIMENSIONS */
+                if (in->configOptionVector[EXTEND] == 1) {
+                    (void) HDfprintf(stderr, err16a, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                /* cant appear before dimension sizes have been provided */
+                if (in->configOptionVector[DIM] == 0) {
+                    (void) HDfprintf(stderr, err16b, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                if (getMaximumDimensionSizes(in, strm) == -1) {
+                    (void) HDfprintf(stderr, err16c, infile);
+                    HDfclose(strm);
+                    return (-1);
+                }
+                in->configOptionVector[EXTEND] = 1;
+                break;
+
+            default:
+                break;
             }
-            in->configOptionVector[EXTEND] = 1;
-            break;
+            scanret = fscanf(strm, "%s", key);
+        }
+    }
+
+    /*
+         check if keywords obtained are valid
+         if yes, return 0 else error
+     */
+
+    if (validateConfigurationParameters(in) == -1) {
+        (void) HDfprintf(stderr, err17, infile);
+        HDfclose(strm);
+        return (-1);
+    }
+    HDfclose(strm);
+    return (0);
+}
+
+static int validateConfigurationParameters(struct Input *in)
+{
+    const char *err1 = "One or more of the required fields (RANK, DIMENSION-SIZES) missing.\n";
+    const char *err2 = "Cannot specify chunking or compression or extendible data sets with the external file option.\n";
+    const char *err3 = "Cannot specify the compression or the extendible data sets without the chunking option.\n";
+    const char *err4a = "OUTPUT-ARCHITECTURE cannot be STD if OUTPUT-CLASS is floating point (FP).\n";
+    const char *err4b = "OUTPUT-ARCHITECTURE cannot be IEEE if OUTPUT-CLASS is integer (IN).\n";
+    const char *err5 = "For OUTPUT-CLASS FP, valid values for OUTPUT-SIZE are (32, 64) .\n";
+#ifndef H5_SIZEOF_LONG_LONG
+    const char *err6 = "No support for reading 64-bit integer (INPUT-CLASS: IN, TEXTIN, UIN, TEXTUIN files\n";
+#endif
+
+    /* for class STR other parameters are ignored */
+    if (in->inputClass == 5) /* STR */
+        return (0);
+
+    if ((in->configOptionVector[DIM] != 1) || (in->configOptionVector[RANK] != 1)) {
+        (void) HDfprintf(stderr, "%s", err1);
+        return (-1);
+    }
+
+    if (in->configOptionVector[EXTERNALSTORE] == 1) {
+        if ((in->configOptionVector[COMPRESS] == 1) || (in->configOptionVector[CHUNK] == 1) || (in->configOptionVector[EXTEND] == 1)) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+    }
+
+    if ((in->configOptionVector[COMPRESS] == 1) || (in->configOptionVector[EXTEND] == 1)) {
+        if (in->configOptionVector[CHUNK] != 1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+    }
+
+    /* Arch cant be STD if O/p class is FP */
+    if (in->outputArchitecture == 1)
+        if (in->outputClass == 1) {
+            (void) HDfprintf(stderr, "%s", err4a);
+            return (-1);
+        }
+
+    /* Arch cant be IEEE if O/p class is IN */
+    if (in->outputArchitecture == 2)
+        if (in->outputClass == 0) {
+            (void) HDfprintf(stderr, "%s", err4b);
+            return (-1);
+        }
+
+    if (in->outputClass == 1)
+        if (in->outputSize != 32 && in->outputSize != 64) {
+            (void) HDfprintf(stderr, "%s", err5);
+            return (-1);
+        }
+
+#ifndef H5_SIZEOF_LONG_LONG
+    if (in->inputSize == 64 && (in->inputClass == 0 || in->inputClass == 4 || in->inputClass == 6 || in->inputClass == 7) ) {
+        (void) HDfprintf(stderr, "%s", err6);
+        return -1;
+    }
+#endif
+    return (0);
+}
+
+static int mapKeywordToIndex(char *key)
+{
+    int i;
+
+    for (i = 0; i < NUM_KEYS; i++)
+        if (!HDstrcmp(keytable[i], key))
+            return i;
+    return -1;
+}
+
+static int parsePathInfo(struct path_info *path, char *temp)
+{
+    const char  delimiter[] = "/\"";
+    char       *token;
+    int         i = 0;
+    const char *err1 = "Path string larger than MAX_PATH_NAME_LENGTH.\n";
+
+    token = HDstrtok (temp, delimiter);
+    if (HDstrlen(token) >= MAX_PATH_NAME_LENGTH) {
+        (void) HDfprintf(stderr, err1);
+        return (-1);
+    }
+    HDstrcpy(path->group[i++],token);
+
+    while (1) {
+        token = HDstrtok (NULL, delimiter);
+        if (token == NULL)
+            break;
+        if (HDstrlen(token) >= MAX_PATH_NAME_LENGTH) {
+            (void) HDfprintf(stderr, err1);
+            return (-1);
+        }
+        HDstrcpy(path->group[i++],token);
+    }
+    path->count = i;
+    return (0);
+}
+
+static int parseDimensions(struct Input *in, char *strm)
+{
+    const char  delimiter[] = ",";
+    char        temp[255];
+    char       *token;
+    int         i = 0;
+    const char *err1 = "Unable to allocate dynamic memory.\n";
+
+    HDstrncpy(temp, strm, sizeof(temp));
+    temp[sizeof(temp) - 1] = '\0';
+    HDstrtok (temp, delimiter);
+
+    while (1) {
+        token = HDstrtok (NULL, delimiter);
+        if (token == NULL)
+            break;
+        i++;
+    }
+    in->rank = i + 1;
+    if ((in->sizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) {
+        (void) HDfprintf(stderr, "%s", err1);
+        return (-1);
+    }
+
+    i = 0;
+    HDstrncpy(temp, strm, sizeof(temp));
+    temp[sizeof(temp) - 1] = '\0';
+    in->sizeOfDimension[i++]
+            = HDstrtol(HDstrtok (temp, delimiter), NULL, BASE_10);
+
+    while (1) {
+        token = HDstrtok (NULL, delimiter);
+        if (token == NULL)
+            break;
+        in->sizeOfDimension[i++] = HDstrtol(token, NULL, BASE_10);
+    }
+    return (0);
+}
+
+static int getOutputClass(struct Input *in, FILE *strm)
+{
+    char        temp[255];
+    int         kindex;
+    const char *err1 = "Unable to get 'string' value.\n";
+    const char *err2 = "Invalid value for output class.\n";
+
+    if (fscanf(strm, "%s", temp) != 1) {
+        (void) HDfprintf(stderr, "%s", err1);
+        return (-1);
+    }
+
+    if ((kindex = OutputClassStrToInt(temp)) == -1) {
+        (void) HDfprintf(stderr, "%s", err2);
+        return (-1);
+    }
+
+    in->outputClass = kindex;
+    return (0);
+}
+
+static int OutputClassStrToInt(char *temp)
+{
+    int     i;
+    char    classKeywordTable[3][15] = { "IN", "FP", "UIN" };
+    for (i = 0; i < 3; i++)
+        if (!HDstrcmp(classKeywordTable[i], temp))
+            return i;
+
+    return -1;
+}
+/* same as getInputSize. But defined separately for extensibility */
+static int getOutputSize(struct Input *in, FILE *strm)
+{
+    int         ival;
+    int         i;
+    int         outputSizeValidValues[4] = { 8, 16, 32, 64 };
+    const char *err1 = "Unable to get integer value.\n";
+    const char *err2 = "Invalid value for output size.\n";
+
+    if (fscanf(strm, "%d", (&ival)) != 1) {
+        (void) HDfprintf(stderr, "%s", err1);
+        return (-1);
+    }
+
+    for (i = 0; i < 4; i++)
+        if (outputSizeValidValues[i] == ival) {
+            in->outputSize = ival;
+            return (0);
+        }
+    (void) HDfprintf(stderr, "%s", err2);
+    return (-1);
+}
+
+static int getInputClass(struct Input *in, char * temp)
+{
+    int         kindex;
+    const char *err1 = "Invalid value for input class.\n";
+
+    if ((kindex = InputClassStrToInt(temp)) == -1) {
+        (void) HDfprintf(stderr, "%s", err1);
+        return (-1);
+    }
+
+    in->inputClass = kindex;
+    return (0);
+}
+
+static int getInputClassType(struct Input *in, char * buffer)
+{
+    int         kindex = -1;
+    const char *err1 = "Invalid value for input class.\n";
+    const char *err2 = "Invalid value for output architecture.\n";
+    const char *err3 = "Invalid value for output byte-order.\n";
+
+    if (!HDstrcmp(buffer, "H5T_STD_I8BE")) {
+        in->inputSize = 8;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I8LE")) {
+        in->inputSize = 8;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I16BE")) {
+        in->inputSize = 16;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I16LE")) {
+        in->inputSize = 16;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I32BE")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I32LE")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I64BE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_I64LE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U8BE")) {
+        in->inputSize = 8;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U8LE")) {
+        in->inputSize = 8;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U16BE")) {
+        in->inputSize = 16;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U16LE")) {
+        in->inputSize = 16;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U32BE")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U32LE")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U64BE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_U64LE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_SCHAR")) {
+        in->inputSize = 8;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_UCHAR")) {
+        in->inputSize = 8;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_SHORT")) {
+        in->inputSize = 16;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_USHORT")) {
+        in->inputSize = 16;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_INT")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_UINT")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_LONG")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_ULONG")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_LLONG")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 4;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_ULLONG")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        kindex = 7;
+    }
+    else if (!HDstrcmp(buffer, "H5T_IEEE_F32BE")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("IEEE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-        default:
-            break;
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
         }
-    }
-    /*
-     check if keywords obtained are valid
-     if yes, return 0 else error
-     */
+        in->outputByteOrder = kindex;
 
-    if (validateConfigurationParameters(in) == -1) {
-        (void) HDfprintf(stderr, err17, infile);
-        HDfclose(strm);
-        return (-1);
+        kindex = 3;
     }
+    else if (!HDstrcmp(buffer, "H5T_IEEE_F32LE")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
 
-    HDfclose(strm);
-    return (0);
-}
-
-static int validateConfigurationParameters(struct Input *in)
-{
-    const char *err1 = "One or more of the required fields (RANK, DIMENSION-SIZES) missing.\n";
-    const char *err2 = "Cannot specify chunking or compression or extendible data sets with the external file option.\n";
-    const char *err3 = "Cannot specify the compression or the extendible data sets without the chunking option.\n";
-    const char *err4a = "OUTPUT-ARCHITECTURE cannot be STD if OUTPUT-CLASS is floating point (FP).\n";
-    const char *err4b = "OUTPUT-ARCHITECTURE cannot be IEEE if OUTPUT-CLASS is integer (IN).\n";
-    const char *err5 = "For OUTPUT-CLASS FP, valid values for OUTPUT-SIZE are (32, 64) .\n";
-#ifndef H5_SIZEOF_LONG_LONG
-    const char *err6 = "No support for reading 64-bit integer (INPUT-CLASS: IN, TEXTIN, UIN, TEXTUIN files\n";
-#endif
+        if ((kindex = OutputArchStrToInt("IEEE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-    /* for class STR other parameters are ignored */
-    if (in->inputClass == 5) /* STR */
-        return (0);
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
 
-    if ((in->configOptionVector[DIM] != 1) || (in->configOptionVector[RANK] != 1)) {
-        (void) HDfprintf(stderr, "%s", err1);
-        return (-1);
+        kindex = 3;
     }
+    else if (!HDstrcmp(buffer, "H5T_IEEE_F64BE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
 
-    if (in->configOptionVector[EXTERNALSTORE] == 1) {
-        if ((in->configOptionVector[COMPRESS] == 1) || (in->configOptionVector[CHUNK] == 1) || (in->configOptionVector[EXTEND] == 1)) {
+        if ((kindex = OutputArchStrToInt("IEEE")) == -1) {
             (void) HDfprintf(stderr, "%s", err2);
             return (-1);
         }
-    }
+        in->outputArchitecture = kindex;
 
-    if ((in->configOptionVector[COMPRESS] == 1) || (in->configOptionVector[EXTEND] == 1)) {
-        if (in->configOptionVector[CHUNK] != 1) {
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
             (void) HDfprintf(stderr, "%s", err3);
             return (-1);
         }
+        in->outputByteOrder = kindex;
+
+        kindex = 3;
     }
+    else if (!HDstrcmp(buffer, "H5T_IEEE_F64LE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
 
-    /* Arch cant be STD if O/p class is FP */
-    if (in->outputArchitecture == 1)
-        if (in->outputClass == 1) {
-            (void) HDfprintf(stderr, "%s", err4a);
+        if ((kindex = OutputArchStrToInt("IEEE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
             return (-1);
         }
+        in->outputArchitecture = kindex;
 
-    /* Arch cant be IEEE if O/p class is IN */
-    if (in->outputArchitecture == 2)
-        if (in->outputClass == 0) {
-            (void) HDfprintf(stderr, "%s", err4b);
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
             return (-1);
         }
+        in->outputByteOrder = kindex;
 
-    if (in->outputClass == 1)
-        if (in->outputSize != 32 && in->outputSize != 64) {
-            (void) HDfprintf(stderr, "%s", err5);
+        kindex = 3;
+    }
+    else if (!HDstrcmp(buffer, "H5T_VAX_F32")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        kindex = 3;
+    }
+    else if (!HDstrcmp(buffer, "H5T_VAX_F64")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        kindex = 3;
+    }
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_FLOAT")) {
+        in->inputSize = 32;
+        in->configOptionVector[INPUT_SIZE] = 1;
+
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
             return (-1);
         }
+        in->outputArchitecture = kindex;
 
-#ifndef H5_SIZEOF_LONG_LONG
-    if (in->inputSize == 64 && (in->inputClass == 0 || in->inputClass == 4 || in->inputClass == 6 || in->inputClass == 7) ) {
-        (void) HDfprintf(stderr, "%s", err6);
-        return -1;
+        kindex = 3;
     }
-#endif
-    return (0);
-}
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_DOUBLE")) {
+        in->inputSize = 64;
+        in->configOptionVector[INPUT_SIZE] = 1;
 
-static int mapKeywordToIndex(char *key)
-{
-    int i;
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-    for (i = 0; i < NUM_KEYS; i++)
-        if (!HDstrcmp(keytable[i], key))
-            return i;
-    return -1;
-}
+        kindex = 3;
+    }
+#if H5_SIZEOF_LONG_DOUBLE !=0
+    else if (!HDstrcmp(buffer, "H5T_NATIVE_LDOUBLE")) {
+        in->inputSize = H5_SIZEOF_LONG_DOUBLE;
+        in->configOptionVector[INPUT_SIZE] = 1;
 
-static int parsePathInfo(struct path_info *path, char *temp)
-{
-    const char  delimiter[] = "/";
-    char       *token;
-    int         i = 0;
-    const char *err1 = "Path string larger than MAX_PATH_NAME_LENGTH.\n";
+        if ((kindex = OutputArchStrToInt("NATIVE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-    token = HDstrtok (temp, delimiter);
-    if (HDstrlen(token) >= MAX_PATH_NAME_LENGTH) {
-        (void) HDfprintf(stderr, err1);
-        return (-1);
+        kindex = 3;
     }
-    HDstrcpy(path->group[i++],token);
+#endif
+    else if(!HDstrcmp(buffer, "H5T_TIME: not yet implemented")) {
+        kindex = -1;
+    }
+    else if(!HDstrcmp(buffer, "H5T_STRING")) {
+        kindex = 5;
+    }
+    /*    case H5T_BITFIELD: */
+    else if (!HDstrcmp(buffer, "H5T_STD_B8BE")) {
 
-    while (1) {
-        token = HDstrtok (NULL, delimiter);
-        if (token == NULL)
-            break;
-        if (HDstrlen(token) >= MAX_PATH_NAME_LENGTH) {
-            (void) HDfprintf(stderr, err1);
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
             return (-1);
         }
-        HDstrcpy(path->group[i++],token);
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = -1;
     }
-    path->count = i;
-    return (0);
-}
+    else if (!HDstrcmp(buffer, "H5T_STD_B8LE")) {
 
-static int parseDimensions(struct Input *in, char *strm)
-{
-    const char  delimiter[] = ",";
-    char        temp[255];
-    char       *token;
-    int         i = 0;
-    const char *err1 = "Unable to allocate dynamic memory.\n";
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-    HDstrncpy(temp, strm, sizeof(temp));
-    temp[sizeof(temp) - 1] = '\0';
-    HDstrtok (temp, delimiter);
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
 
-    while (1) {
-        token = HDstrtok (NULL, delimiter);
-        if (token == NULL)
-            break;
-        i++;
-    }
-    in->rank = i + 1;
-    if ((in->sizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) {
-        (void) HDfprintf(stderr, "%s", err1);
-        return (-1);
+        kindex = -1;
     }
+    else if (!HDstrcmp(buffer, "H5T_STD_B16BE")) {
 
-    i = 0;
-    HDstrncpy(temp, strm, sizeof(temp));
-    temp[sizeof(temp) - 1] = '\0';
-    in->sizeOfDimension[i++]
-            = HDstrtol(HDstrtok (temp, delimiter), NULL, BASE_10);
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-    while (1) {
-        token = HDstrtok (NULL, delimiter);
-        if (token == NULL)
-            break;
-        in->sizeOfDimension[i++] = HDstrtol(token, NULL, BASE_10);
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = -1;
     }
-    return (0);
-}
+    else if (!HDstrcmp(buffer, "H5T_STD_B16LE")) {
 
-static int getOutputClass(struct Input *in, FILE *strm)
-{
-    char        temp[255];
-    int         kindex;
-    const char *err1 = "Unable to get 'string' value.\n";
-    const char *err2 = "Invalid value for output class.\n";
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-    if (fscanf(strm, "%s", temp) != 1) {
-        (void) HDfprintf(stderr, "%s", err1);
-        return (-1);
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = -1;
     }
+    else if (!HDstrcmp(buffer, "H5T_STD_B32BE")) {
 
-    if ((kindex = OutputClassStrToInt(temp)) == -1) {
-        (void) HDfprintf(stderr, "%s", err2);
-        return (-1);
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = -1;
     }
+    else if (!HDstrcmp(buffer, "H5T_STD_B32LE")) {
 
-    in->outputClass = kindex;
-    return (0);
-}
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
 
-static int OutputClassStrToInt(char *temp)
-{
-    int     i;
-    char    classKeywordTable[3][15] = { "IN", "FP", "UIN" };
-    for (i = 0; i < 3; i++)
-        if (!HDstrcmp(classKeywordTable[i], temp))
-            return i;
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
 
-    return -1;
-}
-/* same as getInputSize. But defined separately for extensibility */
-static int getOutputSize(struct Input *in, FILE *strm)
-{
-    int         ival;
-    int         i;
-    int         outputSizeValidValues[4] = { 8, 16, 32, 64 };
-    const char *err1 = "Unable to get integer value.\n";
-    const char *err2 = "Invalid value for output size.\n";
+        kindex = -1;
+    }
+    else if (!HDstrcmp(buffer, "H5T_STD_B64BE")) {
 
-    if (fscanf(strm, "%d", (&ival)) != 1) {
-        (void) HDfprintf(stderr, "%s", err1);
-        return (-1);
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
+        }
+        in->outputArchitecture = kindex;
+
+        if ((kindex = OutputByteOrderStrToInt("BE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
+
+        kindex = -1;
     }
+    else if (!HDstrcmp(buffer, "H5T_STD_B64LE")) {
 
-    for (i = 0; i < 4; i++)
-        if (outputSizeValidValues[i] == ival) {
-            in->outputSize = ival;
-            return (0);
+        if ((kindex = OutputArchStrToInt("STD")) == -1) {
+            (void) HDfprintf(stderr, "%s", err2);
+            return (-1);
         }
-    (void) HDfprintf(stderr, "%s", err2);
-    return (-1);
-}
+        in->outputArchitecture = kindex;
 
-static int getInputClass(struct Input *in, char * temp)
-{
-    int         kindex;
-    const char *err1 = "Invalid value for input class.\n";
+        if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+            (void) HDfprintf(stderr, "%s", err3);
+            return (-1);
+        }
+        in->outputByteOrder = kindex;
 
-    if ((kindex = InputClassStrToInt(temp)) == -1) {
+        kindex = -1;
+    }
+    /*    case H5T_OPAQUE: */
+    else if(!HDstrcmp(buffer, "H5T_OPAQUE")) {
+        kindex = -1;
+    }
+    /*    case H5T_COMPOUND: */
+    else if(!HDstrcmp(buffer, "H5T_COMPOUND")) {
+        kindex = -1;
+    }
+    /*    case H5T_REFERENCE: */
+    else if(!HDstrcmp(buffer, "H5T_REFERENCE")) {
+        kindex = -1;
+    }
+    /*    case H5T_ENUM: */
+    else if(!HDstrcmp(buffer, "H5T_ENUM")) {
+        kindex = -1;
+    }
+    /*    case H5T_VLEN: */
+    else if(!HDstrcmp(buffer, "H5T_VLEN")) {
+        kindex = -1;
+    }
+    /*    case H5T_ARRAY: */
+    else if(!HDstrcmp(buffer, "H5T_ARRAY")) {
+        kindex = -1;
+    }
+
+    if (kindex == -1) {
         (void) HDfprintf(stderr, "%s", err1);
         return (-1);
     }
 
+    /*set default value for output-size */
+    if (in->configOptionVector[OUTPUT_SIZE] == 0)
+        in->outputSize = in->inputSize;
+#ifdef H5DEBUGIMPORT
+    printf("h5dump DATATYPE STRING %d inputSize\n", in->inputSize);
+    printf("h5dump DATATYPE STRING %d outputSize\n", in->outputSize);
+#endif
+
     in->inputClass = kindex;
     return (0);
 }
@@ -1910,6 +3408,7 @@ void setDefaultValues(struct Input *in, int count)
     char    temp[255];
     char    num[255];
 
+    in->h5dumpInput = 0;
     in->inputClass = 3; /* FP */
     in->inputSize = 32;
     in->outputClass = 1; /* FP */
@@ -2348,6 +3847,9 @@ static int process(struct Options *opt)
             /*create data type */
             intype = createInputDataType(in);
             outtype = createOutputDataType(in);
+#ifdef H5DEBUGIMPORT
+            printf("process intype %d outtype %d\n", intype, outtype);
+#endif
 
             /* create property list */
             proplist = H5Pcreate(H5P_DATASET_CREATE);
@@ -2498,7 +4000,7 @@ void help(char *name)
     (void) HDfprintf(stdout,
             "\t  The user can specify output type and storage properties in \n");
     (void) HDfprintf(stdout,
-            "\t  the configuration file. The user is requited to specify the \n");
+            "\t  the configuration file. The user is required to specify the \n");
     (void) HDfprintf(stdout,
             "\t  path of the dataset. If the groups in the path leading to \n");
     (void) HDfprintf(stdout,
@@ -2511,7 +4013,7 @@ void help(char *name)
     (void) HDfprintf(stdout,
             "\t  provide the class and size of output data to be written to \n");
     (void) HDfprintf(stdout,
-            "\t  the dataset and may optionally specify the output-architecure,\n");
+            "\t  the dataset and may optionally specify the output-architecture,\n");
     (void) HDfprintf(stdout,
             "\t  and the output-byte-order. If output-architecture is not \n");
     (void) HDfprintf(stdout,
@@ -2596,7 +4098,11 @@ void help(char *name)
     (void) HDfprintf(stdout,
             "\t  The configuration file is an ASCII text file and must be \n");
     (void) HDfprintf(stdout,
-            "\t  organized as \"CONFIG-KEYWORD VALUE\" pairs, one pair on each \n");
+            "\t  the ddl formatted file (without data values) produced by h5dump \n");
+    (void) HDfprintf(stdout,
+            "\t  when used with the options '-o outfilename -b' of a single dataset (-d) \n");
+    (void) HDfprintf(stdout,
+            "\t  OR organized as \"CONFIG-KEYWORD VALUE\" pairs, one pair on each \n");
     (void) HDfprintf(stdout, "\t  line.\n\n");
     (void) HDfprintf(stdout,
             "\t   The configuration file may have the following keywords each \n");
@@ -2612,7 +4118,7 @@ void help(char *name)
     (void) HDfprintf(stdout, "\t  Optional KEYWORDS:\n");
     (void) HDfprintf(stdout, "\t    OUTPUT-ARCHITECTURE\n");
     (void) HDfprintf(stdout, "\t    OUTPUT-BYTE-ORDER\n");
-    (void) HDfprintf(stdout, "\t      CHUNKED-DIMENSION-SIZES\n");
+    (void) HDfprintf(stdout, "\t    CHUNKED-DIMENSION-SIZES\n");
     (void) HDfprintf(stdout, "\t    COMPRESSION-TYPE\n");
     (void) HDfprintf(stdout, "\t    COMPRESSION-PARAM\n");
     (void) HDfprintf(stdout, "\t    EXTERNAL-STORAGE\n");
@@ -2622,7 +4128,7 @@ void help(char *name)
     (void) HDfprintf(stdout, "\t      Strings separated by spaces to represent\n");
     (void) HDfprintf(stdout, "\t      the path of the data-set. If the groups in\n");
     (void) HDfprintf(stdout,
-            "\t      the path do no exist, they will be created. \n");
+            "\t      the path do not exist, they will be created. \n");
     (void) HDfprintf(stdout, "\t      For example,\n");
     (void) HDfprintf(stdout, "\t        PATH grp1/grp2/dataset1\n");
     (void) HDfprintf(stdout, "\t        PATH: keyword\n");
diff --git a/tools/h5import/h5import.h b/tools/h5import/h5import.h
index dbc6844..c686624 100644
--- a/tools/h5import/h5import.h
+++ b/tools/h5import/h5import.h
@@ -44,20 +44,20 @@
 #define MAX_NUM_DIMENSION  32
 #define BASE_10 10
 
-#define CHUNK            0
-#define COMPRESS         1
-#define EXTEND           2
-#define EXTERNALSTORE    3
+#define PATH             0
+#define INPUT_CLASS      1
+#define INPUT_SIZE       2
+#define RANK             3
 #define DIM              4
-#define RANK             5
-#define PATH             6
-#define INPUT_CLASS      7
-#define INPUT_SIZE       8
-#define OUTPUT_CLASS     9
-#define OUTPUT_SIZE     10
-#define OUTPUT_ARCH     11
-#define OUTPUT_B_ORDER  12
-#define COMPRESS_PARAM  13
+#define OUTPUT_CLASS     5
+#define OUTPUT_SIZE      6
+#define OUTPUT_ARCH      7
+#define OUTPUT_B_ORDER   8
+#define CHUNK            9
+#define COMPRESS         10
+#define COMPRESS_PARAM   11
+#define EXTERNALSTORE    12
+#define EXTEND           13
 
 /* data types */
 #define H5DT_INT8      signed char
@@ -80,6 +80,7 @@ struct path_info
 
 struct Input
 {
+    int h5dumpInput;
     struct path_info path;
     int inputClass;
     int inputSize;
@@ -198,6 +199,7 @@ static int  parsePathInfo(struct path_info *path, char *strm);
 static int  parseDimensions(struct Input *in, char *strm);
 static int  getInputSize(struct Input *in, int ival);
 static int  getInputClass(struct Input *in, char * strm);
+static int  getInputClassType(struct Input *in, char * strm);
 static int  InputClassStrToInt(char *temp);
 static int  getRank(struct Input *in, FILE *strm);
 static int  getDimensionSizes(struct Input *in, FILE *strm);
@@ -225,6 +227,7 @@ static int  readUIntegerData(FILE *strm, struct Input *in);
 static int  allocateUIntegerStorage(struct Input *in);
 static int  validateConfigurationParameters(struct Input *in);
 static int  processStrData(FILE *strm, struct Input *in, hid_t file_id);
+static int  processStrHDFData(FILE *strm, struct Input *in, hid_t file_id);
 
 #endif  /* H5IMPORT_H__ */
 
diff --git a/tools/h5import/h5importtest.c b/tools/h5import/h5importtest.c
index 434cba7..49f977c 100644
--- a/tools/h5import/h5importtest.c
+++ b/tools/h5import/h5importtest.c
@@ -165,21 +165,38 @@ main(void)
 
 #ifndef UNICOS
 
+#ifdef REBUILDTEXTFILES
  /*-------------------------------------------------------------------------
-  * TOOLTEST txtin16.txt -c $srcdir/testfiles/txtin16.conf -o txtin16.h5
+  * TOOLTEST txtin8.txt -c $srcdir/testfiles/txtin8.conf -o txtin8.h5
   *-------------------------------------------------------------------------
   */
 
+    sp = HDfopen("txtin8.txt", "w");
+    for (k = 0; k < npln; k++)
+    {
+       for (i = 0; i < nrow; i++)
+       {
+           for (j = 0; j < ncol; j++)
+               (void) fprintf(sp, "%10u", b8i3[k][i][j]);
+           (void) fprintf(sp, "\n");
+       }
+    }
+    (void) HDfclose(sp);
+
+ /*-------------------------------------------------------------------------
+  * TOOLTEST txtin16.txt -c $srcdir/testfiles/txtin16.conf -o txtin16.h5
+  *-------------------------------------------------------------------------
+  */
 
     sp = HDfopen("txtin16.txt", "w");
     for (k = 0; k < npln; k++)
     {
-        for (i = 0; i < nrow; i++)
-        {
-            for (j = 0; j < ncol; j++)
-                (void) fprintf(sp, "%10u", b16i3[k][i][j]);
-            (void) fprintf(sp, "\n");
-        }
+      for (i = 0; i < nrow; i++)
+      {
+          for (j = 0; j < ncol; j++)
+              (void) fprintf(sp, "%10u", b16i3[k][i][j]);
+          (void) fprintf(sp, "\n");
+      }
     }
     (void) HDfclose(sp);
 
@@ -199,6 +216,7 @@ main(void)
         }
     }
     (void) HDfclose(sp);
+#endif
 
  /*-------------------------------------------------------------------------
   * TOOLTEST binin32.bin -c $srcdir/testfiles/binin32.conf -o binin32.h5
diff --git a/tools/h5import/h5importtestutil.sh b/tools/h5import/h5importtestutil.sh
deleted file mode 100755
index 943b194..0000000
--- a/tools/h5import/h5importtestutil.sh
+++ /dev/null
@@ -1,248 +0,0 @@
-#!/bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5.  The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html.  COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page.  It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
-# access to either file, you may request a copy from help at hdfgroup.org.
-#
-# HDF Utilities Test script
-# Usage: h5importtestutil.sh [machine-type]
-
-TESTNAME=h5import
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-CP='cp'
-
-# initialize errors variable
-nerrors=0
-
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
-# source dirs
-SRC_TOOLS="$srcdir/.."
-SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
-
-# testfiles source dirs for tools
-SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
-SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
-SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
-SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
-SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
-SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
-
-TESTDIR=./testfiles
-test -d $TESTDIR || mkdir $TESTDIR
-
-######################################################################
-# test files
-# --------------------------------------------------------------------
-# All the test files copy from source directory to test directory
-# NOTE: Keep this framework to add/remove test files.
-#       Any test files from other tools can be used in this framework.
-#       This list are also used for checking exist.
-#       Comment '#' without space can be used.
-# --------------------------------------------------------------------
-LIST_HDF5_TEST_FILES="
-$SRC_H5IMPORT_TESTFILES/binfp64.h5
-$SRC_H5IMPORT_TESTFILES/binin8.h5
-$SRC_H5IMPORT_TESTFILES/binin8w.h5
-$SRC_H5IMPORT_TESTFILES/binin16.h5
-$SRC_H5IMPORT_TESTFILES/binin32.h5
-$SRC_H5IMPORT_TESTFILES/binuin16.h5
-$SRC_H5IMPORT_TESTFILES/binuin32.h5
-$SRC_H5IMPORT_TESTFILES/txtfp32.h5
-$SRC_H5IMPORT_TESTFILES/txtfp64.h5
-$SRC_H5IMPORT_TESTFILES/txtin8.h5
-$SRC_H5IMPORT_TESTFILES/txtin16.h5
-$SRC_H5IMPORT_TESTFILES/txtin32.h5
-$SRC_H5IMPORT_TESTFILES/txtuin16.h5
-$SRC_H5IMPORT_TESTFILES/txtuin32.h5
-$SRC_H5IMPORT_TESTFILES/txtstr.h5
-$SRC_H5IMPORT_TESTFILES/textpfe.h5
-"
-
-LIST_OTHER_TEST_FILES="
-$SRC_H5IMPORT_TESTFILES/binfp64.conf
-$SRC_H5IMPORT_TESTFILES/binin8.conf
-$SRC_H5IMPORT_TESTFILES/binin8w.conf
-$SRC_H5IMPORT_TESTFILES/binin16.conf
-$SRC_H5IMPORT_TESTFILES/binin32.conf
-$SRC_H5IMPORT_TESTFILES/binuin16.conf
-$SRC_H5IMPORT_TESTFILES/binuin32.conf
-$SRC_H5IMPORT_TESTFILES/txtfp32.conf
-$SRC_H5IMPORT_TESTFILES/txtfp64.conf
-$SRC_H5IMPORT_TESTFILES/txtin8.conf
-$SRC_H5IMPORT_TESTFILES/txtin16.conf
-$SRC_H5IMPORT_TESTFILES/txtin32.conf
-$SRC_H5IMPORT_TESTFILES/txtuin16.conf
-$SRC_H5IMPORT_TESTFILES/txtuin32.conf
-$SRC_H5IMPORT_TESTFILES/textpfe.conf
-$SRC_H5IMPORT_TESTFILES/txtstr.conf
-$SRC_H5IMPORT_TESTFILES/txtfp32.txt
-$SRC_H5IMPORT_TESTFILES/txtfp64.txt
-$SRC_H5IMPORT_TESTFILES/txtuin32.txt
-$SRC_H5IMPORT_TESTFILES/txtin16.txt
-$SRC_H5IMPORT_TESTFILES/txtin32.txt
-$SRC_H5IMPORT_TESTFILES/textpfe64.txt
-$SRC_H5IMPORT_TESTFILES/txtstr.txt
-"
-
-#
-# copy test files and expected output files from source dirs to test dir
-#
-COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES"
-
-COPY_TESTFILES_TO_TESTDIR()
-{
-    # copy test files. Used -f to make sure get a new copy
-    for tstfile in $COPY_TESTFILES
-    do
-        # ignore '#' comment
-        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
-        RET=$?
-        if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile"
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
-            fi
-        fi
-    done
-}
-
-TESTING() {
-   SPACES="                                                               "
-   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-TOOLTEST()
-{
-err=0
-$RUNSERIAL ./h5import $*
-$RUNSERIAL ../h5dump/h5dump $5 >log2
-
-cd tmp_testfiles
-$RUNSERIAL ../../h5dump/h5dump $5 >log1
-cd ..
-
-cmp -s tmp_testfiles/log1 log2 || err=1
-rm -f log2 tmp_testfiles/log1
-if [ $err -eq 1 ]; then
-nerrors="` expr $nerrors + 1 `";
-  echo "*FAILED*"
-else
-  echo " PASSED"
-fi
-}
-
-echo "" 
-echo "=============================="
-echo "H5IMPORT tests started"
-echo "=============================="
-
-if [ -f h5import -a -f h5importtest ]; then
-#echo "** Testing h5import  ***"
-
-rm -f  output.h5 log1 tx* b* *.dat
-
-# prepare for test
-COPY_TESTFILES_TO_TESTDIR
-
-mkdir tmp_testfiles
-$CP $TESTDIR/*.h5 ./tmp_testfiles/
-
-$RUNSERIAL ./h5importtest
-
-################################################
-###        T H E   T E S T S
-################################################
-
-TESTING "ASCII I32 rank 3 - Output BE " ;
-TOOLTEST $TESTDIR/txtin16.txt -c $TESTDIR/txtin32.conf -o txtin32.h5
-
-TESTING "ASCII I16 rank 3 - Output LE - CHUNKED - extended" 
-TOOLTEST $TESTDIR/txtin16.txt -c $TESTDIR/txtin16.conf -o txtin16.h5
-
-
-TESTING "ASCII I8 - rank 3 - Output I8 LE-Chunked+Extended+Compressed " 
-TOOLTEST $TESTDIR/txtin16.txt -c $TESTDIR/txtin8.conf  -o txtin8.h5
-
-TESTING "ASCII UI32 - rank 3 - Output BE" 
-TOOLTEST $TESTDIR/txtuin32.txt -c $TESTDIR/txtuin32.conf -o txtuin32.h5
-
-TESTING "ASCII UI16 - rank 2 - Output LE+Chunked+Compressed " 
-TOOLTEST $TESTDIR/txtuin32.txt -c $TESTDIR/txtuin16.conf -o txtuin16.h5
-
-TESTING "ASCII F32 - rank 3 - Output LE " 
-TOOLTEST $TESTDIR/txtfp32.txt -c $TESTDIR/txtfp32.conf -o txtfp32.h5
-
-
-TESTING "ASCII F64 - rank 3 - Output BE + CHUNKED+Extended+Compressed " 
-TOOLTEST $TESTDIR/txtfp64.txt -c $TESTDIR/txtfp64.conf -o txtfp64.h5
-
-TESTING "BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " 
-TOOLTEST binfp64.bin -c $TESTDIR/binfp64.conf -o binfp64.h5
-
-
-TESTING "BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " 
-TOOLTEST binin16.bin -c $TESTDIR/binin16.conf -o binin16.h5
-
-
-TESTING "BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " 
-TOOLTEST binin8.bin -c $TESTDIR/binin8.conf  -o binin8.h5
-
-
-TESTING "BINARY I32 - rank 3 - Output BE + CHUNKED " 
-TOOLTEST binin32.bin -c $TESTDIR/binin32.conf -o binin32.h5
-
-
-TESTING "BINARY UI16 - rank 3 - Output byte BE + CHUNKED " 
-TOOLTEST binuin16.bin -c $TESTDIR/binuin16.conf -o binuin16.h5
-
-TESTING "BINARY UI32 - rank 3 - Output LE + CHUNKED " 
-TOOLTEST binuin32.bin -c $TESTDIR/binuin32.conf -o binuin32.h5
-
-
-TESTING "STR" 
-TOOLTEST $TESTDIR/txtstr.txt -c $TESTDIR/txtstr.conf -o txtstr.h5
-
-TESTING "BINARY I8 CR LF EOF" 
-TOOLTEST binin8w.bin -c $TESTDIR/binin8w.conf -o binin8w.h5
-
-TESTING "ASCII F64 - rank 1 - INPUT-CLASS TEXTFPE " 
-TOOLTEST $TESTDIR/textpfe64.txt -c $TESTDIR/textpfe.conf -o textpfe.h5
-
-
-
-rm -f  txtin32.txt txtin16.txt *.bin *.h5
-rm -rf tmp_testfiles
-else
-  echo "** h5import or h5importtest not available ***"
-  nerrors="` expr $nerrors + 1 `";
-fi
-
-#
-# Check errors result
-if test $nerrors -eq 0 ; then
-    echo "All $TESTNAME tests passed."
-    exit $EXIT_SUCCESS
-else
-    echo "$TESTNAME tests failed with $nerrors errors."
-    exit $EXIT_FAILURE
-fi
diff --git a/tools/h5import/h5importtestutil.sh.in b/tools/h5import/h5importtestutil.sh.in
new file mode 100755
index 0000000..fd21dc1
--- /dev/null
+++ b/tools/h5import/h5importtestutil.sh.in
@@ -0,0 +1,361 @@
+#!/bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5.  The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html.  COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page.  It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+# access to either file, you may request a copy from help at hdfgroup.org.
+#
+# HDF Utilities Test script
+# Usage: h5importtestutil.sh [machine-type]
+
+srcdir=@srcdir@
+
+# Determine which filters are available
+USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
+
+TESTNAME=h5import
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
+
+# initialize errors variable
+nerrors=0
+
+# source dirs
+SRC_TOOLS="$srcdir/.."
+SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+
+# testfiles source dirs for tools
+SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
+SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
+SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
+SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
+SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
+SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
+SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
+
+TESTDIR=./testfiles
+test -d $TESTDIR || mkdir $TESTDIR
+
+######################################################################
+# test files
+# --------------------------------------------------------------------
+# All the test files copy from source directory to test directory
+# NOTE: Keep this framework to add/remove test files.
+#       Any test files from other tools can be used in this framework.
+#       This list are also used for checking exist.
+#       Comment '#' without space can be used.
+# --------------------------------------------------------------------
+LIST_HDF5_TEST_FILES="
+$SRC_H5IMPORT_TESTFILES/binfp64.h5
+$SRC_H5IMPORT_TESTFILES/binin8.h5
+$SRC_H5IMPORT_TESTFILES/binin8w.h5
+$SRC_H5IMPORT_TESTFILES/binin16.h5
+$SRC_H5IMPORT_TESTFILES/binin32.h5
+$SRC_H5IMPORT_TESTFILES/binuin16.h5
+$SRC_H5IMPORT_TESTFILES/binuin32.h5
+$SRC_H5IMPORT_TESTFILES/txtfp32.h5
+$SRC_H5IMPORT_TESTFILES/txtfp64.h5
+$SRC_H5IMPORT_TESTFILES/txtin8.h5
+$SRC_H5IMPORT_TESTFILES/txtin16.h5
+$SRC_H5IMPORT_TESTFILES/txtin32.h5
+$SRC_H5IMPORT_TESTFILES/txtuin16.h5
+$SRC_H5IMPORT_TESTFILES/txtuin32.h5
+$SRC_H5IMPORT_TESTFILES/txtstr.h5
+$SRC_H5IMPORT_TESTFILES/textpfe.h5
+"
+
+LIST_OTHER_TEST_FILES="
+$SRC_H5IMPORT_TESTFILES/binfp64.conf
+$SRC_H5IMPORT_TESTFILES/binin8.conf
+$SRC_H5IMPORT_TESTFILES/binin8w.conf
+$SRC_H5IMPORT_TESTFILES/binin16.conf
+$SRC_H5IMPORT_TESTFILES/binin32.conf
+$SRC_H5IMPORT_TESTFILES/binuin16.conf
+$SRC_H5IMPORT_TESTFILES/binuin32.conf
+$SRC_H5IMPORT_TESTFILES/txtfp32.conf
+$SRC_H5IMPORT_TESTFILES/txtfp64.conf
+$SRC_H5IMPORT_TESTFILES/txtin8.conf
+$SRC_H5IMPORT_TESTFILES/txtin16.conf
+$SRC_H5IMPORT_TESTFILES/txtin32.conf
+$SRC_H5IMPORT_TESTFILES/txtuin16.conf
+$SRC_H5IMPORT_TESTFILES/txtuin32.conf
+$SRC_H5IMPORT_TESTFILES/textpfe.conf
+$SRC_H5IMPORT_TESTFILES/txtstr.conf
+$SRC_H5IMPORT_TESTFILES/txtfp32.txt
+$SRC_H5IMPORT_TESTFILES/txtfp64.txt
+$SRC_H5IMPORT_TESTFILES/txtuin16.txt
+$SRC_H5IMPORT_TESTFILES/txtuin32.txt
+$SRC_H5IMPORT_TESTFILES/txtin8.txt
+$SRC_H5IMPORT_TESTFILES/txtin16.txt
+$SRC_H5IMPORT_TESTFILES/txtin32.txt
+$SRC_H5IMPORT_TESTFILES/textpfe64.txt
+$SRC_H5IMPORT_TESTFILES/txtstr.txt
+$SRC_H5IMPORT_TESTFILES/dbinfp64.h5.txt
+$SRC_H5IMPORT_TESTFILES/dbinin8.h5.txt
+$SRC_H5IMPORT_TESTFILES/dbinin8w.h5.txt
+$SRC_H5IMPORT_TESTFILES/dbinin16.h5.txt
+$SRC_H5IMPORT_TESTFILES/dbinin32.h5.txt
+$SRC_H5IMPORT_TESTFILES/dbinuin16.h5.txt
+$SRC_H5IMPORT_TESTFILES/dbinuin32.h5.txt
+$SRC_H5IMPORT_TESTFILES/dtxtstr.h5.txt
+"
+
+#
+# copy test files and expected output files from source dirs to test dir
+#
+COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES"
+
+COPY_TESTFILES_TO_TESTDIR()
+{
+    # copy test files. Used -f to make sure get a new copy
+    for tstfile in $COPY_TESTFILES
+    do
+        # ignore '#' comment
+        echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
+        RET=$?
+        if [ $RET -eq 1 ]; then
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
+            fi
+        fi
+    done
+}
+
+TESTING() {
+   SPACES="                                                               "
+   echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Print a "SKIP" message
+SKIP() {
+   TESTING $TESTNAME $@
+    echo  " -SKIP-"
+}
+
+TOOLTEST()
+{
+err=0
+$RUNSERIAL ./h5import $*
+$RUNSERIAL ../h5dump/h5dump $5 >log2
+
+cd tmp_testfiles
+$RUNSERIAL ../../h5dump/h5dump $5 >log1
+cd ..
+
+cmp -s tmp_testfiles/log1 log2 || err=1
+rm -f log2 tmp_testfiles/log1
+if [ $err -eq 1 ]; then
+nerrors="` expr $nerrors + 1 `";
+  echo "*FAILED*"
+else
+  echo " PASSED"
+fi
+}
+
+# Use h5dump output as input to h5import for binary numbers
+# Use h5diff to verify results
+TOOLTEST2()
+{
+err=0
+$RUNSERIAL ../h5dump/h5dump -p -d $1 -o d$2.bin -b tmp_testfiles/$2 > d$2.dmp
+$RUNSERIAL ./h5import d$2.bin -c d$2.dmp -o d$2 > d$2.imp
+$RUNSERIAL ../h5diff/h5diff -v d$2 tmp_testfiles/$2 $1 $1 > log2
+$CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1
+
+cmp -s log1 log2 || err=1
+rm -f log1 log2
+if [ $err -eq 1 ]; then
+nerrors="` expr $nerrors + 1 `";
+  echo "*FAILED*"
+else
+  echo " PASSED"
+fi
+}
+
+# Same as TOOLTEST2 except for strings
+# Use h5dump output as input to h5import for strings
+# Use h5diff to verify results
+TOOLTEST3()
+{
+err=0
+$RUNSERIAL ../h5dump/h5dump -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp
+$RUNSERIAL ./h5import d$2.bin -c d$2.dmp -o d$2 > d$2.imp
+$RUNSERIAL ../h5diff/h5diff -v d$2 tmp_testfiles/$2 $1 $1 > log2
+$CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1
+
+cmp -s log1 log2 || err=1
+rm -f log1 log2
+if [ $err -eq 1 ]; then
+nerrors="` expr $nerrors + 1 `";
+  echo "*FAILED*"
+else
+  echo " PASSED"
+fi
+}
+
+# Same as TOOLTEST3 except for h5diff uses report mode without warnings
+# Use h5dump output as input to h5import for strings
+# Use h5diff to verify results
+TOOLTEST4()
+{
+err=0
+$RUNSERIAL ../h5dump/h5dump -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp
+$RUNSERIAL ./h5import d$2.bin -c d$2.dmp -o d$2 > d$2.imp
+$RUNSERIAL ../h5diff/h5diff -r d$2 tmp_testfiles/$2 $1 $1 > log2
+$CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1
+
+
+cmp -s log1 log2 || err=1
+rm -f log1 log2
+if [ $err -eq 1 ]; then
+nerrors="` expr $nerrors + 1 `";
+  echo "*FAILED*"
+else
+  echo " PASSED"
+fi
+}
+
+echo "" 
+echo "=============================="
+echo "H5IMPORT tests started"
+echo "=============================="
+
+if [ -f h5import -a -f h5importtest ]; then
+#echo "** Testing h5import  ***"
+
+rm -f  output.h5 log1 tx* b* *.dat
+
+# prepare for test
+COPY_TESTFILES_TO_TESTDIR
+
+mkdir tmp_testfiles
+$CP $TESTDIR/*.h5 ./tmp_testfiles/
+
+$RUNSERIAL ./h5importtest
+
+################################################
+###        T H E   T E S T S
+################################################
+
+TESTING "ASCII I32 rank 3 - Output BE " ;
+TOOLTEST $TESTDIR/txtin32.txt -c $TESTDIR/txtin32.conf -o txtin32.h5
+
+TESTING "ASCII I16 rank 3 - Output LE - CHUNKED - extended" 
+TOOLTEST $TESTDIR/txtin16.txt -c $TESTDIR/txtin16.conf -o txtin16.h5
+
+TESTING "ASCII I8 - rank 3 - Output I8 LE-Chunked+Extended+Compressed " 
+TOOLTEST $TESTDIR/txtin8.txt -c $TESTDIR/txtin8.conf  -o txtin8.h5
+
+
+TESTING "ASCII UI16 - rank 2 - Output LE+Chunked+Compressed " 
+TOOLTEST $TESTDIR/txtuin16.txt -c $TESTDIR/txtuin16.conf -o txtuin16.h5
+
+TESTING "ASCII UI32 - rank 3 - Output BE" 
+TOOLTEST $TESTDIR/txtuin32.txt -c $TESTDIR/txtuin32.conf -o txtuin32.h5
+
+
+TESTING "ASCII F32 - rank 3 - Output LE " 
+TOOLTEST $TESTDIR/txtfp32.txt -c $TESTDIR/txtfp32.conf -o txtfp32.h5
+
+TESTING "ASCII F64 - rank 3 - Output BE + CHUNKED+Extended+Compressed " 
+TOOLTEST $TESTDIR/txtfp64.txt -c $TESTDIR/txtfp64.conf -o txtfp64.h5
+
+
+TESTING "BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " 
+TOOLTEST binfp64.bin -c $TESTDIR/binfp64.conf -o binfp64.h5
+TESTING "H5DUMP-BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " 
+if test $USE_FILTER_DEFLATE != "yes"; then
+ SKIP "/fp/bin/64-bit" binfp64.h5
+else
+ TOOLTEST2 "/fp/bin/64-bit" binfp64.h5
+fi
+
+
+TESTING "BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " 
+TOOLTEST binin8.bin -c $TESTDIR/binin8.conf -o binin8.h5
+TESTING "H5DUMP-BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " 
+if test $USE_FILTER_DEFLATE != "yes"; then
+ SKIP "/int/bin/8-bit" binin8.h5
+else
+ TOOLTEST2 "/int/bin/8-bit" binin8.h5
+fi
+
+TESTING "BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " 
+TOOLTEST binin16.bin -c $TESTDIR/binin16.conf -o binin16.h5
+TESTING "H5DUMP-BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " 
+TOOLTEST2 "/int/bin/16-bit" binin16.h5
+
+TESTING "BINARY I32 - rank 3 - Output BE + CHUNKED " 
+TOOLTEST binin32.bin -c $TESTDIR/binin32.conf -o binin32.h5
+TESTING "H5DUMP-BINARY I32 - rank 3 - Output BE + CHUNKED " 
+TOOLTEST2 "/int/bin/32-bit" binin32.h5
+
+
+TESTING "BINARY UI16 - rank 3 - Output byte BE + CHUNKED " 
+TOOLTEST binuin16.bin -c $TESTDIR/binuin16.conf -o binuin16.h5
+TESTING "H5DUMP-BINARY UI16 - rank 3 - Output byte BE + CHUNKED " 
+TOOLTEST2 "/int/buin/16-bit" binuin16.h5
+
+TESTING "BINARY UI32 - rank 3 - Output LE + CHUNKED " 
+TOOLTEST binuin32.bin -c $TESTDIR/binuin32.conf -o binuin32.h5
+TESTING "H5DUMP-BINARY UI32 - rank 3 - Output LE + CHUNKED " 
+TOOLTEST2 "/int/buin/32-bit" binuin32.h5
+
+
+TESTING "STR" 
+TOOLTEST $TESTDIR/txtstr.txt -c $TESTDIR/txtstr.conf -o txtstr.h5
+TESTING "H5DUMP-STR" 
+TOOLTEST4 "/mytext/data" txtstr.h5
+
+
+TESTING "BINARY I8 CR LF EOF" 
+TOOLTEST binin8w.bin -c $TESTDIR/binin8w.conf -o binin8w.h5
+TESTING "H5DUMP-BINARY I8 CR LF EOF" 
+TOOLTEST2 "/dataset0" binin8w.h5
+
+TESTING "ASCII F64 - rank 1 - INPUT-CLASS TEXTFPE " 
+TOOLTEST $TESTDIR/textpfe64.txt -c $TESTDIR/textpfe.conf -o textpfe.h5
+
+
+rm -f  txtin32.txt txtin16.txt txtin8.txt txtuin32.txt txtuin16.txt *.bin *.dmp *.imp *.h5
+rm -rf tmp_testfiles
+else
+  echo "** h5import or h5importtest not available ***"
+  nerrors="` expr $nerrors + 1 `";
+fi
+
+#
+# Check errors result
+if test $nerrors -eq 0 ; then
+    echo "All $TESTNAME tests passed."
+    exit $EXIT_SUCCESS
+else
+    echo "$TESTNAME tests failed with $nerrors errors."
+    exit $EXIT_FAILURE
+fi
diff --git a/tools/h5import/testfiles/dbinfp64.h5.txt b/tools/h5import/testfiles/dbinfp64.h5.txt
new file mode 100644
index 0000000..fb88984
--- /dev/null
+++ b/tools/h5import/testfiles/dbinfp64.h5.txt
@@ -0,0 +1,2 @@
+dataset: </fp/bin/64-bit> and </fp/bin/64-bit>
+0 differences found
diff --git a/tools/h5import/testfiles/dbinin16.h5.txt b/tools/h5import/testfiles/dbinin16.h5.txt
new file mode 100644
index 0000000..b94781e
--- /dev/null
+++ b/tools/h5import/testfiles/dbinin16.h5.txt
@@ -0,0 +1,2 @@
+dataset: </int/bin/16-bit> and </int/bin/16-bit>
+0 differences found
diff --git a/tools/h5import/testfiles/dbinin32.h5.txt b/tools/h5import/testfiles/dbinin32.h5.txt
new file mode 100644
index 0000000..a35cd79
--- /dev/null
+++ b/tools/h5import/testfiles/dbinin32.h5.txt
@@ -0,0 +1,2 @@
+dataset: </int/bin/32-bit> and </int/bin/32-bit>
+0 differences found
diff --git a/tools/h5import/testfiles/dbinin8.h5.txt b/tools/h5import/testfiles/dbinin8.h5.txt
new file mode 100644
index 0000000..bbc6c67
--- /dev/null
+++ b/tools/h5import/testfiles/dbinin8.h5.txt
@@ -0,0 +1,2 @@
+dataset: </int/bin/8-bit> and </int/bin/8-bit>
+0 differences found
diff --git a/tools/h5import/testfiles/dbinin8w.h5.txt b/tools/h5import/testfiles/dbinin8w.h5.txt
new file mode 100644
index 0000000..28d43d2
--- /dev/null
+++ b/tools/h5import/testfiles/dbinin8w.h5.txt
@@ -0,0 +1,2 @@
+dataset: </dataset0> and </dataset0>
+0 differences found
diff --git a/tools/h5import/testfiles/dbinuin16.h5.txt b/tools/h5import/testfiles/dbinuin16.h5.txt
new file mode 100644
index 0000000..ecad7a0
--- /dev/null
+++ b/tools/h5import/testfiles/dbinuin16.h5.txt
@@ -0,0 +1,2 @@
+dataset: </int/buin/16-bit> and </int/buin/16-bit>
+0 differences found
diff --git a/tools/h5import/testfiles/dbinuin32.h5.txt b/tools/h5import/testfiles/dbinuin32.h5.txt
new file mode 100644
index 0000000..cc1d9f3
--- /dev/null
+++ b/tools/h5import/testfiles/dbinuin32.h5.txt
@@ -0,0 +1,2 @@
+dataset: </int/buin/32-bit> and </int/buin/32-bit>
+0 differences found
diff --git a/tools/h5import/testfiles/dtxtstr.h5.txt b/tools/h5import/testfiles/dtxtstr.h5.txt
new file mode 100644
index 0000000..2170300
--- /dev/null
+++ b/tools/h5import/testfiles/dtxtstr.h5.txt
@@ -0,0 +1,2 @@
+dataset: </mytext/data> and </mytext/data>
+0 differences found
diff --git a/tools/h5import/testfiles/txtin16.txt b/tools/h5import/testfiles/txtin8.txt
similarity index 100%
copy from tools/h5import/testfiles/txtin16.txt
copy to tools/h5import/testfiles/txtin8.txt
diff --git a/tools/h5import/testfiles/txtin16.txt b/tools/h5import/testfiles/txtuin16.txt
similarity index 100%
copy from tools/h5import/testfiles/txtin16.txt
copy to tools/h5import/testfiles/txtuin16.txt
diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt
index a03d139..b44e734 100644
--- a/tools/h5jam/CMakeLists.txt
+++ b/tools/h5jam/CMakeLists.txt
@@ -534,11 +534,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5jam ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5jam h5unjam
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5jam/Makefile.in b/tools/h5jam/Makefile.in
index 31190ec..ff8b089 100644
--- a/tools/h5jam/Makefile.in
+++ b/tools/h5jam/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,14 +68,16 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/testh5jam.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/testh5jam.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 bin_PROGRAMS = h5jam$(EXEEXT) h5unjam$(EXEEXT)
 check_PROGRAMS = tellub$(EXEEXT) h5jamgentest$(EXEEXT) getub$(EXEEXT)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(TEST_SCRIPT)
 subdir = tools/h5jam
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -72,9 +90,10 @@ getub_SOURCES = getub.c
 getub_OBJECTS = getub.$(OBJEXT)
 getub_LDADD = $(LDADD)
 getub_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5jam_SOURCES = h5jam.c
 h5jam_OBJECTS = h5jam.$(OBJEXT)
 h5jam_LDADD = $(LDADD)
@@ -97,6 +116,18 @@ tellub_SOURCES = tellub.c
 tellub_OBJECTS = tellub.$(OBJEXT)
 tellub_LDADD = $(LDADD)
 tellub_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -107,30 +138,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = getub.c h5jam.c h5jamgentest.c h5unjam.c tellub.c
 DIST_SOURCES = getub.c h5jam.c h5jamgentest.c h5unjam.c tellub.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -148,12 +182,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -440,6 +471,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -469,6 +504,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -482,8 +518,11 @@ testh5jam.sh: $(top_builddir)/config.status $(srcdir)/testh5jam.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -532,19 +571,19 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-getub$(EXEEXT): $(getub_OBJECTS) $(getub_DEPENDENCIES) 
+getub$(EXEEXT): $(getub_OBJECTS) $(getub_DEPENDENCIES) $(EXTRA_getub_DEPENDENCIES) 
 	@rm -f getub$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getub_OBJECTS) $(getub_LDADD) $(LIBS)
-h5jam$(EXEEXT): $(h5jam_OBJECTS) $(h5jam_DEPENDENCIES) 
+h5jam$(EXEEXT): $(h5jam_OBJECTS) $(h5jam_DEPENDENCIES) $(EXTRA_h5jam_DEPENDENCIES) 
 	@rm -f h5jam$(EXEEXT)
 	$(AM_V_CCLD)$(h5jam_LINK) $(h5jam_OBJECTS) $(h5jam_LDADD) $(LIBS)
-h5jamgentest$(EXEEXT): $(h5jamgentest_OBJECTS) $(h5jamgentest_DEPENDENCIES) 
+h5jamgentest$(EXEEXT): $(h5jamgentest_OBJECTS) $(h5jamgentest_DEPENDENCIES) $(EXTRA_h5jamgentest_DEPENDENCIES) 
 	@rm -f h5jamgentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5jamgentest_OBJECTS) $(h5jamgentest_LDADD) $(LIBS)
-h5unjam$(EXEEXT): $(h5unjam_OBJECTS) $(h5unjam_DEPENDENCIES) 
+h5unjam$(EXEEXT): $(h5unjam_OBJECTS) $(h5unjam_DEPENDENCIES) $(EXTRA_h5unjam_DEPENDENCIES) 
 	@rm -f h5unjam$(EXEEXT)
 	$(AM_V_CCLD)$(h5unjam_LINK) $(h5unjam_OBJECTS) $(h5unjam_LDADD) $(LIBS)
-tellub$(EXEEXT): $(tellub_OBJECTS) $(tellub_DEPENDENCIES) 
+tellub$(EXEEXT): $(tellub_OBJECTS) $(tellub_DEPENDENCIES) $(EXTRA_tellub_DEPENDENCIES) 
 	@rm -f tellub$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(tellub_OBJECTS) $(tellub_LDADD) $(LIBS)
 
@@ -563,26 +602,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -639,6 +675,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -691,10 +741,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -782,7 +837,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -811,7 +866,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -837,7 +892,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -861,7 +916,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -871,7 +926,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -961,7 +1016,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -991,7 +1046,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5jam/h5jam.c b/tools/h5jam/h5jam.c
index 981eead..52eb0aa 100644
--- a/tools/h5jam/h5jam.c
+++ b/tools/h5jam/h5jam.c
@@ -310,7 +310,7 @@ main (int argc, const char *argv[])
         leave (EXIT_FAILURE);
     }
 
-    fsize = sbuf.st_size;
+    fsize = (off_t)sbuf.st_size;
 
     h5fid = HDopen(input_file, O_RDONLY, 0);
     if(h5fid < 0) {
@@ -455,7 +455,7 @@ copy_some_to_file (int infid, int outfid, hsize_t startin, hsize_t startout,
     exit (EXIT_FAILURE);
   }
 
-      howmuch = sbuf.st_size;
+      howmuch = (ssize_t)sbuf.st_size;
     }
   else
       howmuch = limit;
diff --git a/tools/h5jam/testh5jam.sh.in b/tools/h5jam/testh5jam.sh.in
index f359926..b2c6bec 100644
--- a/tools/h5jam/testh5jam.sh.in
+++ b/tools/h5jam/testh5jam.sh.in
@@ -15,6 +15,8 @@
 #
 # Tests for the h5jam/h5unjam tools
 
+srcdir=@srcdir@
+
 # Determine which filters are available
 USE_FILTER_SZIP="@USE_FILTER_SZIP@"
 USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
@@ -36,15 +38,13 @@ CMP='cmp -s'
 DIFF='diff -c'
 AWK='awk'
 CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
 
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # source dirs
 SRC_TOOLS="$srcdir/.."
 SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
@@ -103,12 +103,20 @@ COPY_TESTFILES_TO_TESTDIR()
         echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
         RET=$?
         if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile"
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
             fi
         fi
     done
diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt
index 0dec21c..e2b3285 100644
--- a/tools/h5ls/CMakeLists.txt
+++ b/tools/h5ls/CMakeLists.txt
@@ -433,11 +433,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5ls ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5ls
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5ls/Makefile.in b/tools/h5ls/Makefile.in
index 1a33335..7aa4329 100644
--- a/tools/h5ls/Makefile.in
+++ b/tools/h5ls/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,13 +68,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/testh5ls.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/testh5ls.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 bin_PROGRAMS = h5ls$(EXEEXT)
-TESTS = $(check_SCRIPTS)
+TESTS = $(TEST_SCRIPT)
 subdir = tools/h5ls
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -71,12 +89,25 @@ h5ls_SOURCES = h5ls.c
 h5ls_OBJECTS = h5ls.$(OBJEXT)
 h5ls_LDADD = $(LDADD)
 h5ls_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5ls_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5ls_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -87,30 +118,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = h5ls.c
 DIST_SOURCES = h5ls.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -128,12 +162,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -417,6 +448,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -446,6 +481,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -459,8 +495,11 @@ testh5ls.sh: $(top_builddir)/config.status $(srcdir)/testh5ls.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -500,7 +539,7 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5ls$(EXEEXT): $(h5ls_OBJECTS) $(h5ls_DEPENDENCIES) 
+h5ls$(EXEEXT): $(h5ls_OBJECTS) $(h5ls_DEPENDENCIES) $(EXTRA_h5ls_DEPENDENCIES) 
 	@rm -f h5ls$(EXEEXT)
 	$(AM_V_CCLD)$(h5ls_LINK) $(h5ls_OBJECTS) $(h5ls_LDADD) $(LIBS)
 
@@ -515,26 +554,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -591,6 +627,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -643,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -731,8 +786,8 @@ uninstall-am: uninstall-binPROGRAMS
 .MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-binPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+	clean clean-binPROGRAMS clean-generic clean-libtool cscopelist \
+	ctags distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-binPROGRAMS \
 	install-data install-data-am install-dvi install-dvi-am \
@@ -761,7 +816,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -787,7 +842,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -811,7 +866,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -821,7 +876,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -911,7 +966,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -941,7 +996,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c
index 2171682..0fc0531 100644
--- a/tools/h5ls/h5ls.c
+++ b/tools/h5ls/h5ls.c
@@ -1436,13 +1436,13 @@ dump_dataset_values(hid_t dset)
     info = &outputformat;
 
     ctx.indent_level = 2;
-    ctx.cur_column = curr_pos;
+    ctx.cur_column = (size_t)curr_pos;
     /* Print all the values. */
     h5tools_str_reset(&buffer);
     h5tools_str_append(&buffer, "    Data:\n");
     h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, info->line_ncols, 0, 0);
     ctx.need_prefix = TRUE;
-    ctx.cur_column = curr_pos;
+    ctx.cur_column = (size_t)curr_pos;
     if (h5tools_dump_dset(rawoutstream, info, &ctx, dset, -1, NULL) < 0) {
         h5tools_str_reset(&buffer);
         h5tools_str_append(&buffer, "        Unable to print data.");
@@ -1619,7 +1619,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
             if(H5Aread(attr, p_type, buf) >= 0) {
                 ctx.need_prefix = TRUE;
                 ctx.indent_level = 2;
-                ctx.cur_column = curr_pos;
+                ctx.cur_column = (size_t)curr_pos;
                 h5tools_dump_mem(rawoutstream, info, &ctx, attr, p_type, space, buf);
             }
 
@@ -1672,11 +1672,9 @@ dataset_list1(hid_t dset)
     H5S_class_t space_type;     /* type of dataspace          */
     int   i;
     hsize_t             curr_pos = 0;        /* total data element position   */
-    h5tool_link_info_t lnk_info;
     h5tools_str_t       buffer;          /* string into which to render   */
     h5tools_context_t   ctx;             /* print context  */
     h5tool_format_t    *info = &ls_dataformat;
-    h5tool_format_t     outputformat;
 
     HDmemset(&ctx, 0, sizeof(ctx));
     HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -1753,7 +1751,6 @@ dataset_list2(hid_t dset, const char UNUSED *name)
     h5tools_str_t       buffer;          /* string into which to render   */
     h5tools_context_t   ctx;             /* print context  */
     h5tool_format_t    *info = &ls_dataformat;
-    h5tool_format_t     outputformat;
 
     HDmemset(&ctx, 0, sizeof(ctx));
     HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -1921,7 +1918,6 @@ datatype_list2(hid_t type, const char UNUSED *name)
         h5tools_str_t       buffer;          /* string into which to render   */
         h5tools_context_t   ctx;             /* print context  */
         h5tool_format_t    *info = &ls_dataformat;
-        h5tool_format_t     outputformat;
 
         HDmemset(&ctx, 0, sizeof(ctx));
         HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -1962,7 +1958,6 @@ list_obj(const char *name, const H5O_info_t *oinfo, const char *first_seen, void
     h5tools_str_t       buffer;          /* string into which to render   */
     h5tools_context_t   ctx;             /* print context  */
     h5tool_format_t    *info = &ls_dataformat;
-    h5tool_format_t     outputformat;
 
     HDmemset(&ctx, 0, sizeof(ctx));
     HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -2121,7 +2116,6 @@ list_lnk(const char *name, const H5L_info_t *linfo, void *_iter)
     h5tools_str_t       buffer;          /* string into which to render   */
     h5tools_context_t   ctx;             /* print context  */
     h5tool_format_t    *info = &ls_dataformat;
-    h5tool_format_t     outputformat;
 
     HDmemset(&ctx, 0, sizeof(ctx));
     HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -2309,11 +2303,9 @@ visit_obj(hid_t file, const char *oname, iter_t *iter)
     int retval = 0;
     H5O_info_t oi;              /* Information for object */
     hsize_t             curr_pos = 0;        /* total data element position   */
-    h5tool_link_info_t lnk_info;
     h5tools_str_t       buffer;          /* string into which to render   */
     h5tools_context_t   ctx;             /* print context  */
     h5tool_format_t    *info = &ls_dataformat;
-    h5tool_format_t     outputformat;
 
     HDmemset(&ctx, 0, sizeof(ctx));
     HDmemset(&buffer, 0, sizeof(h5tools_str_t));
@@ -2820,11 +2812,9 @@ main(int argc, const char *argv[])
             /* Check the type of link given */
             if(H5Lget_info(file, oname, &li, H5P_DEFAULT) < 0) {
                 hsize_t             curr_pos = 0;        /* total data element position   */
-                h5tool_link_info_t lnk_info;
                 h5tools_str_t       buffer;          /* string into which to render   */
                 h5tools_context_t   ctx;             /* print context  */
                 h5tool_format_t    *info = &ls_dataformat;
-                h5tool_format_t     outputformat;
 
                 HDmemset(&ctx, 0, sizeof(ctx));
                 HDmemset(&buffer, 0, sizeof(h5tools_str_t));
diff --git a/tools/h5ls/testh5ls.sh.in b/tools/h5ls/testh5ls.sh.in
index 7c2691a..0904f96 100644
--- a/tools/h5ls/testh5ls.sh.in
+++ b/tools/h5ls/testh5ls.sh.in
@@ -15,6 +15,8 @@
 #
 # Tests for the h5ls tool
 
+srcdir=@srcdir@
+
 TESTNAME=h5ls
 EXIT_SUCCESS=0
 EXIT_FAILURE=1
@@ -26,19 +28,20 @@ CMP='cmp -s'
 DIFF='diff -c'
 CP='cp'
 NLINES=20          # Max. lines of output to display if test fails
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
 
 WORDS_BIGENDIAN="@WORDS_BIGENDIAN@"
 
 nerrors=0
 verbose=yes
 h5haveexitcode=yes      # default is yes
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-    srcdir=.
-fi
+
 # source dirs
 SRC_TOOLS="$srcdir/.."
 SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+
 # testfiles source dirs for tools
 SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
 SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
@@ -167,12 +170,20 @@ COPY_TESTFILES_TO_TESTDIR()
         echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
         RET=$?
         if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile"
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
             fi
         fi
     done
@@ -337,8 +348,11 @@ TOOLTEST tcomp-1.ls 0 -w80 -r -d tcompound.h5
 
 #test for the nested compound type
 TOOLTEST tnestcomp-1.ls 0 -w80 -r -d tnestedcomp.h5
+
 TOOLTEST tnestcomp-2.ls 0 -w80 -r -d -S tnestedcomp.h5
+
 TOOLTEST tnestcomp-3.ls 0 -w80 -r -d -l tnestedcomp.h5
+
 TOOLTEST tnestcomp-4.ls 0 -w80 -r -d -l -S tnestedcomp.h5
 
 # test for loop detection
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
index 98d5c5a..7351fd5 100644
--- a/tools/h5repack/CMakeLists.txt
+++ b/tools/h5repack/CMakeLists.txt
@@ -800,6 +800,28 @@ ADD_H5_VERIFY_TEST (chunk2conti "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CONT
 ADD_H5_TEST (chunk2compa "TEST" h5repack_layout3.h5 -l chunk_unlimit1:COMPA)
 ADD_H5_VERIFY_TEST (chunk2compa "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK)
 
+#--------------------------------------------------------------------------
+# Test -f for some specific cases. Chunked dataset with unlimited max dims.
+# (HDFFV-8012)
+#--------------------------------------------------------------------------
+# - should not fail 
+# - should not change max dims from unlimit
+
+# chunk dim is bigger than dataset dim. ( dset size < 64k )
+ADD_H5_TEST (error1 "TEST" h5repack_layout3.h5 -f chunk_unlimit1:NONE)
+ADD_H5_VERIFY_TEST (error1 "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED)
+
+# chunk dim is bigger than dataset dim. ( dset size > 64k )
+ADD_H5_TEST (error2 "TEST" h5repack_layout3.h5 -f chunk_unlimit2:NONE)
+ADD_H5_VERIFY_TEST (error2 "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED)
+
+# chunk dims are smaller than dataset dims. ( dset size < 64k )
+ADD_H5_TEST (error3 "TEST" h5repack_layout3.h5 -f chunk_unlimit3:NONE)
+ADD_H5_VERIFY_TEST (error3 "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED)
+
+# file input - should not fail
+ADD_H5_TEST (error4 "TEST" h5repack_layout3.h5 -f NONE)
+
 # Native option
 # Do not use FILE1, as the named dtype will be converted to native, and h5diff will
 # report a difference.
@@ -898,11 +920,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5repack ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5repack
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in
index 0d749d3..389339f 100644
--- a/tools/h5repack/Makefile.in
+++ b/tools/h5repack/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,15 +68,17 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/h5repack.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/h5repack.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 noinst_PROGRAMS = testh5repack_detect_szip$(EXEEXT)
 check_PROGRAMS = $(am__EXEEXT_1)
 bin_PROGRAMS = h5repack$(EXEEXT)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = tools/h5repack
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -78,9 +96,10 @@ am_h5repack_OBJECTS = $(am__objects_1) h5repack_main.$(OBJEXT)
 h5repack_OBJECTS = $(am_h5repack_OBJECTS)
 h5repack_LDADD = $(LDADD)
 h5repack_DEPENDENCIES = $(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5repack_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5repack_LDFLAGS) $(LDFLAGS) -o $@
@@ -95,6 +114,18 @@ testh5repack_detect_szip_OBJECTS =  \
 testh5repack_detect_szip_LDADD = $(LDADD)
 testh5repack_detect_szip_DEPENDENCIES = $(LIBH5TOOLS) $(LIBH5TEST) \
 	$(LIBHDF5)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -105,32 +136,35 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(h5repack_SOURCES) $(h5repacktst_SOURCES) \
 	$(testh5repack_detect_szip_SOURCES)
 DIST_SOURCES = $(h5repack_SOURCES) $(h5repacktst_SOURCES) \
 	$(testh5repack_detect_szip_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -148,12 +182,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -451,6 +482,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -480,6 +515,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -493,8 +529,11 @@ h5repack.sh: $(top_builddir)/config.status $(srcdir)/h5repack.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -552,13 +591,13 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5repack$(EXEEXT): $(h5repack_OBJECTS) $(h5repack_DEPENDENCIES) 
+h5repack$(EXEEXT): $(h5repack_OBJECTS) $(h5repack_DEPENDENCIES) $(EXTRA_h5repack_DEPENDENCIES) 
 	@rm -f h5repack$(EXEEXT)
 	$(AM_V_CCLD)$(h5repack_LINK) $(h5repack_OBJECTS) $(h5repack_LDADD) $(LIBS)
-h5repacktst$(EXEEXT): $(h5repacktst_OBJECTS) $(h5repacktst_DEPENDENCIES) 
+h5repacktst$(EXEEXT): $(h5repacktst_OBJECTS) $(h5repacktst_DEPENDENCIES) $(EXTRA_h5repacktst_DEPENDENCIES) 
 	@rm -f h5repacktst$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5repacktst_OBJECTS) $(h5repacktst_LDADD) $(LIBS)
-testh5repack_detect_szip$(EXEEXT): $(testh5repack_detect_szip_OBJECTS) $(testh5repack_detect_szip_DEPENDENCIES) 
+testh5repack_detect_szip$(EXEEXT): $(testh5repack_detect_szip_OBJECTS) $(testh5repack_detect_szip_DEPENDENCIES) $(EXTRA_testh5repack_detect_szip_DEPENDENCIES) 
 	@rm -f testh5repack_detect_szip$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testh5repack_detect_szip_OBJECTS) $(testh5repack_detect_szip_LDADD) $(LIBS)
 
@@ -582,26 +621,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -658,6 +694,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -710,10 +760,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -801,7 +856,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
+	clean-libtool clean-noinstPROGRAMS cscopelist ctags distclean \
 	distclean-compile distclean-generic distclean-libtool \
 	distclean-tags distdir dvi dvi-am html html-am info info-am \
 	install install-am install-binPROGRAMS install-data \
@@ -834,7 +889,7 @@ h5repack.sh.chkexe_: h5repacktst.chkexe_
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -860,7 +915,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -884,7 +939,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -894,7 +949,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -984,7 +1039,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1014,7 +1069,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5repack/h5repack.c b/tools/h5repack/h5repack.c
index 6517ae1..621cc52 100644
--- a/tools/h5repack/h5repack.c
+++ b/tools/h5repack/h5repack.c
@@ -93,6 +93,7 @@ int h5repack_init(pack_opt_t *options,
     HDmemset(options, 0, sizeof(pack_opt_t));
     options->min_comp = 1024;
     options->verbose  = verbose;
+    options->layout_g = H5D_LAYOUT_ERROR;
 
     for ( n = 0; n < H5_REPACK_MAX_NFILTERS; n++)
     {
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
index e05b03f..a732ffb 100644
--- a/tools/h5repack/h5repack.sh.in
+++ b/tools/h5repack/h5repack.sh.in
@@ -20,6 +20,8 @@
 #  Added $FILEN variables for file names
 #   
 
+srcdir=@srcdir@
+
 USE_FILTER_SZIP="@USE_FILTER_SZIP@"
 USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
 USE_FILTER_SHUFFLE="@USE_FILTER_SHUFFLE@"
@@ -42,6 +44,9 @@ H5DUMP_BIN=`pwd`/$H5DUMP        # The path of the h5dump tool binary
 
 GREP='grep'
 CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
 
 H5DETECTSZIP=testh5repack_detect_szip              
 H5DETECTSZIP_BIN=`pwd`/$H5DETECTSZIP    
@@ -50,15 +55,10 @@ H5DETECTSZIP_BIN=`pwd`/$H5DETECTSZIP
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-#
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # source dirs
 SRC_TOOLS="$srcdir/.."
 SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
+
 # testfiles source dirs for tools
 SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
 SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
@@ -137,12 +137,20 @@ COPY_TESTFILES_TO_TESTDIR()
         echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
         RET=$?
         if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile"
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
             fi
         fi
     done
@@ -810,6 +818,27 @@ VERIFY_LAYOUT_DSET h5repack_layout3.h5 chunk_unlimit1 CONTI
 TOOLTEST_MAIN h5repack_layout3.h5 -l chunk_unlimit1:COMPA
 VERIFY_LAYOUT_DSET h5repack_layout3.h5 chunk_unlimit1 CHUNK
 
+#--------------------------------------------------------------------------
+# Test -f for some specific cases. Chunked dataset with unlimited max dims.
+# (HDFFV-8012)
+#--------------------------------------------------------------------------
+# - should not fail 
+# - should not change max dims from unlimit
+
+# chunk dim is bigger than dataset dim. ( dset size < 64k )
+TOOLTEST_MAIN h5repack_layout3.h5 -f chunk_unlimit1:NONE
+VERIFY_LAYOUT_DSET h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED
+# chunk dim is bigger than dataset dim. ( dset size > 64k )
+TOOLTEST_MAIN h5repack_layout3.h5 -f chunk_unlimit2:NONE
+VERIFY_LAYOUT_DSET h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED
+
+# chunk dims are smaller than dataset dims. ( dset size < 64k )
+TOOLTEST_MAIN h5repack_layout3.h5  -f chunk_unlimit3:NONE
+VERIFY_LAYOUT_DSET h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED
+
+# file input - should not fail
+TOOLTEST h5repack_layout3.h5 -f NONE
+
 # Native option
 # Do not use FILE1, as the named dtype will be converted to native, and h5diff will
 # report a difference.
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index c936155..cfd542a 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -732,6 +732,7 @@ int do_copy_objects(hid_t fidin,
     void     *hslab_buf=NULL;   /* hyperslab buffer for raw data */
     int      has_filter;        /* current object has a filter */
     int      req_filter;        /* there was a request for a filter */
+    int      req_obj_layout=0;  /* request layout to current object */
     unsigned crt_order_flags;   /* group creation order flag */
     unsigned i;
     unsigned u;
@@ -863,6 +864,22 @@ int do_copy_objects(hid_t fidin,
                 }
             }
 
+            /* check if layout change requested individual object */
+            if (options->layout_g != H5D_LAYOUT_ERROR)
+            {
+	            pack_info_t *pckinfo;
+	            /* any dataset is specified */
+	            if (options->op_tbl->nelems > 0)
+	            {
+	                /* check if object exist */
+	                pckinfo = options_get_object (travt->objs[i].name, options->op_tbl);
+	                if (pckinfo)
+	                {
+	                    req_obj_layout = 1;
+	                }
+	            }
+            }
+
             /* early detection of references */
             if((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
                 goto error;
@@ -982,6 +999,9 @@ int do_copy_objects(hid_t fidin,
                                 goto error;
                         }
 
+                    /* only if layout change requested for entire file or 
+                     * individual obj */
+                    if (options->all_layout > 0 || req_obj_layout == 1)
                         /*------------------------------------------------- 
                          * Unset the unlimited max dims if convert to other
                          * than chunk layouts, because unlimited max dims
@@ -1500,7 +1520,7 @@ static void print_dataset_info(hid_t dcpl_id,
         printf(FORMAT_OBJ,"dset",objname );
     else
     {
-        char str[255], temp[20];
+        char str[255], temp[28];
         HDstrcpy(str,"dset     ");
         HDstrcat(str,strfilter);
         sprintf(temp,"  (%.3f:1)",ratio);
diff --git a/tools/h5repack/h5repack_opttable.c b/tools/h5repack/h5repack_opttable.c
index 4ec7fcf..00e4bea 100644
--- a/tools/h5repack/h5repack_opttable.c
+++ b/tools/h5repack/h5repack_opttable.c
@@ -388,7 +388,7 @@ pack_info_t* options_get_object( const char *path,
                                  pack_opttbl_t *table )
 {
     unsigned int i;
-    const char tbl_path[MAX_NC_NAME];
+    const char tbl_path[MAX_NC_NAME+1]; /* +1 for start with "/" case */
 
 
     for ( i = 0; i < table->nelems; i++)
diff --git a/tools/h5repack/h5repacktst.c b/tools/h5repack/h5repacktst.c
index 20dbcd4..a22b0fe 100644
--- a/tools/h5repack/h5repacktst.c
+++ b/tools/h5repack/h5repacktst.c
@@ -3078,65 +3078,119 @@ out:
 */
 #define DIM1_L3 300
 #define DIM2_L3 200
+/* small size */
+#define SDIM1_L3 4
+#define SDIM2_L3 50
 static
 int make_layout3(hid_t loc_id)
 {
-    hid_t    dcpl=-1; /* dataset creation property list */
-    hid_t    sid=-1;  /* dataspace ID */
-    hsize_t  dims[RANK]={DIM1_L3,DIM2_L3};
+    hid_t    dcpl1=-1; /* dataset creation property list */
+    hid_t    dcpl2=-1; /* dataset creation property list */
+    hid_t    dcpl3=-1; /* dataset creation property list */
+    hid_t    sid1=-1;  /* dataspace ID */
+    hid_t    sid2=-1;  /* dataspace ID */
+    hsize_t  dims1[RANK]={DIM1_L3,DIM2_L3};
+    hsize_t  dims2[RANK]={SDIM1_L3,SDIM2_L3};
     hsize_t  maxdims[RANK]={H5S_UNLIMITED, H5S_UNLIMITED};
-    hsize_t  chunk_dims[RANK]={DIM1_L3*2,5};
-    int      buf[DIM1_L3][DIM2_L3];
+    hsize_t  chunk_dims1[RANK]={DIM1_L3*2,5};
+    hsize_t  chunk_dims2[RANK]={SDIM1_L3 + 2, SDIM2_L3/2};
+    hsize_t  chunk_dims3[RANK]={SDIM1_L3 - 2, SDIM2_L3/2};
+    int      buf1[DIM1_L3][DIM2_L3];
+    int      buf2[SDIM1_L3][SDIM2_L3];
     int      i, j, n;
 
+    /* init buf1 */
     for (i=n=0; i<DIM1_L3; i++)
     {
         for (j=0; j<DIM2_L3; j++)
         {
-            buf[i][j]=n++;
+            buf1[i][j]=n++;
+        }
+    }
+
+    /* init buf2 */
+    for (i=n=0; i<SDIM1_L3; i++)
+    {
+        for (j=0; j<SDIM2_L3; j++)
+        {
+            buf2[i][j]=n++;
         }
     }
 
     /*-------------------------------------------------------------------------
-    * make several dataset with several layout options
+    * make chunked dataset with
+    *  - dset maxdims are UNLIMIT
+    *  - a chunk dim is bigger than dset dim
+    *  - dset size bigger than compact max (64K)
     *-------------------------------------------------------------------------
     */
     /* create a space */
-    if((sid = H5Screate_simple(RANK, dims, maxdims)) < 0)
+    if((sid1 = H5Screate_simple(RANK, dims1, maxdims)) < 0)
         return -1;
     /* create a dataset creation property list; the same DCPL is used for all dsets */
-    if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+    if ((dcpl1 = H5Pcreate(H5P_DATASET_CREATE)) < 0)
     {
         goto out;
     }
 
+    if(H5Pset_chunk(dcpl1, RANK, chunk_dims1) < 0)
+        goto out;
+    if (make_dset(loc_id,"chunk_unlimit1",sid1,dcpl1,buf1) < 0)
+    {
+        goto out;
+    }
 
     /*-------------------------------------------------------------------------
-    * H5D_CHUNKED
+    * make chunked dataset with
+    *  - dset maxdims are UNLIMIT
+    *  - a chunk dim is bigger than dset dim
+    *  - dset size smaller than compact (64K)
     *-------------------------------------------------------------------------
     */
-    if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
+
+    /* create a space */
+    if((sid2 = H5Screate_simple(RANK, dims2, maxdims)) < 0)
+        return -1;
+    /* create a dataset creation property list; the same DCPL is used for all dsets */
+    if ((dcpl2 = H5Pcreate(H5P_DATASET_CREATE)) < 0)
         goto out;
-    if (make_dset(loc_id,"chunk_unlimit1",sid,dcpl,buf) < 0)
-    {
+
+    if(H5Pset_chunk(dcpl2, RANK, chunk_dims2) < 0)
         goto out;
-    }
 
-    if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
+    if (make_dset(loc_id,"chunk_unlimit2",sid2,dcpl2,buf2) < 0)
         goto out;
 
-    if (make_dset(loc_id,"chunk_unlimit2",sid,dcpl,buf) < 0)
-    {
+    /*-------------------------------------------------------------------------
+    * make chunked dataset with
+    *  - dset maxdims are UNLIMIT
+    *  - a chunk dims are smaller than dset dims
+    *  - dset size smaller than compact (64K)
+    *-------------------------------------------------------------------------
+    */
+    /* create a dataset creation property list; the same DCPL is used for all dsets */
+    if ((dcpl3 = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+        goto out;
+
+    if(H5Pset_chunk(dcpl3, RANK, chunk_dims3) < 0)
+        goto out;
+
+    if (make_dset(loc_id,"chunk_unlimit3",sid2,dcpl3,buf2) < 0)
         goto out;
-    }
 
     /*-------------------------------------------------------------------------
     * close space and dcpl
     *-------------------------------------------------------------------------
     */
-    if(H5Sclose(sid) < 0)
+    if(H5Sclose(sid1) < 0)
         goto out;
-    if(H5Pclose(dcpl) < 0)
+    if(H5Sclose(sid2) < 0)
+        goto out;
+    if(H5Pclose(dcpl1) < 0)
+        goto out;
+    if(H5Pclose(dcpl2) < 0)
+        goto out;
+    if(H5Pclose(dcpl3) < 0)
         goto out;
 
     return 0;
@@ -3144,8 +3198,11 @@ int make_layout3(hid_t loc_id)
 out:
     H5E_BEGIN_TRY
     {
-        H5Pclose(dcpl);
-        H5Sclose(sid);
+        H5Sclose(sid1);
+        H5Sclose(sid2);
+        H5Pclose(dcpl1);
+        H5Pclose(dcpl2);
+        H5Pclose(dcpl3);
     } H5E_END_TRY;
     return -1;
 }
@@ -3521,7 +3578,6 @@ out:
 *
 *-------------------------------------------------------------------------
 */
-
 static
 int write_dset_in(hid_t loc_id,
                    const char* dset_name, /* for saving reference to dataset*/
@@ -3785,17 +3841,23 @@ int write_dset_in(hid_t loc_id,
 
     {
 
+        hsize_t TEST_BUFSIZE = (128 * 1024 * 1024);  /* 128MB */
         double   *dbuf;                           /* information to write */
         size_t   size;
         hsize_t  sdims[] = {1};
-        hsize_t  tdims[] = {H5TOOLS_MALLOCSIZE / sizeof(double) + 1};
+        hsize_t  tdims[] = {TEST_BUFSIZE / sizeof(double) + 1};
         unsigned u;
 
         /* allocate and initialize array data to write */
-        size = ( H5TOOLS_MALLOCSIZE / sizeof(double) + 1 ) * sizeof(double);
+        size = ( TEST_BUFSIZE / sizeof(double) + 1 ) * sizeof(double);
         dbuf = (double*)malloc( size );
+        if (NULL == dbuf)
+        {
+            printf ("\nError: Cannot allocate memory for \"arrayd\" data buffer size %dMB.\n", (int) size / 1000000 );
+            goto out;
+        }
 
-        for( u = 0; u < H5TOOLS_MALLOCSIZE / sizeof(double) + 1; u++)
+        for( u = 0; u < TEST_BUFSIZE / sizeof(double) + 1; u++)
             dbuf[u] = u;
 
         if (make_diffs)
@@ -3804,7 +3866,7 @@ int write_dset_in(hid_t loc_id,
             dbuf[6] = 0;
         }
 
-        /* create a type larger than H5TOOLS_MALLOCSIZE */
+        /* create a type larger than TEST_BUFSIZE */
         if ((tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, tdims)) < 0)
             goto out;
         size = H5Tget_size(tid);
diff --git a/tools/h5repack/testfiles/h5repack_layout3.h5 b/tools/h5repack/testfiles/h5repack_layout3.h5
index 5319031..7351502 100644
Binary files a/tools/h5repack/testfiles/h5repack_layout3.h5 and b/tools/h5repack/testfiles/h5repack_layout3.h5 differ
diff --git a/tools/h5stat/CMakeLists.txt b/tools/h5stat/CMakeLists.txt
index 8c621c9..3518cfd 100644
--- a/tools/h5stat/CMakeLists.txt
+++ b/tools/h5stat/CMakeLists.txt
@@ -41,6 +41,7 @@ IF (BUILD_TESTING)
   SET (HDF5_REFERENCE_FILES
       h5stat_help1.ddl
       h5stat_help2.ddl
+      h5stat_notexist.ddl
       h5stat_filters.ddl
       h5stat_filters-file.ddl
       h5stat_filters-F.ddl
@@ -92,6 +93,9 @@ IF (BUILD_TESTING)
     # If using memchecker add tests without using scripts
     IF (HDF5_ENABLE_USING_MEMCHECKER)
       ADD_TEST (NAME H5STAT-${resultfile} COMMAND $<TARGET_FILE:h5stat> ${ARGN})
+      IF (NOT ${resultcode} STREQUAL "0")
+        SET_TESTS_PROPERTIES (H5STAT-${resultfile} PROPERTIES WILL_FAIL "true")
+      ENDIF (NOT ${resultcode} STREQUAL "0")
       IF (NOT "${last_test}" STREQUAL "")
         SET_TESTS_PROPERTIES (H5STAT-${resultfile} PROPERTIES DEPENDS ${last_test})
       ENDIF (NOT "${last_test}" STREQUAL "")
@@ -133,6 +137,8 @@ IF (BUILD_TESTING)
           h5stat_help1.out.err
           h5stat_help2.out
           h5stat_help2.out.err
+          h5stat_notexist.out
+          h5stat_notexist.out.err
           h5stat_filters.out
           h5stat_filters.out.err
           h5stat_filters-file.out
@@ -168,6 +174,9 @@ IF (BUILD_TESTING)
   ADD_H5_TEST (h5stat_help1 0 -h)
   ADD_H5_TEST (h5stat_help2 0 --help)
 
+# Test when h5stat a file that does not exist
+  ADD_H5_TEST (h5stat_notexist 1 notexist.h5)
+
 # Test file with groups, compressed datasets, user-applied fileters, etc.
 # h5stat_filters.h5 is a copy of ../../testfiles/tfilters.h5 as of release 1.8.0-alpha4
   ADD_H5_TEST (h5stat_filters 0 h5stat_filters.h5)
@@ -196,11 +205,14 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5stat ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5stat
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/h5stat/Makefile.in b/tools/h5stat/Makefile.in
index 403446c..389e460 100644
--- a/tools/h5stat/Makefile.in
+++ b/tools/h5stat/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -34,6 +33,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,14 +69,16 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/testh5stat.sh.in $(top_srcdir)/config/commence.am \
+	$(srcdir)/testh5stat.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 check_PROGRAMS = $(am__EXEEXT_1)
 bin_PROGRAMS = h5stat$(EXEEXT)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = tools/h5stat
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -74,9 +92,10 @@ h5stat_SOURCES = h5stat.c
 h5stat_OBJECTS = h5stat.$(OBJEXT)
 h5stat_LDADD = $(LDADD)
 h5stat_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5stat_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5stat_LDFLAGS) $(LDFLAGS) -o $@
@@ -105,7 +124,25 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -116,30 +153,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = h5stat.c h5stat_gentest.c
 DIST_SOURCES = h5stat.c h5stat_gentest.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -157,12 +197,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -459,6 +496,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -488,6 +529,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -501,8 +543,11 @@ testh5stat.sh: $(top_builddir)/config.status $(srcdir)/testh5stat.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -551,16 +596,19 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5stat$(EXEEXT): $(h5stat_OBJECTS) $(h5stat_DEPENDENCIES) 
+h5stat$(EXEEXT): $(h5stat_OBJECTS) $(h5stat_DEPENDENCIES) $(EXTRA_h5stat_DEPENDENCIES) 
 	@rm -f h5stat$(EXEEXT)
 	$(AM_V_CCLD)$(h5stat_LINK) $(h5stat_OBJECTS) $(h5stat_LDADD) $(LIBS)
-h5stat_gentest$(EXEEXT): $(h5stat_gentest_OBJECTS) $(h5stat_gentest_DEPENDENCIES) 
+h5stat_gentest$(EXEEXT): $(h5stat_gentest_OBJECTS) $(h5stat_gentest_DEPENDENCIES) $(EXTRA_h5stat_gentest_DEPENDENCIES) 
 	@rm -f h5stat_gentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5stat_gentest_OBJECTS) $(h5stat_gentest_LDADD) $(LIBS)
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -588,9 +636,7 @@ uninstall-binSCRIPTS:
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -604,26 +650,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -680,6 +723,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -732,10 +789,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -824,7 +886,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-binSCRIPTS install-data \
@@ -854,7 +916,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -880,7 +942,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -904,7 +966,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -914,7 +976,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1004,7 +1066,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1034,7 +1096,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/h5stat/h5stat.c b/tools/h5stat/h5stat.c
index 9e414a8..961e758 100644
--- a/tools/h5stat/h5stat.c
+++ b/tools/h5stat/h5stat.c
@@ -845,36 +845,9 @@ error:
 
 
 /*-------------------------------------------------------------------------
- * Function: init_iter
+ * Function: iter_free
  *
- * Purpose: Initialize iter structure
- *
- * Return: Success: 0
- *
- * Failure: Never fails
- *
- * Programmer: Elena Pourmal
- *             Saturday, August 12, 2006
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-iter_init(iter_t *iter, hid_t fid)
-{
-    /* Clear everything to zeros */
-    HDmemset(iter, 0, sizeof(*iter));
-
-    /* Set the file ID for later use in callbacks */
-    iter->fid = fid;
-
-    return 0;
-} /* iter_init() */
-
-
-/*-------------------------------------------------------------------------
- * Function: free_iter
- *
- * Purpose: Freee iter structure
+ * Purpose: Free iter structure
  *
  * Return: Success: 0
  *
@@ -1452,7 +1425,7 @@ main(int argc, const char *argv[])
 {
     iter_t              iter;
     const char         *fname = NULL;
-    hid_t               fid;
+    hid_t               fid = -1;
     hid_t               fcpl;
     struct handler_t   *hand = NULL;
     H5F_info_t         finfo;
@@ -1475,6 +1448,8 @@ main(int argc, const char *argv[])
 
     printf("Filename: %s\n", fname);
 
+    HDmemset(&iter, 0, sizeof(iter));
+
     fid = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);
     if(fid < 0) {
         error_msg("unable to open file \"%s\"\n", fname);
@@ -1483,7 +1458,7 @@ main(int argc, const char *argv[])
     } /* end if */
 
     /* Initialize iter structure */
-    iter_init(&iter, fid);
+    iter.fid = fid;
 
     if(H5Fget_filesize(fid, &iter.filesize) < 0)
         warn_msg("Unable to retrieve file size\n");
@@ -1539,7 +1514,7 @@ done:
         /* Free iter structure */
         iter_free(&iter);
     
-        if(H5Fclose(fid) < 0) {
+        if(fid >= 0 && H5Fclose(fid) < 0) {
             error_msg("unable to close file \"%s\"\n", fname);
             h5tools_setstatus(EXIT_FAILURE);
         }
diff --git a/tools/h5stat/testfiles/h5stat_notexist.ddl b/tools/h5stat/testfiles/h5stat_notexist.ddl
new file mode 100644
index 0000000..ac0fce4
--- /dev/null
+++ b/tools/h5stat/testfiles/h5stat_notexist.ddl
@@ -0,0 +1,5 @@
+#############################
+Expected output for 'h5stat notexist.h5'
+#############################
+Filename: notexist.h5
+h5stat error: unable to open file "notexist.h5"
diff --git a/tools/h5stat/testh5stat.sh.in b/tools/h5stat/testh5stat.sh.in
index c5cb3e8..74071d0 100644
--- a/tools/h5stat/testh5stat.sh.in
+++ b/tools/h5stat/testh5stat.sh.in
@@ -15,6 +15,8 @@
 #
 # Tests for the h5dump tool
 
+srcdir=@srcdir@
+
 # Determine which filters are available
 USE_FILTER_SZIP="@USE_FILTER_SZIP@"
 USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
@@ -33,15 +35,13 @@ STAT_BIN=`pwd`/$STAT    # The path of the tool binary
 CMP='cmp -s'
 DIFF='diff -c'
 CP='cp'
+DIRNAME='dirname'
+LS='ls'
+AWK='awk'
 
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 # source dirs
 SRC_TOOLS="$srcdir/.."
 SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
@@ -77,6 +77,7 @@ $SRC_H5STAT_TESTFILES/h5stat_newgrat.h5
 LIST_OTHER_TEST_FILES="
 $SRC_H5STAT_TESTFILES/h5stat_help1.ddl
 $SRC_H5STAT_TESTFILES/h5stat_help2.ddl
+$SRC_H5STAT_TESTFILES/h5stat_notexist.ddl
 $SRC_H5STAT_TESTFILES/h5stat_filters.ddl
 $SRC_H5STAT_TESTFILES/h5stat_filters-file.ddl
 $SRC_H5STAT_TESTFILES/h5stat_filters-F.ddl
@@ -105,12 +106,20 @@ COPY_TESTFILES_TO_TESTDIR()
         echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
         RET=$?
         if [ $RET -eq 1 ]; then
-            if [ -a $tstfile ]; then
-                $CP -f $tstfile $TESTDIR
-            else
-                echo "Error: FAILED to copy $tstfile"
-                echo "       $tstfile doesn't exist!"
-                exit $EXIT_FAILURE
+            # skip cp if srcdir is same as destdir
+            # this occurs when build/test performed in source dir and
+            # make cp fail
+            SDIR=`$DIRNAME $tstfile`
+            INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
+            INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
+            if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
+    	        $CP -f $tstfile $TESTDIR
+                if [ $? -ne 0 ]; then
+                    echo "Error: FAILED to copy $tstfile ."
+                
+                    # Comment out this to CREATE expected file
+                    exit $EXIT_FAILURE
+                fi
             fi
         fi
     done
@@ -189,6 +198,8 @@ COPY_TESTFILES_TO_TESTDIR
 # Test for help flag
 TOOLTEST h5stat_help1.ddl -h
 TOOLTEST h5stat_help2.ddl --help
+# Test when h5stat a file that does not exist
+TOOLTEST h5stat_notexist.ddl notexist.h5
 
 # Test file with groups, compressed datasets, user-applied fileters, etc.
 # h5stat_filters.h5 is a copy of ../../testfiles/tfilters.h5 as of release 1.8.0-alpha4
diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt
index 837a14e..0b17320 100644
--- a/tools/lib/CMakeLists.txt
+++ b/tools/lib/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8.6)
 PROJECT (HDF5_TOOLS_LIB)
 
 #-----------------------------------------------------------------------------
+# Apply Definitions to compiler in this directory and below
+#-----------------------------------------------------------------------------
+ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+
+#-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
 
@@ -79,6 +84,9 @@ ENDIF (APPLE)
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
 IF (HDF5_EXPORTED_TARGETS)
+
+  INSTALL_TARGET_PDB (${HDF5_TOOLS_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} toolslibraries)
+  
   INSTALL (
       TARGETS
           ${HDF5_TOOLS_LIB_TARGET}
diff --git a/tools/lib/Makefile.in b/tools/lib/Makefile.in
index beeb42f..6a76e1d 100644
--- a/tools/lib/Makefile.in
+++ b/tools/lib/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -33,6 +32,23 @@
 #
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,13 +68,14 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 check_PROGRAMS = $(am__EXEEXT_1)
-TESTS = $(check_PROGRAMS)
+TESTS = $(am__EXEEXT_1)
 subdir = tools/lib
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
@@ -72,10 +89,23 @@ am_libh5tools_la_OBJECTS = h5tools.lo h5tools_dump.lo h5tools_str.lo \
 	h5diff_dset.lo h5diff_util.lo h5trav.lo h5tools_filters.lo \
 	h5tools_ref.lo h5tools_type.lo
 libh5tools_la_OBJECTS = $(am_libh5tools_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 am__EXEEXT_1 =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -86,30 +116,33 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libh5tools_la_SOURCES)
 DIST_SOURCES = $(libh5tools_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -127,12 +160,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -419,6 +449,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -448,6 +482,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -460,13 +495,15 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libh5tools.la: $(libh5tools_la_OBJECTS) $(libh5tools_la_DEPENDENCIES) 
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+libh5tools.la: $(libh5tools_la_OBJECTS) $(libh5tools_la_DEPENDENCIES) $(EXTRA_libh5tools_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK)  $(libh5tools_la_OBJECTS) $(libh5tools_la_LIBADD) $(LIBS)
 
 clean-checkPROGRAMS:
@@ -501,26 +538,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -577,6 +611,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -626,10 +674,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -716,17 +769,18 @@ uninstall-am:
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am tags uninstall uninstall-am
+	clean-noinstLTLIBRARIES cscopelist ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -744,7 +798,7 @@ help:
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -770,7 +824,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -794,7 +848,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -804,7 +858,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -894,7 +948,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -924,7 +978,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c
index 306f914..9d73d2b 100644
--- a/tools/lib/h5diff.c
+++ b/tools/lib/h5diff.c
@@ -21,23 +21,6 @@
 #include "h5diff.h"
 #include "ph5diff.h"
 
-/*
- * Debug printf macros. The prefix allows output filtering by test scripts.
- */
-#ifdef H5DIFF_DEBUG
-#define h5diffdebug(x) HDfprintf(stderr, "h5diff debug: " x)
-#define h5diffdebug2(x1, x2) HDfprintf(stderr, "h5diff debug: " x1, x2)
-#define h5diffdebug3(x1, x2, x3) HDfprintf(stderr, "h5diff debug: " x1, x2, x3)
-#define h5diffdebug4(x1, x2, x3, x4) HDfprintf(stderr, "h5diff debug: " x1, x2, x3, x4)
-#define h5diffdebug5(x1, x2, x3, x4, x5) HDfprintf(stderr, "h5diff debug: " x1, x2, x3, x4, x5)
-#else
-#define h5diffdebug(x)
-#define h5diffdebug2(x1, x2)
-#define h5diffdebug3(x1, x2, x3)
-#define h5diffdebug4(x1, x2, x3, x4)
-#define h5diffdebug5(x1, x2, x3, x4, x5)
-#endif
-
 
 /*-------------------------------------------------------------------------
  * Function: print_objname
@@ -378,6 +361,7 @@ static void build_match_list (const char *objname1, trav_info_t *info1, const ch
      * All the objects belong to given groups are the cadidates.
      * So prepare to compare paths without the group names.
      */
+
     /* if obj1 is not root */
     if (HDstrcmp (objname1,"/") != 0)
         path1_offset = HDstrlen(objname1);
@@ -390,7 +374,6 @@ static void build_match_list (const char *objname1, trav_info_t *info1, const ch
     */
     while(curr1 < info1->nused && curr2 < info2->nused)
     {
-        
         path1_lp = (info1->paths[curr1].path) + path1_offset;
         path2_lp = (info2->paths[curr2].path) + path2_offset;
         type1_l = info1->paths[curr1].type;
@@ -399,7 +382,8 @@ static void build_match_list (const char *objname1, trav_info_t *info1, const ch
         /* criteria is string compare */
         cmp = HDstrcmp(path1_lp, path2_lp);
 
-        if(cmp == 0) {
+        if(cmp == 0)
+        {
             if(!is_exclude_path(path1_lp, type1_l, options))
             {
                 infile[0] = 1;
@@ -470,27 +454,6 @@ static void build_match_list (const char *objname1, trav_info_t *info1, const ch
     } /* end while */
 
     free_exclude_path_list (options);
-   /*------------------------------------------------------
-    * print the list
-    */
-    if(options->m_verbose)
-    {
-        parallel_print("\n");
-        /* if given objects is group under root */
-        if (HDstrcmp (objname1,"/") || HDstrcmp (objname2,"/"))
-            parallel_print("group1   group2\n");
-        else
-            parallel_print("file1     file2\n");
-        parallel_print("---------------------------------------\n");
-        for(i = 0; i < table->nobjs; i++) 
-        {
-            char c1, c2;
-            c1 = (table->objs[i].flags[0]) ? 'x' : ' ';
-            c2 = (table->objs[i].flags[1]) ? 'x' : ' ';
-            parallel_print("%5c %6c    %-15s\n", c1, c2, table->objs[i].name);
-        } /* end for */
-        parallel_print ("\n");
-    } /* end if */
 
     *table_out = table;
 }
@@ -653,6 +616,7 @@ hsize_t h5diff(const char *fname1,
     int l_ret2 = -1;
     const char * obj1fullname = NULL;
     const char * obj2fullname = NULL;
+    int both_objs_grp = 0;
     /* init to group type */
     h5trav_type_t obj1type = H5TRAV_TYPE_GROUP;
     h5trav_type_t obj2type = H5TRAV_TYPE_GROUP;
@@ -778,6 +742,7 @@ hsize_t h5diff(const char *fname1,
              */
             if(src_linfo1.type == H5L_TYPE_HARD)
             {
+                int idx = 0;
                 /* optional data pass */
                 info1_obj->opts = (diff_opt_t*)options;
 
@@ -789,6 +754,9 @@ hsize_t h5diff(const char *fname1,
                 }
                 obj1type = oinfo1.type;
                 trav_info_add(info1_obj, obj1fullname, obj1type);
+                idx = info1_obj->nused - 1;
+                info1_obj->paths[idx].objno = oinfo1.addr;
+                info1_obj->paths[idx].fileno = oinfo1.fileno;
             }
             else if (src_linfo1.type == H5L_TYPE_SOFT)
             {
@@ -832,6 +800,7 @@ hsize_t h5diff(const char *fname1,
              */
             if(src_linfo2.type == H5L_TYPE_HARD)
             {
+                int idx = 0;
                 /* optional data pass */
                 info2_obj->opts = (diff_opt_t*)options;
 
@@ -843,6 +812,9 @@ hsize_t h5diff(const char *fname1,
                 }
                 obj2type = oinfo2.type;
                 trav_info_add(info2_obj, obj2fullname, obj2type);
+                idx = info2_obj->nused - 1;
+                info2_obj->paths[idx].objno = oinfo2.addr;
+                info2_obj->paths[idx].fileno = oinfo2.fileno;
             }
             else if (src_linfo2.type == H5L_TYPE_SOFT)
             {
@@ -862,14 +834,16 @@ hsize_t h5diff(const char *fname1,
         /* set root group */
         obj1fullname = (char*)HDcalloc(2, sizeof(char));
         HDstrcat((char *)obj1fullname, "/");
+        obj1type = H5TRAV_TYPE_GROUP;
         obj2fullname = (char*)HDcalloc(2, sizeof(char));
         HDstrcat((char *)obj2fullname, "/");
+        obj2type = H5TRAV_TYPE_GROUP;
     }
 
 
     /* get any symbolic links info */
-    l_ret1 = H5tools_get_symlink_info(file1_id, obj1fullname, &trg_linfo1, TRUE);
-    l_ret2 = H5tools_get_symlink_info(file2_id, obj2fullname, &trg_linfo2, TRUE);
+    l_ret1 = H5tools_get_symlink_info(file1_id, obj1fullname, &trg_linfo1, options->follow_links);
+    l_ret2 = H5tools_get_symlink_info(file2_id, obj2fullname, &trg_linfo2, options->follow_links);
 
     /*---------------------------------------------
      * check for following symlinks 
@@ -913,7 +887,15 @@ hsize_t h5diff(const char *fname1,
             goto out;
         }
         else if(l_ret1 != 2) /* symbolic link */
+        {
             obj1type = trg_linfo1.trg_type;
+            if (info1_lp != NULL) {
+                int idx = info1_lp->nused - 1;
+                info1_lp->paths[idx].type = trg_linfo1.trg_type;
+                info1_lp->paths[idx].objno = trg_linfo1.objno;
+                info1_lp->paths[idx].fileno = trg_linfo1.fileno;
+            }
+        }
 
         /*-------------------------------
          * check symbolic link (object2)
@@ -949,11 +931,19 @@ hsize_t h5diff(const char *fname1,
             goto out;
         }
         else if(l_ret2 != 2)  /* symbolic link */
+        {
             obj2type = trg_linfo2.trg_type;
+            if (info2_lp != NULL) {
+                int idx = info2_lp->nused - 1;
+                info2_lp->paths[idx].type = trg_linfo2.trg_type;
+                info2_lp->paths[idx].objno = trg_linfo2.objno;
+                info2_lp->paths[idx].fileno = trg_linfo2.fileno;
+            }
+        }
     } /* end of if follow symlinks */
 
    /* 
-    * If verbose options is not used, don't need to traverse thorugh the list 
+    * If verbose options is not used, don't need to traverse through the list
     * of objects in the group to display objects information,
     * So use h5tools_is_obj_same() to improve performance by skipping 
     * comparing details of same objects. 
@@ -963,24 +953,22 @@ hsize_t h5diff(const char *fname1,
     {
         /* if no danglink links */
         if ( l_ret1 > 0 && l_ret2 > 0 )
-            if (h5tools_is_obj_same(file1_id,obj1fullname,file2_id,obj2fullname)!=0)
+            if (h5tools_is_obj_same(file1_id, obj1fullname, file2_id, obj2fullname)!=0)
                 goto out;
     }
 
-
-    /* if both obj1 and obj2 are group */
-    if (obj1type == H5TRAV_TYPE_GROUP && obj2type == H5TRAV_TYPE_GROUP)
+    both_objs_grp = (obj1type == H5TRAV_TYPE_GROUP && obj2type == H5TRAV_TYPE_GROUP);
+    if (both_objs_grp)
     {
-
-        /* 
-         * traverse group1 
+        /*
+         * traverse group1
          */
         trav_info_init(fname1, file1_id, &info1_grp);
         /* optional data pass */
         info1_grp->opts = (diff_opt_t*)options;
 
-        if(h5trav_visit(file1_id,obj1fullname,TRUE,TRUE,
-                        trav_grp_objs,trav_grp_symlinks, info1_grp) < 0)
+        if(h5trav_visit(file1_id, obj1fullname, TRUE, TRUE,
+                        trav_grp_objs, trav_grp_symlinks, info1_grp) < 0)
         {
             parallel_print("Error: Could not get file contents\n");
             options->err_stat = 1;
@@ -988,59 +976,71 @@ hsize_t h5diff(const char *fname1,
         }
         info1_lp = info1_grp;
 
-        /* 
-         * traverse group2 
+        /*
+         * traverse group2
          */
         trav_info_init(fname2, file2_id, &info2_grp);
         /* optional data pass */
         info2_grp->opts = (diff_opt_t*)options;
 
-        if(h5trav_visit(file2_id,obj2fullname,TRUE,TRUE,
-                        trav_grp_objs,trav_grp_symlinks, info2_grp) < 0)
+        if(h5trav_visit(file2_id, obj2fullname, TRUE, TRUE,
+                        trav_grp_objs, trav_grp_symlinks, info2_grp) < 0)
         {
             parallel_print("Error: Could not get file contents\n");
             options->err_stat = 1;
             goto out;
         } /* end if */
         info2_lp = info2_grp;
-
+    }
 
 #ifdef H5_HAVE_PARALLEL
-        if(g_Parallel)
+    if(g_Parallel)
+    {
+        if((HDstrlen(fname1) > MAX_FILENAME) || (HDstrlen(fname2) > MAX_FILENAME))
         {
-            if((HDstrlen(fname1) > MAX_FILENAME) || 
-               (HDstrlen(fname2) > MAX_FILENAME))
-            {
-                HDfprintf(stderr, "The parallel diff only supports path names up to %d characters\n", MAX_FILENAME);
-                MPI_Abort(MPI_COMM_WORLD, 0);
-            } /* end if */
+            HDfprintf(stderr, "The parallel diff only supports path names up to %d characters\n", MAX_FILENAME);
+            MPI_Abort(MPI_COMM_WORLD, 0);
+        } /* end if */
 
-            HDstrcpy(filenames[0], fname1);
-            HDstrcpy(filenames[1], fname2);
+        HDstrcpy(filenames[0], fname1);
+        HDstrcpy(filenames[1], fname2);
 
-            /* Alert the worker tasks that there's going to be work. */
-            for(i = 1; i < g_nTasks; i++)
-                MPI_Send(filenames, (MAX_FILENAME * 2), MPI_CHAR, i, MPI_TAG_PARALLEL, MPI_COMM_WORLD);
-        } /* end if */
-#endif
-        build_match_list (obj1fullname, info1_lp, obj2fullname, info2_lp, 
-                         &match_list, options);
-        nfound = diff_match(file1_id, obj1fullname, info1_lp, 
-                            file2_id, obj2fullname, info2_lp, 
-                            match_list, options); 
-    }
-    else
-    {
-#ifdef H5_HAVE_PARALLEL
-        if(g_Parallel)
-            /* Only single object diff, parallel workers won't be needed */
-            phdiff_dismiss_workers();
+        /* Alert the worker tasks that there's going to be work. */
+        for(i = 1; i < g_nTasks; i++)
+            MPI_Send(filenames, (MAX_FILENAME * 2), MPI_CHAR, i, MPI_TAG_PARALLEL, MPI_COMM_WORLD);
+    } /* end if */
 #endif
 
-        nfound = diff_compare(file1_id, fname1, obj1fullname, info1_lp,
-                              file2_id, fname2, obj2fullname, info2_lp,
-                              options);
+    /* process the objects */
+    build_match_list (obj1fullname, info1_lp, obj2fullname, info2_lp,
+                     &match_list, options);
+    if (both_objs_grp)
+    {
+        /*------------------------------------------------------
+         * print the list
+         */
+         if(options->m_verbose)
+         {
+             parallel_print("\n");
+             /* if given objects is group under root */
+             if (HDstrcmp (obj1fullname,"/") || HDstrcmp (obj2fullname,"/"))
+                 parallel_print("group1   group2\n");
+             else
+                 parallel_print("file1     file2\n");
+             parallel_print("---------------------------------------\n");
+             for(i = 0; i < match_list->nobjs; i++)
+             {
+                 char c1, c2;
+                 c1 = (match_list->objs[i].flags[0]) ? 'x' : ' ';
+                 c2 = (match_list->objs[i].flags[1]) ? 'x' : ' ';
+                 parallel_print("%5c %6c    %-15s\n", c1, c2, match_list->objs[i].name);
+             } /* end for */
+             parallel_print ("\n");
+         } /* end if */
     }
+    nfound = diff_match(file1_id, obj1fullname, info1_lp,
+                        file2_id, obj2fullname, info2_lp,
+                        match_list, options);
 
 out:
 #ifdef H5_HAVE_PARALLEL
@@ -1142,7 +1142,7 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
     *-------------------------------------------------------------------------
     */     
        
-    /* not valid compare nused when --exclude-path option is used */
+    /* not valid compare used when --exclude-path option is used */
     if (!options->exclude_path)
     {
         /* number of different objects */
@@ -1222,7 +1222,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
             {
                 int workerFound = 0;
 
-                h5diffdebug("beginning of big else block\n");
                 /* We're in parallel mode */
                 /* Since the data type of diff value is hsize_t which can
                 * be arbitary large such that there is no MPI type that
@@ -1247,7 +1246,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
                 args.argdata.type[1] = info2->paths[idx2].type;
                 args.argdata.is_same_trgobj = table->objs[i].is_same_trgobj;
 
-                h5diffdebug2("busyTasks=%d\n", busyTasks);
                 /* if there are any outstanding print requests, let's handle one. */
                 if(busyTasks > 0)
                 {
@@ -1319,7 +1317,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
                     } /* end if */
                 } /* end for */
 
-                h5diffdebug2("workerfound is %d \n", workerFound);
                 if(!workerFound)
                 {
                     /* if they were all busy, we've got to wait for one free up
@@ -1395,7 +1392,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
                 HDfree (obj2_fullpath);
         } /* end if */
     } /* end for */
-    h5diffdebug("done with for loop\n");
 
 #ifdef H5_HAVE_PARALLEL
     if(g_Parallel)
@@ -1411,14 +1407,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
                 options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
                 busyTasks--;
             } /* end if */
-            else if(Status.MPI_TAG == MPI_TAG_TOK_RETURN)
-            {
-                MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
-                nfound += nFoundbyWorker.nfound;
-                options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
-                busyTasks--;
-                havePrintToken = 1;
-            } /* end else-if */
             else if(Status.MPI_TAG == MPI_TAG_TOK_REQUEST)
             {
                 MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
@@ -1490,7 +1478,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
         /* Print any final data waiting in our queue */
         print_incoming_data();
     } /* end if */
-    h5diffdebug("done with if block\n");
 
     HDfree(workerTasks);
     }
@@ -1505,130 +1492,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
 
 
 /*-------------------------------------------------------------------------
- * Function: diff_compare
- *
- * Purpose: get objects from list, and check for the same type
- *
- * Return: Number of differences found
- *
- * Programmer: Pedro Vicente, pvn at ncsa.uiuc.edu
- * Date: May 9, 2003
- *
- * Programmer: Jonathan Kim
- *  - add following links feature (Feb 11,2010)
- *-------------------------------------------------------------------------
- */
-
-hsize_t diff_compare(hid_t file1_id,
-                     const char *file1_name,
-                     const char *obj1_name,
-                     trav_info_t *info1,
-                     hid_t file2_id,
-                     const char *file2_name,
-                     const char *obj2_name,
-                     trav_info_t *info2,
-                     diff_opt_t *options)
-{
-    int     f1 = 0;
-    int     f2 = 0;
-    hsize_t nfound = 0;
-    ssize_t i,j;
-    int l_ret;
-    int is_dangle_link1 = 0;
-    int is_dangle_link2 = 0;
-    const char *obj1name = obj1_name;
-    const char *obj2name = obj2_name;
-    diff_args_t argdata;
-
-    /* local variables for diff() */
-    h5trav_type_t obj1type, obj2type;
-
-    /* to get link info */
-    h5tool_link_info_t linkinfo1;
-    h5tool_link_info_t linkinfo2;
-
-    /* init link info struct */
-    HDmemset(&linkinfo1, 0, sizeof(h5tool_link_info_t));
-    HDmemset(&linkinfo2, 0, sizeof(h5tool_link_info_t));
-
-    i = h5trav_getindex (info1, obj1name);
-    j = h5trav_getindex (info2, obj2name);
-
-    if (i == -1)
-    {
-        parallel_print ("Object <%s> could not be found in <%s>\n", obj1name,
-            file1_name);
-        f1 = 1;
-    }
-    if (j == -1)
-    {
-        parallel_print ("Object <%s> could not be found in <%s>\n", obj2name,
-            file2_name);
-        f2 = 1;
-    }
-    if (f1 || f2)
-    {
-        options->err_stat = 1;
-        return 0;
-    }
-    /* use the name with "/" first, as obtained by iterator function */
-    obj1name = info1->paths[i].path;
-    obj2name = info2->paths[j].path;
-
-    obj1type = info1->paths[i].type;
-    obj2type = info2->paths[j].type;
-
-    /* Set argdata to pass other args into diff() */
-    argdata.type[0] = obj1type;
-    argdata.type[1] = obj2type;
-    argdata.is_same_trgobj = 0;
-
-    nfound = diff(file1_id, obj1name,
-                  file2_id, obj2name,
-                  options, &argdata);
-
-out:
-    /*-------------------------------
-     * handle dangling link(s) */
-    /* both obj1 and obj2 are dangling links */
-    if(is_dangle_link1 && is_dangle_link2)
-    {
-        if(print_objname(options, nfound))
-        {
-            do_print_objname("dangling link", obj1name, obj2name, options);
-            print_found(nfound);
-        }
-    }
-    /* obj1 is dangling link */
-    else if (is_dangle_link1)
-    {
-        if(options->m_verbose)
-           parallel_print("obj1 <%s> is a dangling link.\n", obj1name);
-        nfound++;
-        if(print_objname(options, nfound))
-            print_found(nfound);
-    }
-    /* obj2 is dangling link */
-    else if (is_dangle_link2)
-    {
-        if(options->m_verbose)
-            parallel_print("obj2 <%s> is a dangling link.\n", obj2name);
-        nfound++;
-        if(print_objname(options, nfound))
-            print_found(nfound);
-    }
-
-    /* free link info buffer */
-    if (linkinfo1.trg_path)
-        HDfree((char *)linkinfo1.trg_path);
-    if (linkinfo2.trg_path)
-        HDfree((char *)linkinfo2.trg_path);
-
-    return nfound;
-}
-
-
-/*-------------------------------------------------------------------------
  * Function: diff
  *
  * Purpose: switch between types and choose the diff function
@@ -1661,6 +1524,8 @@ hsize_t diff(hid_t file1_id,
               diff_opt_t * options,
               diff_args_t *argdata)
 {
+    hid_t   dset1_id = (-1);
+    hid_t   dset2_id = (-1);
     hid_t   type1_id = (-1);
     hid_t   type2_id = (-1);
     hid_t   grp1_id = (-1);
@@ -1697,7 +1562,7 @@ hsize_t diff(hid_t file1_id,
          */
 
         /* target object1 - get type and name */
-        ret = H5tools_get_symlink_info(file1_id, path1, &linkinfo1, TRUE);
+        ret = H5tools_get_symlink_info(file1_id, path1, &linkinfo1, options->follow_links);
         /* dangling link */
         if (ret == 0)
         {
@@ -1715,7 +1580,7 @@ hsize_t diff(hid_t file1_id,
             goto out;
 
         /* target object2 - get type and name */
-        ret = H5tools_get_symlink_info(file2_id, path2, &linkinfo2, TRUE);
+        ret = H5tools_get_symlink_info(file2_id, path2, &linkinfo2, options->follow_links );
         /* dangling link */
         if (ret == 0)
         {
@@ -1826,6 +1691,10 @@ hsize_t diff(hid_t file1_id,
         *----------------------------------------------------------------------
         */
         case H5TRAV_TYPE_DATASET:
+            if((dset1_id = H5Dopen2(file1_id, path1, H5P_DEFAULT)) < 0)
+                goto out;
+            if((dset2_id = H5Dopen2(file2_id, path2, H5P_DEFAULT)) < 0)
+                goto out;
       /* verbose (-v) and report (-r) mode */
             if(options->m_verbose || options->m_report)
             {
@@ -1849,6 +1718,22 @@ hsize_t diff(hid_t file1_id,
                     print_found(nfound);  
                 }
             }
+
+
+            /*---------------------------------------------------------
+             * compare attributes
+             * if condition refers to cases when the dataset is a 
+             * referenced object
+             *---------------------------------------------------------
+             */
+            if(path1)
+                nfound += diff_attr(dset1_id, dset2_id, path1, path2, options);
+
+
+            if(H5Dclose(dset1_id) < 0)
+                goto out;
+            if(H5Dclose(dset2_id) < 0)
+                goto out;
             break;
 
        /*----------------------------------------------------------------------
diff --git a/tools/lib/h5diff.h b/tools/lib/h5diff.h
index 6985b68..2530805 100644
--- a/tools/lib/h5diff.h
+++ b/tools/lib/h5diff.h
@@ -19,6 +19,23 @@
 #include "hdf5.h"
 #include "h5trav.h"
 
+/*
+ * Debug printf macros. The prefix allows output filtering by test scripts.
+ */
+#ifdef H5DIFF_DEBUG
+#define h5difftrace(x) HDfprintf(stderr, "h5diff debug: " x)
+#define h5diffdebug2(x1, x2) HDfprintf(stderr, "h5diff debug: " x1, x2)
+#define h5diffdebug3(x1, x2, x3) HDfprintf(stderr, "h5diff debug: " x1, x2, x3)
+#define h5diffdebug4(x1, x2, x3, x4) HDfprintf(stderr, "h5diff debug: " x1, x2, x3, x4)
+#define h5diffdebug5(x1, x2, x3, x4, x5) HDfprintf(stderr, "h5diff debug: " x1, x2, x3, x4, x5)
+#else
+#define h5difftrace(x)
+#define h5diffdebug2(x1, x2)
+#define h5diffdebug3(x1, x2, x3)
+#define h5diffdebug4(x1, x2, x3, x4)
+#define h5diffdebug5(x1, x2, x3, x4, x5)
+#endif
+
 #define MAX_FILENAME 1024
 
 /*-------------------------------------------------------------------------
@@ -118,15 +135,6 @@ hsize_t diff_datasetid( hid_t dset1_id,
                         const char *obj2_name,
                         diff_opt_t *options);
 
-hsize_t diff_compare( hid_t file1_id,
-                      const char *file1_name,
-                      const char *obj1_name,
-                      trav_info_t *info1,
-                      hid_t file2_id,
-                      const char *file2_name,
-                      const char *obj2_name,
-                      trav_info_t *info2,
-                      diff_opt_t *options );
 
 hsize_t diff_match( hid_t file1_id, const char *grp1, trav_info_t *info1,
                     hid_t file2_id, const char *grp2, trav_info_t *info2,
@@ -172,6 +180,7 @@ hsize_t diff_attr(hid_t loc1_id,
  *-------------------------------------------------------------------------
  */
 
+/* in h5diff_util.c */
 void        print_found(hsize_t nfound);
 void        print_type(hid_t type);
 const char* diff_basename(const char *name);
@@ -179,6 +188,10 @@ const char* get_type(h5trav_type_t type);
 const char* get_class(H5T_class_t tclass);
 const char* get_sign(H5T_sign_t sign);
 void        print_dimensions (int rank, hsize_t *dims);
+herr_t      match_up_memsize (hid_t f_tid1_id, hid_t f_tid2_id,
+                              hid_t *m_tid1, hid_t *m_tid2, 
+                              size_t *m_size1, size_t  *m_size2);
+/* in h5diff.c */
 int         print_objname(diff_opt_t *options, hsize_t nfound);
 void        do_print_objname (const char *OBJ, const char *path1, const char *path2, diff_opt_t * opts);
 void        do_print_attrname (const char *attr, const char *path1, const char *path2);
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 85cd01f..144159a 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -405,6 +405,14 @@ hsize_t diff_attr(hid_t loc1_id,
             continue;
         }
 
+       /*-----------------------------------------------------------------
+        * "upgrade" the smaller memory size
+        *------------------------------------------------------------------
+        */
+        if (FAIL == match_up_memsize (ftype1_id, ftype2_id,
+                                      &mtype1_id, &mtype2_id, 
+                                      &msize1, &msize2))
+            goto error;
 
         /*---------------------------------------------------------------------
         * read
diff --git a/tools/lib/h5diff_dset.c b/tools/lib/h5diff_dset.c
index c1ed429..aea2192 100644
--- a/tools/lib/h5diff_dset.c
+++ b/tools/lib/h5diff_dset.c
@@ -361,25 +361,10 @@ hsize_t diff_datasetid( hid_t did1,
         *------------------------------------------------------------------
         */
 
-        if(m_size1 != m_size2) {
-            if(m_size1 < m_size2) {
-                H5Tclose(m_tid1);
-
-                if((m_tid1 = h5tools_get_native_type(f_tid2)) < 0)
-                    goto error;
-
-                m_size1 = H5Tget_size(m_tid1);
-            } /* end if */
-            else {
-                H5Tclose(m_tid2);
-
-                if((m_tid2 = h5tools_get_native_type(f_tid1)) < 0)
-                    goto error;
-
-                m_size2 = H5Tget_size(m_tid2);
-            } /* end else */
-        } /* end if */
-        HDassert(m_size1 == m_size2);
+        if (FAIL == match_up_memsize (f_tid1, f_tid2,
+                                      &m_tid1, &m_tid2, 
+                                      &m_size1, &m_size2))
+            goto error;
 
         /* print names */
         if(obj1_name)
@@ -514,13 +499,6 @@ hsize_t diff_datasetid( hid_t did1,
         } /* hyperslab read */
     } /*can_compare*/
 
-    /*-------------------------------------------------------------------------
-     * compare attributes
-     * the if condition refers to cases when the dataset is a referenced object
-     *-------------------------------------------------------------------------
-     */
-    if(obj1_name)
-        nfound += diff_attr(did1,did2,obj1_name,obj2_name,options);
 
     /*-------------------------------------------------------------------------
      * close
diff --git a/tools/lib/h5diff_util.c b/tools/lib/h5diff_util.c
index 0d476b6..aefd641 100644
--- a/tools/lib/h5diff_util.c
+++ b/tools/lib/h5diff_util.c
@@ -311,4 +311,46 @@ void print_found(hsize_t nfound)
 }
 
 
+/*-----------------------------------------------------------------
+ * Function: match_up_memsize
+ *  
+ * Purpose: match smaller memory size up to bigger memory size
+ *------------------------------------------------------------------
+ */
+herr_t match_up_memsize (hid_t f_tid1_id, hid_t f_tid2_id,
+                         hid_t *m_tid1, hid_t *m_tid2, 
+                         size_t *m_size1, size_t  *m_size2)
+{
+    herr_t ret = SUCCEED;
+
+    if( (*m_size1) != (*m_size2) )
+    {
+        if( (*m_size1) < (*m_size2) )
+        {
+            H5Tclose( *m_tid1 );
+
+            if(( (*m_tid1) = h5tools_get_native_type(f_tid2_id)) < 0)
+            {
+                ret = FAIL;
+                goto out;
+            }
+
+            *m_size1 = H5Tget_size( *m_tid1 );
+        } /* end if */
+        else {
+            H5Tclose(*m_tid2);
 
+            if(( (*m_tid2) = h5tools_get_native_type(f_tid1_id)) < 0)
+            {
+                ret = FAIL;
+                goto out;
+            }
+
+            *m_size2 = H5Tget_size(*m_tid2);
+        } /* end else */
+    } /* end if */
+    HDassert( (*m_size1) == (*m_size2) );
+
+out:
+    return ret;
+}
diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c
index f853b5c..dd72284 100644
--- a/tools/lib/h5tools.c
+++ b/tools/lib/h5tools.c
@@ -1051,6 +1051,7 @@ void
 init_acc_pos(h5tools_context_t *ctx, hsize_t *dims)
 {
     int i;
+    unsigned j;
 
     HDassert(ctx->ndims);
 
@@ -1058,39 +1059,8 @@ init_acc_pos(h5tools_context_t *ctx, hsize_t *dims)
     for (i = (ctx->ndims - 2); i >= 0; i--) {
         ctx->acc[i] = ctx->acc[i + 1] * dims[i + 1];
     }
-    for (i = 0; i < ctx->ndims; i++)
-        ctx->pos[i] = 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: do_bin_output
- *
- * Purpose: Dump memory buffer to a binary file stream
- *
- * Return: Success:    SUCCEED
- *         Failure:    FAIL
- *-------------------------------------------------------------------------
- */
-int
-do_bin_output(FILE *stream, FILE *err_stream, hid_t container, hsize_t nelmts, hid_t tid, void *_mem)
-{
-    HERR_INIT(int, SUCCEED)
-    unsigned char *mem  = (unsigned char*)_mem;
-    size_t         size; /* datum size */
-    hsize_t        i;    /* element counter  */
-
-    if((size = H5Tget_size(tid)) == 0)
-        H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
-
-    for (i = 0; i < nelmts; i++) {
-        if (render_bin_output(stream, container, tid, mem + i * size) < 0) {
-            HDfprintf(err_stream,"\nError in writing binary stream\n");
-            return FAIL;
-       }
-    }
-
-CATCH
-    return ret_value;
+    for (j = 0; j < ctx->ndims; j++)
+        ctx->pos[j] = 0;
 }
 
 /*-------------------------------------------------------------------------
@@ -1103,369 +1073,182 @@ CATCH
  *-------------------------------------------------------------------------
  */
 int
-render_bin_output(FILE *stream, hid_t container, hid_t tid, void *_mem)
+render_bin_output(FILE *stream, hid_t container, hid_t tid, void *_mem,  hsize_t block_nelmts)
 {
     HERR_INIT(int, SUCCEED)
     unsigned char     *mem  = (unsigned char*)_mem;
     size_t             size;   /* datum size */
-    float              tempfloat;
-    double             tempdouble;
-    unsigned long long tempullong;
-    long long          templlong;
-    unsigned long      tempulong;
-    long               templong;
-    unsigned int       tempuint;
-    int                tempint;
-    unsigned short     tempushort;
-    short              tempshort;
-    unsigned char      tempuchar;
-    char               tempschar;
-#if H5_SIZEOF_LONG_DOUBLE !=0
-    long double        templdouble;
-#endif
-#ifdef DEBUG_H5DUMP_BIN
-    static char fmt_llong[8], fmt_ullong[8];
-    if (!fmt_llong[0]) {
-        HDsprintf(fmt_llong, "%%%sd", H5_PRINTF_LL_WIDTH);
-        HDsprintf(fmt_ullong, "%%%su", H5_PRINTF_LL_WIDTH);
-    }
-#endif
+    hsize_t            block_index;
+    H5T_class_t        type_class;
 
     if((size = H5Tget_size(tid)) == 0)
         H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
 
-    if (H5Tequal(tid, H5T_NATIVE_FLOAT)) {
-        HDmemcpy(&tempfloat, mem, sizeof(float));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%g ", tempfloat);
-#else
-        if (1 != HDfwrite(&tempfloat, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_DOUBLE)) {
-        HDmemcpy(&tempdouble, mem, sizeof(double));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%g ", tempdouble);
-#else
-        if (1 != HDfwrite(&tempdouble, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-#if H5_SIZEOF_LONG_DOUBLE !=0
-    else if (H5Tequal(tid, H5T_NATIVE_LDOUBLE)) {
-        HDmemcpy(&templdouble, mem, sizeof(long double));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%Lf ", templdouble);
-#else
-        if (1 != HDfwrite(&templdouble, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-#endif
-    else if (H5T_STRING == H5Tget_class(tid)) {
-        unsigned int i;
-        H5T_str_t    pad;
-        char        *s;
-
-        pad = H5Tget_strpad(tid);
-
-        if (H5Tis_variable_str(tid)) {
-            s = *(char**) mem;
-            if (s != NULL)
-                size = HDstrlen(s);
-        }
-        else {
-            s = (char *) mem;
-            if((size = H5Tget_size(tid)) == 0)
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
-        }
-        for (i = 0; i < size && (s[i] || pad != H5T_STR_NULLTERM); i++) {
-            HDmemcpy(&tempuchar, &s[i], sizeof(unsigned char));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "%d", tempuchar);
-#else
-            if (1 != HDfwrite(&tempuchar, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        } /* i */
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_INT)) {
-        HDmemcpy(&tempint, mem, sizeof(int));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%d ", tempint);
-#else
-        if (1 != HDfwrite(&tempint, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_UINT)) {
-        HDmemcpy(&tempuint, mem, sizeof(unsigned int));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%u ", tempuint);
-#else
-        if (1 != HDfwrite(&tempuint, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_SCHAR)) {
-        HDmemcpy(&tempschar, mem, sizeof(char));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%d ", tempschar);
-#else
-        if (1 != HDfwrite(&tempschar, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_UCHAR)) {
-        HDmemcpy(&tempuchar, mem, sizeof(unsigned char));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%u ", tempuchar);
-#else
-        if (1 != HDfwrite(&tempuchar, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_SHORT)) {
-        HDmemcpy(&tempshort, mem, sizeof(short));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%d ", tempshort);
-#else
-        if (1 != HDfwrite(&tempshort, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_USHORT)) {
-        HDmemcpy(&tempushort, mem, sizeof(unsigned short));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%u ", tempushort);
-#else
-        if (1 != HDfwrite(&tempushort, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_LONG)) {
-        HDmemcpy(&templong, mem, sizeof(long));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%ld ", templong);
-#else
-        if (1 != HDfwrite(&templong, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_ULONG)) {
-        HDmemcpy(&tempulong, mem, sizeof(unsigned long));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, "%lu ", tempulong);
-#else
-        if (1 != HDfwrite(&tempulong, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_LLONG)) {
-        HDmemcpy(&templlong, mem, sizeof(long long));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, fmt_llong, templlong);
-#else
-        if (1 != HDfwrite(&templlong, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_ULLONG)) {
-        HDmemcpy(&tempullong, mem, sizeof(unsigned long long));
-#ifdef DEBUG_H5DUMP_BIN
-        HDfprintf(stream, fmt_ullong, tempullong);
-#else
-        if (1 != HDfwrite(&tempullong, size, 1, stream))
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_HSSIZE)) {
-        if (sizeof(hssize_t) == sizeof(int)) {
-            HDmemcpy(&tempint, mem, sizeof(int));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "%d ", tempint);
-#else
-            if (1 != HDfwrite(&tempint, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-        else if (sizeof(hssize_t) == sizeof(long)) {
-            HDmemcpy(&templong, mem, sizeof(long));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "%ld ", templong);
-#else
-            if (1 != HDfwrite(&templong, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-        else {
-            HDmemcpy(&templlong, mem, sizeof(long long));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, fmt_llong, templlong);
-#else
-            if (1 != HDfwrite(&templlong, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-    }
-    else if (H5Tequal(tid, H5T_NATIVE_HSIZE)) {
-        if (sizeof(hsize_t) == sizeof(int)) {
-            HDmemcpy(&tempuint, mem, sizeof(unsigned int));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "%u ", tempuint);
-#else
-            if (1 != HDfwrite(&tempuint, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-        else if (sizeof(hsize_t) == sizeof(long)) {
-            HDmemcpy(&tempulong, mem, sizeof(unsigned long));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "%lu ", tempulong);
-#else
-            if (1 != HDfwrite(&tempulong, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-        else {
-            HDmemcpy(&tempullong, mem, sizeof(unsigned long long));
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, fmt_ullong, tempullong);
-#else
-            if (1 != HDfwrite(&tempullong, size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-    }
-    else if (H5Tget_class(tid) == H5T_COMPOUND) {
-        unsigned j;
-        hid_t    memb;
-        unsigned nmembs;
-        size_t   offset;
+    if((type_class = H5Tget_class(tid)) < 0)
+        H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_class failed");
 
-        nmembs = H5Tget_nmembers(tid);
+    switch (type_class) {
+        case H5T_INTEGER:
+        case H5T_FLOAT:
+        case H5T_ENUM:
+            block_index = block_nelmts * size;
+            while(block_index > 0) {
+                size_t bytes_in        = 0;    /* # of bytes to write  */
+                size_t bytes_wrote     = 0;    /* # of bytes written   */
+                size_t item_size       = size;    /* size of items in bytes */
 
-        for (j = 0; j < nmembs; j++) {
-            offset = H5Tget_member_offset(tid, j);
-            memb   = H5Tget_member_type(tid, j);
+                if(block_index > sizeof(size_t))
+                    bytes_in = sizeof(size_t);
+                else
+                    bytes_in = (size_t)block_index;
 
-            if (render_bin_output(stream, container, memb, mem + offset) < 0)
-                return FAIL;
+                bytes_wrote = HDfwrite(mem, 1, bytes_in, stream);
 
-            H5Tclose(memb);
-        }
-    }
-    else if (H5Tget_class(tid) == H5T_ENUM) {
-        unsigned int i;
-        if (1 == size) {
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "0x%02x", mem[0]);
-#else
-            if (1 != HDfwrite(&mem[0], size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-        else {
-            for (i = 0; i < size; i++) {
-#ifdef DEBUG_H5DUMP_BIN
-                HDfprintf(stream, "%s%02x", i?":":"", mem[i]);
-#else
-                if (1 != HDfwrite(&mem[i], sizeof(char), 1, stream))
+                if(bytes_wrote != bytes_in || (0 == bytes_wrote && HDferror(stream)))
                     H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-            } /*i*/
-        }/*else 1 */
-    }
-    else if (H5Tget_class(tid) == H5T_ARRAY) {
-        int     k, ndims;
-        hsize_t i, dims[H5S_MAX_RANK], temp_nelmts, nelmts;
-        hid_t   memb;
-
-        /* get the array's base datatype for each element */
-        memb = H5Tget_super(tid);
-        size = H5Tget_size(memb);
-        ndims = H5Tget_array_ndims(tid);
-        H5Tget_array_dims2(tid, dims);
-        HDassert(ndims >= 1 && ndims <= H5S_MAX_RANK);
-
-        /* calculate the number of array elements */
-        for (k = 0, nelmts = 1; k < ndims; k++) {
-            temp_nelmts = nelmts;
-            temp_nelmts *= dims[k];
-            nelmts = (size_t) temp_nelmts;
-        }
-
-        /* dump the array element */
-        for (i = 0; i < nelmts; i++) {
-            if (render_bin_output(stream, container, memb, mem + i * size) < 0)
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "render_bin_output failed");
-        }
 
-        H5Tclose(memb);
-    }
-    else if (H5Tget_class(tid) == H5T_VLEN) {
-        unsigned int i;
-        hsize_t      nelmts;
-        hid_t        memb;
-
-        /* get the VL sequences's base datatype for each element */
-        memb = H5Tget_super(tid);
-        size = H5Tget_size(memb);
-
-        /* Get the number of sequence elements */
-        nelmts = ((hvl_t *) mem)->len;
-
-        for (i = 0; i < nelmts; i++) {
-            /* dump the array element */
-            if (render_bin_output(stream, container, memb, ((char *) (((hvl_t *) mem)->p)) + i * size) < 0)
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "render_bin_output failed");
-        }
-        H5Tclose(memb);
-    }
-    else if (H5Tequal(tid, H5T_STD_REF_DSETREG)) {
-        if (region_output) {
-            /* region data */
-            hid_t   region_id, region_space;
-            H5S_sel_type region_type;
-
-            region_id = H5Rdereference(container, H5R_DATASET_REGION, mem);
-            if (region_id >= 0) {
-                region_space = H5Rget_region(container, H5R_DATASET_REGION, mem);
-                if (region_space >= 0) {
-                    region_type = H5Sget_select_type(region_space);
-                    if(region_type == H5S_SEL_POINTS)
-                        render_bin_output_region_points(region_space, region_id, stream, container);
-                    else
-                        render_bin_output_region_blocks(region_space, region_id, stream, container);
-                    H5Sclose(region_space);
-                } /* end if (region_space >= 0) */
-                H5Dclose(region_id);
-            } /* end if (region_id >= 0) */
-        } /* end if (region_output... */
-    }
-    else if (H5Tequal(tid, H5T_STD_REF_OBJ)) {
-    }
-    else {
-        size_t i;
-        if (1 == size) {
-#ifdef DEBUG_H5DUMP_BIN
-            HDfprintf(stream, "0x%02x", mem[0]);
-#else
-            if (1 != HDfwrite(&mem[0], size, 1, stream))
-                H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-        }
-        else {
-            for (i = 0; i < size; i++) {
-#ifdef DEBUG_H5DUMP_BIN
-                HDfprintf(stream, "%s%02x", i?":":"", mem[i]);
-#else
-                if (1 != HDfwrite(&mem[i], sizeof(char), 1, stream))
+                block_index -= (hsize_t)bytes_wrote;
+                mem = mem + bytes_wrote;
+            }
+            break;
+        case H5T_STRING:
+            {
+                unsigned int    i;
+                H5T_str_t       pad;
+                char           *s;
+                unsigned char   tempuchar;
+
+                pad = H5Tget_strpad(tid);
+
+                for (block_index = 0; block_index < block_nelmts; block_index++) {
+                    mem = ((unsigned char*)_mem) + block_index * size;
+
+                    if (H5Tis_variable_str(tid)) {
+                        s = *(char**) mem;
+                        if (s != NULL)
+                            size = HDstrlen(s);
+                    }
+                    else {
+                        s = (char *) mem;
+                    }
+                    for (i = 0; i < size && (s[i] || pad != H5T_STR_NULLTERM); i++) {
+                        HDmemcpy(&tempuchar, &s[i], sizeof(unsigned char));
+                        if (1 != HDfwrite(&tempuchar, size, 1, stream))
+                            H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
+                    } /* i */
+                } /* for (block_index = 0; block_index < block_nelmts; block_index++) */
+            }
+            break;
+        case H5T_COMPOUND:
+            {
+                unsigned j;
+                hid_t    memb;
+                unsigned nmembs;
+                size_t   offset;
+
+                nmembs = H5Tget_nmembers(tid);
+
+                for (block_index = 0; block_index < block_nelmts; block_index++) {
+                    mem = ((unsigned char*)_mem) + block_index * size;
+                    for (j = 0; j < nmembs; j++) {
+                        offset = H5Tget_member_offset(tid, j);
+                        memb   = H5Tget_member_type(tid, j);
+
+                        if (render_bin_output(stream, container, memb, mem + offset, 1) < 0)
+                            return FAIL;
+
+                        H5Tclose(memb);
+                    }
+                }
+            }
+            break;
+        case H5T_ARRAY:
+            {
+                int     k, ndims;
+                hsize_t i, dims[H5S_MAX_RANK], temp_nelmts, nelmts;
+                hid_t   memb;
+
+                /* get the array's base datatype for each element */
+                memb = H5Tget_super(tid);
+                ndims = H5Tget_array_ndims(tid);
+                H5Tget_array_dims2(tid, dims);
+                HDassert(ndims >= 1 && ndims <= H5S_MAX_RANK);
+
+                /* calculate the number of array elements */
+                for (k = 0, nelmts = 1; k < ndims; k++) {
+                    temp_nelmts = nelmts;
+                    temp_nelmts *= dims[k];
+                    nelmts = (size_t) temp_nelmts;
+                }
+
+                for (block_index = 0; block_index < block_nelmts; block_index++) {
+                    mem = ((unsigned char*)_mem) + block_index * size;
+                    /* dump the array element */
+                    if (render_bin_output(stream, container, memb, mem, nelmts) < 0)
+                        H5E_THROW(FAIL, H5E_tools_min_id_g, "render_bin_output failed");
+                }
+                H5Tclose(memb);
+            }
+            break;
+        case H5T_VLEN:
+            {
+                unsigned int i;
+                hsize_t      nelmts;
+                hid_t        memb;
+
+                /* get the VL sequences's base datatype for each element */
+                memb = H5Tget_super(tid);
+
+                for (block_index = 0; block_index < block_nelmts; block_index++) {
+                    mem = ((unsigned char*)_mem) + block_index * size;
+                    /* Get the number of sequence elements */
+                    nelmts = ((hvl_t *) mem)->len;
+
+                    /* dump the array element */
+                    if (render_bin_output(stream, container, memb, ((char *) (((hvl_t *) mem)->p)), nelmts) < 0)
+                        H5E_THROW(FAIL, H5E_tools_min_id_g, "render_bin_output failed");
+                }
+                H5Tclose(memb);
+            }
+            break;
+        case H5T_REFERENCE:
+            {
+                if (H5Tequal(tid, H5T_STD_REF_DSETREG)) {
+                    if (region_output) {
+                        /* region data */
+                        hid_t   region_id, region_space;
+                        H5S_sel_type region_type;
+
+                        for (block_index = 0; block_index < block_nelmts; block_index++) {
+                            mem = ((unsigned char*)_mem) + block_index * size;
+                            region_id = H5Rdereference(container, H5R_DATASET_REGION, mem);
+                            if (region_id >= 0) {
+                                region_space = H5Rget_region(container, H5R_DATASET_REGION, mem);
+                                if (region_space >= 0) {
+                                    region_type = H5Sget_select_type(region_space);
+                                    if(region_type == H5S_SEL_POINTS)
+                                        render_bin_output_region_points(region_space, region_id, stream, container);
+                                    else
+                                        render_bin_output_region_blocks(region_space, region_id, stream, container);
+                                    H5Sclose(region_space);
+                                } /* end if (region_space >= 0) */
+                                H5Dclose(region_id);
+                            } /* end if (region_id >= 0) */
+                        }
+                    } /* end if (region_output... */
+                }
+                else if (H5Tequal(tid, H5T_STD_REF_OBJ)) {
+                    ;
+                }
+            }
+            break;
+        default:
+            for (block_index = 0; block_index < block_nelmts; block_index++) {
+                mem = ((unsigned char*)_mem) + block_index * size;
+                if (size != HDfwrite(mem, sizeof(char), size, stream))
                     H5E_THROW(FAIL, H5E_tools_min_id_g, "fwrite failed");
-#endif
-            } /*i*/
-        }/*else 1 */
+            }
+            break;
     }
 
 CATCH
@@ -1525,7 +1308,7 @@ render_bin_output_region_data_blocks(hid_t region_id, FILE *stream,
     if((type_size = H5Tget_size(type_id)) == 0)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
 
-    if((region_buf = HDmalloc(type_size * numelem)) == NULL)
+    if((region_buf = HDmalloc(type_size * (size_t)numelem)) == NULL)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Could not allocate region buffer");
 
     /* Select (x , x , ..., x ) x (y , y , ..., y ) hyperslab for reading memory dataset */
@@ -1551,12 +1334,8 @@ render_bin_output_region_data_blocks(hid_t region_id, FILE *stream,
         if(H5Sget_simple_extent_dims(mem_space, total_size, NULL) < 0)
             HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
 
-        for (numindex = 0; numindex < numelem; numindex++) {
-
-            render_bin_output(stream, container, type_id,
-                                ((char*)region_buf + numindex * type_size));
-            /* Render the region data element end */
-        } /* end for (jndx = 0; jndx < numelem; jndx++) */
+        render_bin_output(stream, container, type_id, (char*)region_buf, numelem);
+        /* Render the region data element end */
     } /* end for (blkndx = 0; blkndx < nblocks; blkndx++) */
 
  done:
@@ -1670,7 +1449,7 @@ render_bin_output_region_data_points(hid_t region_space, hid_t region_id,
     if((type_size = H5Tget_size(type_id)) == 0)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
 
-    if((region_buf = HDmalloc(type_size * npoints)) == NULL)
+    if((region_buf = HDmalloc(type_size * (size_t)npoints)) == NULL)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Could not allocate buffer for region");
 
     /* Allocate space for the dimension array */
@@ -1683,12 +1462,10 @@ render_bin_output_region_data_points(hid_t region_space, hid_t region_id,
 
     if(H5Dread(region_id, type_id, mem_space, region_space, H5P_DEFAULT, region_buf) < 0)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dread failed");
-    for (jndx = 0; jndx < npoints; jndx++) {
-        if(H5Sget_simple_extent_dims(region_space, dims1, NULL) < 0)
-            HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
+    if(H5Sget_simple_extent_dims(region_space, dims1, NULL) < 0)
+        HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
 
-        render_bin_output(stream, container, type_id, ((char*)region_buf + jndx * type_size));
-    } /* end for (jndx = 0; jndx < npoints; jndx++) */
+    render_bin_output(stream, container, type_id, (char*)region_buf, npoints);
 
  done:
     HDfree(region_buf);
diff --git a/tools/lib/h5tools.h b/tools/lib/h5tools.h
index 0f4b271..3e3a4cf 100644
--- a/tools/lib/h5tools.h
+++ b/tools/lib/h5tools.h
@@ -560,8 +560,7 @@ H5TOOLS_DLL void    h5tools_simple_prefix(FILE *stream, const h5tool_format_t *i
 H5TOOLS_DLL void    h5tools_region_simple_prefix(FILE *stream, const h5tool_format_t *info,
                             h5tools_context_t *ctx, hsize_t elmtno, hsize_t *ptdata, int secnum);
 
-H5TOOLS_DLL int     do_bin_output(FILE *stream, FILE *err_stream, hid_t container, hsize_t nelmts, hid_t tid, void *_mem);
-H5TOOLS_DLL int     render_bin_output(FILE *stream, hid_t container, hid_t tid, void *_mem);
+H5TOOLS_DLL int     render_bin_output(FILE *stream, hid_t container, hid_t tid, void *_mem, hsize_t nelmts);
 H5TOOLS_DLL int     render_bin_output_region_data_blocks(hid_t region_id, FILE *stream,
                             hid_t container, int ndims, hid_t type_id, hssize_t nblocks, hsize_t *ptdata);
 H5TOOLS_DLL hbool_t render_bin_output_region_blocks(hid_t region_space, hid_t region_id,
diff --git a/tools/lib/h5tools_dump.c b/tools/lib/h5tools_dump.c
index dfbb215..7555f03 100644
--- a/tools/lib/h5tools_dump.c
+++ b/tools/lib/h5tools_dump.c
@@ -261,7 +261,7 @@ h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t contai
                          h5tools_context_t *ctx/*in,out*/, unsigned flags,
                          hsize_t nelmts, hid_t type, void *_mem)
 {
-    HERR_INIT(int, SUCCEED)
+    int            ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
     unsigned char *mem = (unsigned char*) _mem;
     hsize_t        i;         /*element counter  */
     size_t         size;      /*size of each datum  */
@@ -282,7 +282,9 @@ h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t contai
 
     /* binary dump */
     if (bin_output) {
-        do_bin_output(rawdatastream, rawoutstream, container, nelmts, type, _mem);
+        if (render_bin_output(rawdatastream, container, type, _mem, nelmts) < 0) {
+            HDfprintf(rawoutstream,"\nError in writing binary stream\n");
+        }
     } /* end if */
     else {
         /* setup */
@@ -390,7 +392,6 @@ h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t contai
         h5tools_str_close(&buffer);
     }/* else bin */
 
-CATCH
     return ret_value;
 }
 
@@ -430,7 +431,7 @@ h5tools_print_region_data_blocks(hid_t region_id,
     hsize_t      numelem;
     hsize_t      numindex;
     size_t       jndx;
-    int          indx;
+    unsigned     indx;
     int          type_size;
     int          ret_value = SUCCEED;
     hid_t        mem_space = -1;
@@ -466,7 +467,7 @@ h5tools_print_region_data_blocks(hid_t region_id,
     if((type_size = H5Tget_size(type_id)) == 0)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
 
-    if((region_buf = HDmalloc(type_size * numelem)) == NULL)
+    if((region_buf = HDmalloc(type_size * (size_t)numelem)) == NULL)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Could not allocate region buffer");
 
     /* Select (x , x , ..., x ) x (y , y , ..., y ) hyperslab for reading memory dataset */
@@ -781,7 +782,7 @@ h5tools_print_region_data_points(hid_t region_space, hid_t region_id,
     hsize_t  curr_pos = 0;
     hsize_t  total_size[H5S_MAX_RANK];
     size_t   jndx;
-    int      indx;
+    unsigned indx;
     int      type_size;
     int      ret_value = SUCCEED;
     unsigned int region_flags; /* buffer extent flags */
@@ -808,7 +809,7 @@ h5tools_print_region_data_points(hid_t region_space, hid_t region_id,
     if((type_size = H5Tget_size(type_id)) == 0)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
 
-    if((region_buf = HDmalloc(type_size * npoints)) == NULL)
+    if((region_buf = HDmalloc(type_size * (size_t)npoints)) == NULL)
         HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Could not allocate buffer for region");
 
     curr_pos = 0;
@@ -1143,9 +1144,7 @@ h5tools_print_simple_subset(FILE *stream, const h5tool_format_t *info, h5tools_c
     size_row_block = sset->block.data[row_dim];
 
     /* Check if we have VL data in the dataset's datatype */
-    if (h5tools_detect_vlen_str(p_type) == TRUE)
-        vl_data = TRUE;
-    if (H5Tdetect_class(p_type, H5T_VLEN) == TRUE)
+    if (h5tools_detect_vlen(p_type) == TRUE)
         vl_data = TRUE;
 
     /* display loop */
@@ -1553,9 +1552,7 @@ h5tools_dump_simple_dset(FILE *stream, const h5tool_format_t *info, h5tools_cont
     }
 
     /* Check if we have VL data in the dataset's datatype */
-    if (h5tools_detect_vlen_str(p_type) == TRUE)
-        vl_data = TRUE;
-    if (H5Tdetect_class(p_type, H5T_VLEN) == TRUE)
+    if (h5tools_detect_vlen(p_type) == TRUE)
         vl_data = TRUE;
 
     /*
@@ -1672,7 +1669,7 @@ h5tools_dump_simple_mem(FILE *stream, const h5tool_format_t *info, h5tools_conte
                         hid_t type, hid_t space, void *mem)
 {
     HERR_INIT(herr_t, SUCCEED)
-    int                 i; /*counters  */
+    unsigned       i;      /*counters  */
     hsize_t        nelmts; /*total selected elmts */
 
     ctx->ndims = H5Sget_simple_extent_ndims(space);
@@ -2123,14 +2120,38 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
         h5tools_str_reset(buffer);
 
         h5tools_str_append(buffer, "%s ", STRPAD);
-        if (str_pad == H5T_STR_NULLTERM)
-            h5tools_str_append(buffer, "H5T_STR_NULLTERM;");
-        else if (str_pad == H5T_STR_NULLPAD)
-            h5tools_str_append(buffer, "H5T_STR_NULLPAD;");
-        else if (str_pad == H5T_STR_SPACEPAD)
-            h5tools_str_append(buffer, "H5T_STR_SPACEPAD;");
-        else
-            h5tools_str_append(buffer, "H5T_STR_ERROR;");
+        switch (str_pad) {
+            case H5T_STR_NULLTERM:
+                h5tools_str_append(buffer, "H5T_STR_NULLTERM;");
+                break;
+            case H5T_STR_NULLPAD:
+                h5tools_str_append(buffer, "H5T_STR_NULLPAD;");
+                break;
+            case H5T_STR_SPACEPAD:
+                h5tools_str_append(buffer, "H5T_STR_SPACEPAD;");
+                break;
+            case H5T_STR_RESERVED_3:
+            case H5T_STR_RESERVED_4:
+            case H5T_STR_RESERVED_5:
+            case H5T_STR_RESERVED_6:
+            case H5T_STR_RESERVED_7:
+            case H5T_STR_RESERVED_8:
+            case H5T_STR_RESERVED_9:
+            case H5T_STR_RESERVED_10:
+            case H5T_STR_RESERVED_11:
+            case H5T_STR_RESERVED_12:
+            case H5T_STR_RESERVED_13:
+            case H5T_STR_RESERVED_14:
+            case H5T_STR_RESERVED_15:
+                h5tools_str_append(buffer, "H5T_STR_UNKNOWN;");
+                break;
+            case H5T_STR_ERROR:
+                h5tools_str_append(buffer, "H5T_STR_ERROR;");
+                break;
+            default:
+                h5tools_str_append(buffer, "ERROR;");
+            break;
+        }
         h5tools_render_element(stream, info, ctx, buffer, &curr_pos, ncols, 0, 0);
 
         ctx->need_prefix = TRUE;
@@ -2140,10 +2161,36 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
 
         h5tools_str_append(buffer, "%s ", CSET);
 
-        if (cset == H5T_CSET_ASCII)
-            h5tools_str_append(buffer, "H5T_CSET_ASCII;");
-        else
-            h5tools_str_append(buffer, "unknown_cset;");
+        switch (cset) {
+            case H5T_CSET_ASCII:
+                h5tools_str_append(buffer, "H5T_CSET_ASCII;");
+                break;
+            case H5T_CSET_UTF8:
+                h5tools_str_append(buffer, "H5T_CSET_UTF8;");
+                break;
+            case H5T_CSET_RESERVED_2:
+            case H5T_CSET_RESERVED_3:
+            case H5T_CSET_RESERVED_4:
+            case H5T_CSET_RESERVED_5:
+            case H5T_CSET_RESERVED_6:
+            case H5T_CSET_RESERVED_7:
+            case H5T_CSET_RESERVED_8:
+            case H5T_CSET_RESERVED_9:
+            case H5T_CSET_RESERVED_10:
+            case H5T_CSET_RESERVED_11:
+            case H5T_CSET_RESERVED_12:
+            case H5T_CSET_RESERVED_13:
+            case H5T_CSET_RESERVED_14:
+            case H5T_CSET_RESERVED_15:
+                h5tools_str_append(buffer, "H5T_CSET_UNKNOWN;");
+                break;
+            case H5T_CSET_ERROR:
+                h5tools_str_append(buffer, "H5T_CSET_ERROR;");
+                break;
+            default:
+                h5tools_str_append(buffer, "ERROR;");
+            break;
+        }
         h5tools_render_element(stream, info, ctx, buffer, &curr_pos, ncols, 0, 0);
 
         ctx->need_prefix = TRUE;
@@ -2292,7 +2339,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
         ctx->indent_level++;
         for (i = 0; i < nmembers; i++) {
             mname = H5Tget_member_name(type, i);
-            if((mtype = H5Tget_member_type(type, i))>=0) {
+            if((mtype = H5Tget_member_type(type, i)) >= 0) {
                 ctx->need_prefix = TRUE;
                 h5tools_simple_prefix(stream, info, ctx, 0, 0);
 
@@ -2329,7 +2376,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
 
     case H5T_ENUM:
         if((super = H5Tget_super(type)) < 0)
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_nmembers failed");
+            H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_super failed");
 
         h5tools_str_append(buffer, "H5T_ENUM %s", h5tools_dump_header_format->enumblockbegin);
         h5tools_render_element(stream, info, ctx, buffer, &curr_pos, ncols, 0, 0);
@@ -2361,7 +2408,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
 
     case H5T_VLEN:
         if((super = H5Tget_super(type)) < 0)
-            H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_nmembers failed");
+            H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_super failed");
 
         h5tools_str_append(buffer, "H5T_VLEN %s ", h5tools_dump_header_format->vlenblockbegin);
 
@@ -2849,8 +2896,6 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
     hsize_t          size;           /* size of external file   */
     hsize_t          storage_size;
     hsize_t       curr_pos = 0;        /* total data element position   */
-    hsize_t       elmt_counter = 0;/* counts the # elements printed.*/
-    haddr_t          ioffset;
     h5tools_str_t buffer;          /* string into which to render   */
 
     /* setup */
@@ -2860,7 +2905,6 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
 
     storage_size = H5Dget_storage_size(obj_id);
     nfilters = H5Pget_nfilters(dcpl_id);
-    ioffset = H5Dget_offset(obj_id);
     HDstrcpy(f_name,"\0");
 
     /*-------------------------------------------------------------------------
@@ -3043,6 +3087,8 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
             h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, ncols, 0, 0);
         }
         else {
+            haddr_t          ioffset;
+
             ctx->indent_level++;
 
             ctx->need_prefix = TRUE;
@@ -3063,6 +3109,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
             h5tools_simple_prefix(stream, info, ctx, curr_pos, 0);
             
             h5tools_str_reset(&buffer);
+            ioffset = H5Dget_offset(obj_id);
             h5tools_str_append(&buffer,"OFFSET "H5_PRINTF_HADDR_FMT, ioffset);
             h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, ncols, 0, 0);
 
@@ -3375,7 +3422,6 @@ h5tools_dump_comment(FILE *stream, const h5tool_format_t *info,
     size_t        buf_size = 0;
     size_t        ncols = 80;      /* available output width        */
     h5tools_str_t buffer;          /* string into which to render   */
-    hsize_t       elmt_counter = 0;/* counts the # elements printed.*/
     hsize_t       curr_pos = ctx->sm_pos;   /* total data element position   */
                                             /* pass to the prefix in h5tools_simple_prefix the total position
                                              * instead of the current stripmine position i; this is necessary
@@ -3429,7 +3475,6 @@ h5tools_dump_attribute(FILE *stream, const h5tool_format_t *info,
 {
     h5tools_str_t buffer;          /* string into which to render   */
     size_t        ncols = 80;      /* available output width        */
-    hsize_t       elmt_counter = 0;/* counts the # elements printed.*/
     hsize_t       curr_pos = ctx->sm_pos;   /* total data element position   */
                                             /* pass to the prefix in h5tools_simple_prefix the total position
                                              * instead of the current stripmine position i; this is necessary
@@ -3808,9 +3853,7 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info,
             ndims = H5Sget_simple_extent_dims(space, size, NULL);
 
             /* Check if we have VL data in the dataset's datatype */
-            if (h5tools_detect_vlen_str(p_type) == TRUE)
-                vl_data = TRUE;
-            if (H5Tdetect_class(p_type, H5T_VLEN) == TRUE)
+            if (h5tools_detect_vlen(p_type) == TRUE)
                 vl_data = TRUE;
 
             for (i = 0; i < ndims; i++)
diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c
index 2bbafd8..9ce3524 100644
--- a/tools/lib/h5tools_str.c
+++ b/tools/lib/h5tools_str.c
@@ -693,6 +693,7 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
     unsigned       nmembs;
     static char    fmt_llong[8], fmt_ullong[8];
     H5T_str_t      pad;
+    H5T_class_t    type_class;
 
     /*
      * some tempvars to store the value before we append it to the string to
@@ -729,480 +730,494 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
             }
         }
     }
-    else if (H5Tequal(type, H5T_NATIVE_FLOAT)) {
-        float tempfloat;
+    else {
+        if((type_class = H5Tget_class(type)) < 0)
+            return NULL;
+        switch (type_class) {
+            case H5T_FLOAT:
+                if (H5Tequal(type, H5T_NATIVE_FLOAT)) {
+                    float tempfloat;
 
-        HDmemcpy(&tempfloat, vp, sizeof(float));
-        h5tools_str_append(str, OPT(info->fmt_float, "%g"), tempfloat);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_DOUBLE)) {
-        double tempdouble;
+                    HDmemcpy(&tempfloat, vp, sizeof(float));
+                    h5tools_str_append(str, OPT(info->fmt_float, "%g"), tempfloat);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_DOUBLE)) {
+                    double tempdouble;
 
-        HDmemcpy(&tempdouble, vp, sizeof(double));
-        h5tools_str_append(str, OPT(info->fmt_double, "%g"), tempdouble);
+                    HDmemcpy(&tempdouble, vp, sizeof(double));
+                    h5tools_str_append(str, OPT(info->fmt_double, "%g"), tempdouble);
 #if H5_SIZEOF_LONG_DOUBLE !=0
-    }
-    else if (H5Tequal(type, H5T_NATIVE_LDOUBLE)) {
-        long double templdouble;
+                }
+                else if (H5Tequal(type, H5T_NATIVE_LDOUBLE)) {
+                    long double templdouble;
 
-        HDmemcpy(&templdouble, vp, sizeof(long double));
-        h5tools_str_append(str, "%Lf", templdouble);
+                    HDmemcpy(&templdouble, vp, sizeof(long double));
+                    h5tools_str_append(str, "%Lf", templdouble);
 #endif
-    }
-    else if (info->ascii && (H5Tequal(type, H5T_NATIVE_SCHAR) ||
-                             H5Tequal(type, H5T_NATIVE_UCHAR))) {
-        h5tools_print_char(str, info, (char) (*ucp_vp));
-    }
-    else if (H5T_STRING == H5Tget_class(type)) {
-        unsigned int i;
-        char quote = '\0';
-        char *s;
-
-        quote = '\0';
-        if (H5Tis_variable_str(type)) {
-            /* cp_vp is the pointer into the struct where a `char*' is stored. So we have
-             * to dereference the pointer to get the `char*' to pass to HDstrlen(). */
-            s = *(char**) cp_vp;
-            if (s != NULL)
-                size = HDstrlen(s);
-        }
-        else {
-            s = cp_vp;
-            size = H5Tget_size(type);
-        }
-        pad = H5Tget_strpad(type);
-
-        /* Check for NULL pointer for string */
-        if (s == NULL) {
-            h5tools_str_append(str, "NULL");
-        }
-        else {
-            for (i = 0; i < size && (s[i] || pad != H5T_STR_NULLTERM); i++) {
-                int j = 1;
-
-                /*
-                 * Count how many times the next character repeats. If the
-                 * threshold is zero then that means it can repeat any number
-                 * of times.
-                 */
-                if (info->str_repeat > 0)
-                    while (i + j < size && s[i] == s[i + j])
-                        j++;
-
-                /*
-                 * Print the opening quote.  If the repeat count is high enough to
-                 * warrant printing the number of repeats instead of enumerating
-                 * the characters, then make sure the character to be repeated is
-                 * in it's own quote.
-                 */
-                if (info->str_repeat > 0 && j > info->str_repeat) {
-                    if (quote)
-                        h5tools_str_append(str, "%c", quote);
-
-                    quote = '\'';
-                    h5tools_str_append(str, "%s%c", i ? " " : "", quote);
-                }
-                else if (!quote) {
-                    quote = '"';
-                    h5tools_str_append(str, "%s%c", i ? " " : "", quote);
                 }
+                break;
+            case H5T_STRING:
+                {
+                    unsigned int i;
+                    char quote = '\0';
+                    char *s;
 
-                /* Print the character */
-                h5tools_print_char(str, info, s[i]);
-
-                /* Print the repeat count */
-                if (info->str_repeat && j > info->str_repeat) {
+                    quote = '\0';
+                    if (H5Tis_variable_str(type)) {
+                        /* cp_vp is the pointer into the struct where a `char*' is stored. So we have
+                         * to dereference the pointer to get the `char*' to pass to HDstrlen(). */
+                        s = *(char**) cp_vp;
+                        if (s != NULL) size = HDstrlen(s);
+                    }
+                    else {
+                        s = cp_vp;
+                        size = H5Tget_size(type);
+                    }
+                    pad = H5Tget_strpad(type);
+
+                    /* Check for NULL pointer for string */
+                    if (s == NULL) {
+                        h5tools_str_append(str, "NULL");
+                    }
+                    else {
+                        for (i = 0; i < size && (s[i] || pad != H5T_STR_NULLTERM); i++) {
+                            int j = 1;
+
+                            /*
+                             * Count how many times the next character repeats. If the
+                             * threshold is zero then that means it can repeat any number
+                             * of times.
+                             */
+                            if (info->str_repeat > 0) while (i + j < size && s[i] == s[i + j])
+                                j++;
+
+                            /*
+                             * Print the opening quote.  If the repeat count is high enough to
+                             * warrant printing the number of repeats instead of enumerating
+                             * the characters, then make sure the character to be repeated is
+                             * in it's own quote.
+                             */
+                            if (info->str_repeat > 0 && j > info->str_repeat) {
+                                if (quote) h5tools_str_append(str, "%c", quote);
+
+                                quote = '\'';
+                                h5tools_str_append(str, "%s%c", i ? " " : "", quote);
+                            }
+                            else if (!quote) {
+                                quote = '"';
+                                h5tools_str_append(str, "%s%c", i ? " " : "", quote);
+                            }
+
+                            /* Print the character */
+                            h5tools_print_char(str, info, s[i]);
+
+                            /* Print the repeat count */
+                            if (info->str_repeat && j > info->str_repeat) {
 #ifdef REPEAT_VERBOSE
-                    h5tools_str_append(str, "%c repeats %d times", quote, j - 1);
+                                h5tools_str_append(str, "%c repeats %d times", quote, j - 1);
 #else
-                    h5tools_str_append(str, "%c*%d", quote, j - 1);
+                                h5tools_str_append(str, "%c*%d", quote, j - 1);
 #endif  /* REPEAT_VERBOSE */
-                    quote = '\0';
-                    i += j - 1;
-                }
+                                quote = '\0';
+                                i += j - 1;
+                            }
 
-            }
+                        }
 
-            if (quote)
-                h5tools_str_append(str, "%c", quote);
+                        if (quote) h5tools_str_append(str, "%c", quote);
 
-            if (i == 0)
-                /*empty string*/
-                h5tools_str_append(str, "\"\"");
-        } /* end else */
-    }
-    else if (H5Tequal(type, H5T_NATIVE_INT)) {
-        HDmemcpy(&tempint, vp, sizeof(int));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(int))
-                tempint = 0;
-            else
-                tempint = (tempint >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_int, "%d"), tempint);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_UINT)) {
-        HDmemcpy(&tempuint, vp, sizeof(unsigned int));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(unsigned int))
-                tempuint = 0;
-            else
-                tempuint = (tempuint >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_uint, "%u"), tempuint);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_SCHAR)) {
-        signed char        tempchar;
-        HDmemcpy(&tempchar, cp_vp, sizeof(char));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(char))
-                tempchar = 0;
-            else
-                tempchar = (tempchar >> packed_data_offset) & packed_data_mask;
-        }
+                        if (i == 0)
+                            /*empty string*/
+                            h5tools_str_append(str, "\"\"");
+                    } /* end else */
+                }
+                break;
+            case H5T_INTEGER:
+                if (H5Tequal(type, H5T_NATIVE_INT)) {
+                    HDmemcpy(&tempint, vp, sizeof(int));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(int))
+                            tempint = 0;
+                        else
+                            tempint = (tempint >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_int, "%d"), tempint);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_UINT)) {
+                    HDmemcpy(&tempuint, vp, sizeof(unsigned int));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(unsigned int))
+                            tempuint = 0;
+                        else
+                            tempuint = (tempuint >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_uint, "%u"), tempuint);
+                }
+                else if (info->ascii && (H5Tequal(type, H5T_NATIVE_SCHAR) || H5Tequal(type, H5T_NATIVE_UCHAR))) {
+                    h5tools_print_char(str, info, (char) (*ucp_vp));
+                }
+                else if (H5Tequal(type, H5T_NATIVE_SCHAR)) {
+                    signed char tempchar;
+                    HDmemcpy(&tempchar, cp_vp, sizeof(char));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(char))
+                            tempchar = 0;
+                        else
+                            tempchar = (tempchar >> packed_data_offset) & packed_data_mask;
+                    }
 #ifdef H5_VMS
-        h5tools_str_append(str, OPT(info->fmt_schar, "%hd"), tempchar);
+                    h5tools_str_append(str, OPT(info->fmt_schar, "%hd"), tempchar);
 #else
-        h5tools_str_append(str, OPT(info->fmt_schar, "%hhd"), tempchar);
+                    h5tools_str_append(str, OPT(info->fmt_schar, "%hhd"), tempchar);
 #endif      
-    }
-    else if (H5Tequal(type, H5T_NATIVE_UCHAR)) {
-        unsigned char      tempuchar;
-        HDmemcpy(&tempuchar, ucp_vp, sizeof(unsigned char));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(unsigned char))
-                tempuchar = 0;
-            else
-                tempuchar = (tempuchar >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_uchar, "%u"), tempuchar);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_SHORT)) {
-        short tempshort;
-
-        HDmemcpy(&tempshort, vp, sizeof(short));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(short))
-                tempshort = 0;
-            else
-                tempshort = (tempshort >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_short, "%d"), tempshort);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_USHORT)) {
-        unsigned short tempushort;
-
-        HDmemcpy(&tempushort, vp, sizeof(unsigned short));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(unsigned short))
-                tempushort = 0;
-            else
-                tempushort = (tempushort >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_ushort, "%u"), tempushort);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_LONG)) {
-        HDmemcpy(&templong, vp, sizeof(long));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(long))
-                templong = 0;
-            else
-                templong = (templong >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_long, "%ld"), templong);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_ULONG)) {
-        HDmemcpy(&tempulong, vp, sizeof(unsigned long));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(unsigned long))
-                tempulong = 0;
-            else
-                tempulong = (tempulong >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_ulong, "%lu"), tempulong);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_LLONG)) {
-        HDmemcpy(&templlong, vp, sizeof(long long));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(long long))
-                templlong = 0;
-            else
-                templlong = (templlong >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_llong, fmt_llong), templlong);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_ULLONG)) {
-        HDmemcpy(&tempullong, vp, sizeof(unsigned long long));
-        if(packed_bits_num) {
-            if(packed_data_offset >= 8*sizeof(unsigned long long))
-                tempullong = 0;
-            else
-                tempullong = (tempullong >> packed_data_offset) & packed_data_mask;
-        }
-        h5tools_str_append(str, OPT(info->fmt_ullong, fmt_ullong), tempullong);
-    }
-    else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) {
-        if (sizeof(hssize_t) == sizeof(int)) {
-            HDmemcpy(&tempint, vp, sizeof(int));
-            h5tools_str_append(str, OPT(info->fmt_int, "%d"), tempint);
-        }
-        else if (sizeof(hssize_t) == sizeof(long)) {
-            HDmemcpy(&templong, vp, sizeof(long));
-            h5tools_str_append(str, OPT(info->fmt_long, "%ld"), templong);
-        }
-        else {
-            HDmemcpy(&templlong, vp, sizeof(long long));
-            h5tools_str_append(str, OPT(info->fmt_llong, fmt_llong), templlong);
-        }
-    }
-    else if (H5Tequal(type, H5T_NATIVE_HSIZE)) {
-        if (sizeof(hsize_t) == sizeof(int)) {
-            HDmemcpy(&tempuint, vp, sizeof(unsigned int));
-            h5tools_str_append(str, OPT(info->fmt_uint, "%u"), tempuint);
-        }
-        else if (sizeof(hsize_t) == sizeof(long)) {
-            HDmemcpy(&tempulong, vp, sizeof(long));
-            h5tools_str_append(str, OPT(info->fmt_ulong, "%lu"), tempulong);
-        }
-        else {
-            HDmemcpy(&tempullong, vp, sizeof(unsigned long long));
-            h5tools_str_append(str, OPT(info->fmt_ullong, fmt_ullong), tempullong);
-        }
-    }
-    else if (H5Tget_class(type) == H5T_COMPOUND) {
-        unsigned j;
-
-        nmembs = H5Tget_nmembers(type);
-        h5tools_str_append(str, "%s", OPT(info->cmpd_pre, "{"));
-
-        ctx->indent_level++;
-
-        for (j = 0; j < nmembs; j++) {
-            if (j)
-                h5tools_str_append(str, "%s", OPT(info->cmpd_sep, ", "OPTIONAL_LINE_BREAK));
-            else 
-                h5tools_str_append(str, "%s", OPT(info->cmpd_end, ""));
-
-            if(info->arr_linebreak)
-                h5tools_str_indent(str, info, ctx);
-            
-            /* The name */
-            name = H5Tget_member_name(type, j);
-            h5tools_str_append(str, OPT(info->cmpd_name, ""), name);
-            HDfree(name);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_UCHAR)) {
+                    unsigned char tempuchar;
+                    HDmemcpy(&tempuchar, ucp_vp, sizeof(unsigned char));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(unsigned char))
+                            tempuchar = 0;
+                        else
+                            tempuchar = (tempuchar >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_uchar, "%u"), tempuchar);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_SHORT)) {
+                    short tempshort;
+
+                    HDmemcpy(&tempshort, vp, sizeof(short));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(short))
+                            tempshort = 0;
+                        else
+                            tempshort = (tempshort >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_short, "%d"), tempshort);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_USHORT)) {
+                    unsigned short tempushort;
+
+                    HDmemcpy(&tempushort, vp, sizeof(unsigned short));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(unsigned short))
+                            tempushort = 0;
+                        else
+                            tempushort = (tempushort >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_ushort, "%u"), tempushort);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_LONG)) {
+                    HDmemcpy(&templong, vp, sizeof(long));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(long))
+                            templong = 0;
+                        else
+                            templong = (templong >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_long, "%ld"), templong);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_ULONG)) {
+                    HDmemcpy(&tempulong, vp, sizeof(unsigned long));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(unsigned long))
+                            tempulong = 0;
+                        else
+                            tempulong = (tempulong >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_ulong, "%lu"), tempulong);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_LLONG)) {
+                    HDmemcpy(&templlong, vp, sizeof(long long));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(long long))
+                            templlong = 0;
+                        else
+                            templlong = (templlong >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_llong, fmt_llong), templlong);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_ULLONG)) {
+                    HDmemcpy(&tempullong, vp, sizeof(unsigned long long));
+                    if (packed_bits_num) {
+                        if (packed_data_offset >= 8 * sizeof(unsigned long long))
+                            tempullong = 0;
+                        else
+                            tempullong = (tempullong >> packed_data_offset) & packed_data_mask;
+                    }
+                    h5tools_str_append(str, OPT(info->fmt_ullong, fmt_ullong), tempullong);
+                }
+                else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) {
+                    if (sizeof(hssize_t) == sizeof(int)) {
+                        HDmemcpy(&tempint, vp, sizeof(int));
+                        h5tools_str_append(str, OPT(info->fmt_int, "%d"), tempint);
+                    }
+                    else if (sizeof(hssize_t) == sizeof(long)) {
+                        HDmemcpy(&templong, vp, sizeof(long));
+                        h5tools_str_append(str, OPT(info->fmt_long, "%ld"), templong);
+                    }
+                    else {
+                        HDmemcpy(&templlong, vp, sizeof(long long));
+                        h5tools_str_append(str, OPT(info->fmt_llong, fmt_llong), templlong);
+                    }
+                }
+                else if (H5Tequal(type, H5T_NATIVE_HSIZE)) {
+                    if (sizeof(hsize_t) == sizeof(int)) {
+                        HDmemcpy(&tempuint, vp, sizeof(unsigned int));
+                        h5tools_str_append(str, OPT(info->fmt_uint, "%u"), tempuint);
+                    }
+                    else if (sizeof(hsize_t) == sizeof(long)) {
+                        HDmemcpy(&tempulong, vp, sizeof(long));
+                        h5tools_str_append(str, OPT(info->fmt_ulong, "%lu"), tempulong);
+                    }
+                    else {
+                        HDmemcpy(&tempullong, vp, sizeof(unsigned long long));
+                        h5tools_str_append(str, OPT(info->fmt_ullong, fmt_ullong), tempullong);
+                    }
+                }
+                break;
+            case H5T_COMPOUND:
+                {
+                    unsigned j;
 
-            /* The value */
-            offset = H5Tget_member_offset(type, j);
-            memb = H5Tget_member_type(type, j);
+                    nmembs = H5Tget_nmembers(type);
+                    h5tools_str_append(str, "%s", OPT(info->cmpd_pre, "{"));
 
-            h5tools_str_sprint(str, info, container, memb, cp_vp + offset, ctx);
+                    ctx->indent_level++;
 
-            H5Tclose(memb);
-        }
-        ctx->indent_level--;
+                    for (j = 0; j < nmembs; j++) {
+                        if (j)
+                            h5tools_str_append(str, "%s", OPT(info->cmpd_sep, ", "OPTIONAL_LINE_BREAK));
+                        else
+                            h5tools_str_append(str, "%s", OPT(info->cmpd_end, ""));
 
+                        if (info->arr_linebreak) h5tools_str_indent(str, info, ctx);
 
-        if(info->arr_linebreak) {
-            h5tools_str_append(str, "%s", OPT(info->cmpd_end, ""));
-            h5tools_str_indent(str, info, ctx);
-        }
-        h5tools_str_append(str, "%s", OPT(info->cmpd_suf, "}"));
+                        /* The name */
+                        name = H5Tget_member_name(type, j);
+                        h5tools_str_append(str, OPT(info->cmpd_name, ""), name);
+                        HDfree(name);
 
-    }
-    else if (H5Tget_class(type) == H5T_ENUM) {
-        char enum_name[1024];
+                        /* The value */
+                        offset = H5Tget_member_offset(type, j);
+                        memb = H5Tget_member_type(type, j);
 
-        if (H5Tenum_nameof(type, vp, enum_name, sizeof enum_name) >= 0) {
-            h5tools_str_append(str, h5tools_escape(enum_name, sizeof(enum_name)));
-        }
-        else {
-            size_t i;
-            n = H5Tget_size(type);
-            if (1 == n) {
-                h5tools_str_append(str, "0x%02x", ucp_vp[0]);
-            }
-            else {
-                for (i = 0; i < n; i++)
-                    h5tools_str_append(str, "%s%02x", i ? ":" : "", ucp_vp[i]);
-            }
-        }
-    }
-    else if (H5Tequal(type, H5T_STD_REF_DSETREG)) {
-        if (h5tools_str_is_zero(vp, H5Tget_size(type))) {
-            h5tools_str_append(str, "NULL");
-        }
-        else {
-            h5tools_str_sprint_region(str, info, container, vp);
-        }
-    }
-    else if (H5Tequal(type, H5T_STD_REF_OBJ)) {
-        /*
-         * Object references -- show the type and OID of the referenced
-         * object.
-         */
-        if (h5tools_str_is_zero(vp, H5Tget_size(type))) {
-            h5tools_str_append(str, "NULL");
-        }
-        else {
-            H5O_info_t oi;
-            const char *path;
+                        h5tools_str_sprint(str, info, container, memb, cp_vp + offset, ctx);
 
-            obj = H5Rdereference(container, H5R_OBJECT, vp);
-            H5Oget_info(obj, &oi);
+                        H5Tclose(memb);
+                    }
+                    ctx->indent_level--;
 
-            /* Print object type and close object */
-            switch (oi.type) {
-            case H5O_TYPE_GROUP:
-                h5tools_str_append(str, H5_TOOLS_GROUP);
-                break;
+                    if (info->arr_linebreak) {
+                        h5tools_str_append(str, "%s", OPT(info->cmpd_end, ""));
+                        h5tools_str_indent(str, info, ctx);
+                    }
+                    h5tools_str_append(str, "%s", OPT(info->cmpd_suf, "}"));
 
-            case H5O_TYPE_DATASET:
-                h5tools_str_append(str, H5_TOOLS_DATASET);
+                }
                 break;
-
-            case H5O_TYPE_NAMED_DATATYPE:
-                h5tools_str_append(str, H5_TOOLS_DATATYPE);
+            case H5T_ENUM:
+                {
+                    char enum_name[1024];
+
+                    if (H5Tenum_nameof(type, vp, enum_name, sizeof enum_name) >= 0) {
+                        h5tools_str_append(str, h5tools_escape(enum_name, sizeof(enum_name)));
+                    }
+                    else {
+                        size_t i;
+                        n = H5Tget_size(type);
+                        if (1 == n) {
+                            h5tools_str_append(str, "0x%02x", ucp_vp[0]);
+                        }
+                        else {
+                            for (i = 0; i < n; i++)
+                                h5tools_str_append(str, "%s%02x", i ? ":" : "", ucp_vp[i]);
+                        }
+                    }
+                }
                 break;
-
-            default:
-                h5tools_str_append(str, "%u-", (unsigned) oi.type);
+            case H5T_REFERENCE:
+                if (H5Tequal(type, H5T_STD_REF_DSETREG)) {
+                    if (h5tools_str_is_zero(vp, H5Tget_size(type))) {
+                        h5tools_str_append(str, "NULL");
+                    }
+                    else {
+                        h5tools_str_sprint_region(str, info, container, vp);
+                    }
+                }
+                else if (H5Tequal(type, H5T_STD_REF_OBJ)) {
+                    /*
+                     * Object references -- show the type and OID of the referenced
+                     * object.
+                     */
+                    if (h5tools_str_is_zero(vp, H5Tget_size(type))) {
+                        h5tools_str_append(str, "NULL");
+                    }
+                    else {
+                        H5O_info_t oi;
+                        const char *path;
+
+                        obj = H5Rdereference(container, H5R_OBJECT, vp);
+                        H5Oget_info(obj, &oi);
+
+                        /* Print object type and close object */
+                        switch (oi.type) {
+                            case H5O_TYPE_GROUP:
+                                h5tools_str_append(str, H5_TOOLS_GROUP);
+                                break;
+
+                            case H5O_TYPE_DATASET:
+                                h5tools_str_append(str, H5_TOOLS_DATASET);
+                                break;
+
+                            case H5O_TYPE_NAMED_DATATYPE:
+                                h5tools_str_append(str, H5_TOOLS_DATATYPE);
+                                break;
+
+                            default:
+                                h5tools_str_append(str, "%u-", (unsigned) oi.type);
+                                break;
+                        } /* end switch */
+                        H5Oclose(obj);
+
+                        /* Print OID */
+                        if (info->obj_hidefileno)
+                            h5tools_str_append(str, info->obj_format, oi.addr);
+                        else
+                            h5tools_str_append(str, info->obj_format, oi.fileno, oi.addr);
+
+                        /* Print name */
+                        path = lookup_ref_path(*(haddr_t *) vp);
+                        if (path) {
+                            h5tools_str_append(str, " ");
+                            h5tools_str_append(str, path);
+                            h5tools_str_append(str, " ");
+                        } /* end if */
+                    } /* end else */
+                }
                 break;
-            } /* end switch */
-            H5Oclose(obj);
-
-            /* Print OID */
-            if (info->obj_hidefileno)
-                h5tools_str_append(str, info->obj_format, oi.addr);
-            else
-                h5tools_str_append(str, info->obj_format, oi.fileno, oi.addr);
-
-            /* Print name */
-            path = lookup_ref_path(*(haddr_t *) vp);
-            if (path) {
-                h5tools_str_append(str, " ");
-                h5tools_str_append(str, path);
-                h5tools_str_append(str, " ");
-            } /* end if */
-        } /* end else */
-    }
-    else if (H5Tget_class(type) == H5T_ARRAY) {
-        int k, ndims;
-        hsize_t i, dims[H5S_MAX_RANK], temp_nelmts;
-        static int is_next_arry_elmt = 0;
-
-        /* Get the array's base datatype for each element */
-        memb = H5Tget_super(type);
-        size = H5Tget_size(memb);
-        ndims = H5Tget_array_ndims(type);
-        H5Tget_array_dims2(type, dims);
-        HDassert(ndims >= 1 && ndims <= H5S_MAX_RANK);
-
-        /* Calculate the number of array elements */
-        for (k = 0, nelmts = 1; k < ndims; k++) {
-            temp_nelmts = nelmts;
-            temp_nelmts *= dims[k];
-            HDassert(temp_nelmts == (hsize_t) ((size_t) temp_nelmts));
-            nelmts = (size_t) temp_nelmts;
-        }
-        /* Print the opening bracket */
-        h5tools_str_append(str, "%s", OPT(info->arr_pre, "["));
-
-        ctx->indent_level++;
-
-        for (i = 0; i < nelmts; i++) {
-            if (i)
-                h5tools_str_append(str, "%s", OPT(info->arr_sep, "," OPTIONAL_LINE_BREAK));
-
-            if (info->arr_linebreak && i && i % dims[ndims - 1] == 0) {
-                h5tools_str_append(str, "%s", "\n");
-                h5tools_str_indent(str, info, ctx);
-
-            } /* end if */
-            else if (i && info->arr_sep) {
-                /* if next element begin, add next line with indent */
-                if (is_next_arry_elmt) {
-                    is_next_arry_elmt = 0;
-
-                    h5tools_str_append(str, "%s", "\n ");
-                    h5tools_str_indent(str, info, ctx);
-
+            case H5T_ARRAY:
+                {
+                    int k, ndims;
+                    hsize_t i, dims[H5S_MAX_RANK], temp_nelmts;
+                    static int is_next_arry_elmt = 0;
+
+                    /* Get the array's base datatype for each element */
+                    memb = H5Tget_super(type);
+                    size = H5Tget_size(memb);
+                    ndims = H5Tget_array_ndims(type);
+                    H5Tget_array_dims2(type, dims);
+                    HDassert(ndims >= 1 && ndims <= H5S_MAX_RANK);
+
+                    /* Calculate the number of array elements */
+                    for (k = 0, nelmts = 1; k < ndims; k++) {
+                        temp_nelmts = nelmts;
+                        temp_nelmts *= dims[k];
+                        HDassert(temp_nelmts == (hsize_t) ((size_t) temp_nelmts));
+                        nelmts = (size_t) temp_nelmts;
+                    }
+                    /* Print the opening bracket */
+                    h5tools_str_append(str, "%s", OPT(info->arr_pre, "["));
+
+                    ctx->indent_level++;
+
+                    for (i = 0; i < nelmts; i++) {
+                        if (i) h5tools_str_append(str, "%s", OPT(info->arr_sep, "," OPTIONAL_LINE_BREAK));
+
+                        if (info->arr_linebreak && i && i % dims[ndims - 1] == 0) {
+                            h5tools_str_append(str, "%s", "\n");
+                            h5tools_str_indent(str, info, ctx);
+
+                        } /* end if */
+                        else if (i && info->arr_sep) {
+                            /* if next element begin, add next line with indent */
+                            if (is_next_arry_elmt) {
+                                is_next_arry_elmt = 0;
+
+                                h5tools_str_append(str, "%s", "\n ");
+                                h5tools_str_indent(str, info, ctx);
+
+                            }
+                            /* otherwise just add space */
+                            else
+                                h5tools_str_append(str, " ");
+
+                        } /* end else if */
+
+                        /* Dump values in an array element */
+                        is_next_arry_elmt = 0; /* dump all values in the array element, so turn it off */
+                        h5tools_str_sprint(str, info, container, memb, cp_vp + i * size, ctx);
+                    } /* end for */
+
+                    ctx->indent_level--;
+
+                    /* Print the closing bracket */
+                    h5tools_str_append(str, "%s", OPT(info->arr_suf, "]"));
+                    is_next_arry_elmt = 1; /* set for begining of next array element */
+                    H5Tclose(memb);
                 }
-                /* otherwise just add space */
-                else
-                    h5tools_str_append(str, " ");
-                
-            } /* end else if */
-
-            /* Dump values in an array element */
-            is_next_arry_elmt = 0; /* dump all values in the array element, so turn it off */
-            h5tools_str_sprint(str, info, container, memb, cp_vp + i * size, ctx);
-        } /* end for */
-
-        ctx->indent_level--;
-
-        /* Print the closing bracket */
-        h5tools_str_append(str, "%s", OPT(info->arr_suf, "]"));
-        is_next_arry_elmt = 1; /* set for begining of next array element */
-        H5Tclose(memb);
-    }
-    else if (H5Tget_class(type) == H5T_VLEN) {
-        unsigned int i;
+                break;
+            case H5T_VLEN:
+                {
+                    unsigned int i;
 
-        /* Get the VL sequences's base datatype for each element */
-        memb = H5Tget_super(type);
-        size = H5Tget_size(memb);
+                    /* Get the VL sequences's base datatype for each element */
+                    memb = H5Tget_super(type);
+                    size = H5Tget_size(memb);
 
-        /* Print the opening bracket */
-        h5tools_str_append(str, "%s", OPT(info->vlen_pre, "("));
+                    /* Print the opening bracket */
+                    h5tools_str_append(str, "%s", OPT(info->vlen_pre, "("));
 
-        /* Get the number of sequence elements */
-        nelmts = ((hvl_t *) cp_vp)->len;
+                    /* Get the number of sequence elements */
+                    nelmts = ((hvl_t *) cp_vp)->len;
 
-        for (i = 0; i < nelmts; i++) {
-            if (i)
-                h5tools_str_append(str, "%s", OPT(info->vlen_sep, "," OPTIONAL_LINE_BREAK));
+                    for (i = 0; i < nelmts; i++) {
+                        if (i) h5tools_str_append(str, "%s", OPT(info->vlen_sep, "," OPTIONAL_LINE_BREAK));
 
 #ifdef LATER
-            /* Need to fix so VL data breaks at correct location on end of line -QAK */
-            if (info->arr_linebreak && h5tools_str_len(str)>=info->line_ncols) {
-                int x;
+                        /* Need to fix so VL data breaks at correct location on end of line -QAK */
+                        if (info->arr_linebreak && h5tools_str_len(str)>=info->line_ncols) {
+                            int x;
 
-                h5tools_str_append(str, "%s", "\n");
+                            h5tools_str_append(str, "%s", "\n");
 
-                /* need to indent some more here */
-                if (ctx->indent_level >= 0)
-                    h5tools_str_append(str, "%s", OPT(info->line_pre, ""));
+                            /* need to indent some more here */
+                            if (ctx->indent_level >= 0)
+                                h5tools_str_append(str, "%s", OPT(info->line_pre, ""));
 
-                for (x = 0; x < ctx->indent_level + 1; x++)
-                    h5tools_str_append(str,"%s",OPT(info->line_indent,""));
-            } /* end if */
+                            for (x = 0; x < ctx->indent_level + 1; x++)
+                                h5tools_str_append(str,"%s",OPT(info->line_indent,""));
+                        } /* end if */
 #endif /* LATER */
 
-            ctx->indent_level++;
+                        ctx->indent_level++;
 
-            /* Dump the array element */
-            h5tools_str_sprint(str, info, container, memb,
-                    ((char *) (((hvl_t *) cp_vp)->p)) + i * size, ctx);
+                        /* Dump the array element */
+                        h5tools_str_sprint(str, info, container, memb, ((char *) (((hvl_t *) cp_vp)->p)) + i * size, ctx);
 
-            ctx->indent_level--;
-        } /* end for */
+                        ctx->indent_level--;
+                    } /* end for */
 
-        h5tools_str_append(str, "%s", OPT(info->vlen_suf, ")"));
-        H5Tclose(memb);
-    }
-    else {
-        /* All other types get printed as hexadecimal */
-        size_t i;
-        n = H5Tget_size(type);
-        if (1 == n) {
-            h5tools_str_append(str, "0x%02x", ucp_vp[0]);
-        }
-        else {
-            for (i = 0; i < n; i++)
-                h5tools_str_append(str, "%s%02x", i ? ":" : "", ucp_vp[i]);
-        }
-    }
+                    h5tools_str_append(str, "%s", OPT(info->vlen_suf, ")"));
+                    H5Tclose(memb);
+                }
+                break;
 
+            default:
+                {
+                    /* All other types get printed as hexadecimal */
+                    size_t i;
+                    n = H5Tget_size(type);
+                    if (1 == n) {
+                        h5tools_str_append(str, "0x%02x", ucp_vp[0]);
+                    }
+                    else {
+                        for (i = 0; i < n; i++)
+                            h5tools_str_append(str, "%s%02x", i ? ":" : "", ucp_vp[i]);
+                    }
+                }
+                break;
+        } /* end switch */
+    }
     return h5tools_str_fmt(str, start, OPT(info->elmt_fmt, "%s"));
 }
 
@@ -1363,3 +1378,52 @@ h5tools_str_is_zero(const void *_mem, size_t size)
 
     return TRUE;
 }
+
+/*-------------------------------------------------------------------------
+ * Function:    h5tools_str_replace
+ *
+ * Purpose:     replace all occurrences of substring.
+ *
+ * Return:      char * 
+ *
+ * Programmer:  Peter Cao
+ *              March 8, 2012
+ *
+ * Notes:
+ *   Applications need to call free() to free the memoery allocated for 
+ *   the return string 
+ *
+ *-------------------------------------------------------------------------
+ */
+char *
+h5tools_str_replace ( const char *string, const char *substr, const char *replacement )
+{
+	char *tok = NULL;
+	char *newstr = NULL;
+	char *oldstr = NULL;
+	char *head = NULL;
+     
+	if ( substr == NULL || replacement == NULL ) 
+		return strdup (string);
+		
+	newstr = strdup (string);
+	head = newstr;
+	while ( (tok = strstr ( head, substr ))){
+		oldstr = newstr;
+		newstr = HDmalloc ( strlen ( oldstr ) - strlen ( substr ) + strlen ( replacement ) + 1 );
+
+        if ( newstr == NULL ){
+			HDfree (oldstr);
+			return NULL;
+        }
+        memcpy ( newstr, oldstr, tok - oldstr );
+        memcpy ( newstr + (tok - oldstr), replacement, strlen ( replacement ) );
+        memcpy ( newstr + (tok - oldstr) + strlen( replacement ), tok + strlen ( substr ), strlen ( oldstr ) - strlen ( substr ) - ( tok - oldstr ) );
+        memset ( newstr + strlen ( oldstr ) - strlen ( substr ) + strlen ( replacement ) , 0, 1 );
+        /* move back head right after the last replacement */
+        head = newstr + (tok - oldstr) + strlen( replacement );
+        HDfree (oldstr);
+    }
+	
+    return newstr;
+}
diff --git a/tools/lib/h5tools_str.h b/tools/lib/h5tools_str.h
index 9527a56..38697c6 100644
--- a/tools/lib/h5tools_str.h
+++ b/tools/lib/h5tools_str.h
@@ -47,5 +47,7 @@ H5TOOLS_DLL void     h5tools_str_sprint_region(h5tools_str_t *str, const h5tool_
 H5TOOLS_DLL char    *h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info,
                                    hid_t container, hid_t type, void *vp,
                                    h5tools_context_t *ctx);
+H5TOOLS_DLL char    *h5tools_str_replace ( const char *string, const char *substr, 
+									const char *replacement );
 
 #endif  /* H5TOOLS_STR_H__ */
diff --git a/tools/lib/h5tools_utils.c b/tools/lib/h5tools_utils.c
index 11ab5f3..79322bc 100644
--- a/tools/lib/h5tools_utils.c
+++ b/tools/lib/h5tools_utils.c
@@ -852,6 +852,8 @@ H5tools_get_symlink_info(hid_t file_id, const char * linkpath, h5tool_link_info_
 
         /* set target obj type to return */
         link_info->trg_type = trg_oinfo.type;
+        link_info->objno = trg_oinfo.addr;
+        link_info->fileno = trg_oinfo.fileno;
     } /* end if */
     else
         link_info->trg_type = H5O_TYPE_UNKNOWN;
diff --git a/tools/lib/h5tools_utils.h b/tools/lib/h5tools_utils.h
index f30974a..10c643d 100644
--- a/tools/lib/h5tools_utils.h
+++ b/tools/lib/h5tools_utils.h
@@ -161,6 +161,8 @@ typedef struct {
     H5O_type_t  trg_type;  /* OUT: target type */
     const char *trg_path;  /* OUT: target obj path. This must be freed 
                             *      when used with H5tools_get_symlink_info() */
+    haddr_t     objno;     /* OUT: target object address */
+    unsigned long  fileno; /* OUT: File number that target object is located in */
     H5L_info_t linfo;      /* OUT: link info */
     h5tool_opt_t opt;      /* IN: options */
 } h5tool_link_info_t;
diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c
index ad8b9fe..8455360 100644
--- a/tools/lib/h5trav.c
+++ b/tools/lib/h5trav.c
@@ -48,6 +48,9 @@ typedef struct {
     hid_t fid;                      /* File ID being traversed */
 } trav_print_udata_t;
 
+/* format for hsize_t */
+#define HSIZE_T_FORMAT   "%"H5_PRINTF_LL_WIDTH"u"
+
 /*-------------------------------------------------------------------------
  * local functions
  *-------------------------------------------------------------------------
@@ -61,6 +64,46 @@ static void trav_table_addlink(trav_table_t *table,
                         const char *path);
 
 /*-------------------------------------------------------------------------
+ * local variables
+ *-------------------------------------------------------------------------
+ */
+static H5_index_t trav_index_by = H5_INDEX_NAME;
+static H5_iter_order_t trav_index_order = H5_ITER_INC;
+
+static int trav_verbosity = 0;
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_set_index
+ *
+ * Purpose: Set indexing properties for the objects & links in the file
+ *
+ * Return: none
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+h5trav_set_index(H5_index_t print_index_by, H5_iter_order_t print_index_order)
+{
+    trav_index_by = print_index_by;
+    trav_index_order = print_index_order;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_set_verbose
+ *
+ * Purpose: Set verbosity of file contents 1=>attributes
+ *
+ * Return: none
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+h5trav_set_verbose(int print_verbose)
+{
+    trav_verbosity = print_verbose;
+}
+
+/*-------------------------------------------------------------------------
  * "h5trav info" public functions. used in h5diff
  *-------------------------------------------------------------------------
  */
@@ -255,12 +298,12 @@ traverse(hid_t file_id, const char *grp_name, hbool_t visit_start,
         /* Check for iteration of links vs. visiting all links recursively */
         if(recurse) {
             /* Visit all links in group, recursively */
-            if(H5Lvisit_by_name(file_id, grp_name, H5_INDEX_NAME, H5_ITER_INC, traverse_cb, &udata, H5P_DEFAULT) < 0)
+            if(H5Lvisit_by_name(file_id, grp_name, trav_index_by, trav_index_order, traverse_cb, &udata, H5P_DEFAULT) < 0)
                 return -1;
         } /* end if */
         else {
             /* Iterate over links in group */
-            if(H5Literate_by_name(file_id, grp_name, H5_INDEX_NAME, H5_ITER_INC, NULL, traverse_cb, &udata, H5P_DEFAULT) < 0)
+            if(H5Literate_by_name(file_id, grp_name, trav_index_by, trav_index_order, NULL, traverse_cb, &udata, H5P_DEFAULT) < 0)
                 return -1;
         } /* end else */
 
@@ -311,6 +354,31 @@ trav_info_add(trav_info_t *info, const char *path, h5trav_type_t obj_type)
     info->paths[idx].objno = HADDR_UNDEF;
 } /* end trav_info_add() */
 
+
+/*-------------------------------------------------------------------------
+ * Function: trav_fileinfo_add
+ *
+ * Purpose: Add a file addr & fileno to info struct
+ *
+ * Return: void
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+trav_fileinfo_add(trav_info_t *info, hid_t loc_id)
+{
+    H5O_info_t oinfo;
+    size_t idx = info->nused - 1;
+
+    if ( info->paths[idx].path && HDstrcmp(info->paths[idx].path, "."))
+      H5Oget_info_by_name(loc_id, info->paths[idx].path, &oinfo, H5P_DEFAULT);
+    else
+      H5Oget_info(loc_id, &oinfo);
+
+    info->paths[idx].objno = oinfo.addr;
+    info->paths[idx].fileno = oinfo.fileno;
+} /* end trav_fileinfo_add() */
+
 
 /*-------------------------------------------------------------------------
  * Function: trav_info_visit_obj
@@ -821,6 +889,72 @@ void trav_table_free( trav_table_t *table )
     HDfree(table);
 }
 
+static herr_t
+trav_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo, void *op_data)
+{
+    char               *buf;
+
+    buf = (char*)op_data;
+    if((strlen(buf)==1) && (*buf=='/'))
+        printf(" %-10s %s%s", "attribute", buf, attr_name);
+    else
+        printf(" %-10s %s/%s", "attribute", buf, attr_name);
+
+#ifdef H5TRAV_PRINT_SPACE
+    if(trav_verbosity < 2) {
+#endif
+        printf("\n");
+#ifdef H5TRAV_PRINT_SPACE
+    }
+    else {
+        hid_t               attr = -1;
+        hid_t               space = -1;
+        hsize_t             size[H5S_MAX_RANK];
+        int                 ndims;
+        int                 i;
+        H5S_class_t         space_type;
+
+        if((attr = H5Aopen(obj, attr_name, H5P_DEFAULT))) {
+            space = H5Aget_space(attr);
+
+            /* Data space */
+            ndims = H5Sget_simple_extent_dims(space, size, NULL);
+            space_type = H5Sget_simple_extent_type(space);
+            switch(space_type) {
+                case H5S_SCALAR:
+                    /* scalar dataspace */
+                    printf(" scalar\n");
+                    break;
+
+                case H5S_SIMPLE:
+                    /* simple dataspace */
+                    printf(" {");
+                    for (i=0; i<ndims; i++) {
+                        printf("%s" HSIZE_T_FORMAT, i?", ":"", size[i]);
+                    }
+                    printf("}\n");
+                    break;
+
+                case H5S_NULL:
+                    /* null dataspace */
+                    printf(" null\n");
+                    break;
+
+                default:
+                    /* Unknown dataspace type */
+                    printf(" unknown\n");
+                    break;
+            } /* end switch */
+
+            H5Sclose(space);
+            H5Aclose(attr);
+        }
+    }
+#endif
+
+    return(0);
+}
+
 
 /*-------------------------------------------------------------------------
  * Function: trav_print_visit_obj
@@ -837,8 +971,9 @@ void trav_table_free( trav_table_t *table )
  */
 static int
 trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
-    const char *already_visited, void UNUSED *udata)
+    const char *already_visited, void *udata)
 {
+    trav_print_udata_t *print_udata = (trav_print_udata_t *)udata;
     /* Print the name of the object */
     /* (no new-line, so that objects that we've encountered before can print
      *  the name of the original object)
@@ -862,9 +997,12 @@ trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
     } /* end switch */
 
     /* Check if we've already seen this object */
-    if(NULL == already_visited)
+    if(NULL == already_visited) {
         /* Finish printing line about object */
         printf("\n");
+        if(trav_verbosity > 0)
+            H5Aiterate_by_name(print_udata->fid, path, trav_index_by, trav_index_order, NULL, trav_attr, path, H5P_DEFAULT);
+    }
     else
         /* Print the link's original name */
         printf(" -> %s\n", already_visited);
diff --git a/tools/lib/h5trav.h b/tools/lib/h5trav.h
index da8dc69..3548c6b 100644
--- a/tools/lib/h5trav.h
+++ b/tools/lib/h5trav.h
@@ -131,6 +131,7 @@ extern "C" {
  * "h5trav general" public functions
  *-------------------------------------------------------------------------
  */
+H5TOOLS_DLL void h5trav_set_index(H5_index_t print_index_by, H5_iter_order_t print_index_order);
 H5TOOLS_DLL int h5trav_visit(hid_t file_id, const char *grp_name, 
     hbool_t visit_start, hbool_t recurse, h5trav_obj_func_t visit_obj, 
     h5trav_lnk_func_t visit_lnk, void *udata);
@@ -159,6 +160,7 @@ H5TOOLS_DLL int  h5trav_getindext(const char *obj, const trav_table_t *travt);
  *-------------------------------------------------------------------------
  */
 H5TOOLS_DLL int h5trav_print(hid_t fid);
+H5TOOLS_DLL void h5trav_set_verbose(int print_verbose);
 
 #ifdef __cplusplus
 }
@@ -175,6 +177,8 @@ H5TOOLS_DLL void trav_info_free(trav_info_t *info);
 
 H5TOOLS_DLL void trav_info_add(trav_info_t *info, const char *path, h5trav_type_t obj_type);
 
+H5TOOLS_DLL void trav_fileinfo_add(trav_info_t *info, hid_t loc_id);
+
 /*-------------------------------------------------------------------------
  * table private functions
  *-------------------------------------------------------------------------
diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt
index 72930c9..7f61a67 100644
--- a/tools/misc/CMakeLists.txt
+++ b/tools/misc/CMakeLists.txt
@@ -311,11 +311,16 @@ ENDIF (BUILD_TESTING)
 #-----------------------------------------------------------------------------
 # Rules for Installation of tools using make Install target
 #-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5debug ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+#INSTALL_PROGRAM_PDB (h5repart ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+#INSTALL_PROGRAM_PDB (h5mkgrp ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
 INSTALL (
     TARGETS
         h5debug h5repart h5mkgrp
     RUNTIME DESTINATION
-        ${HDF5_INSTALL_BIN_DIR}/tools
+        ${HDF5_INSTALL_BIN_DIR}
     COMPONENT
         toolsapplications
 )
diff --git a/tools/misc/Makefile.am b/tools/misc/Makefile.am
index 11c86fa..0055f39 100644
--- a/tools/misc/Makefile.am
+++ b/tools/misc/Makefile.am
@@ -25,7 +25,7 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 #test script and program
 TEST_PROG=h5repart_gentest talign
-TEST_SCRIPT=testh5repart.sh $(srcdir)/testh5mkgrp.sh
+TEST_SCRIPT=testh5repart.sh testh5mkgrp.sh
 
 check_PROGRAMS=$(TEST_PROG) repart_test
 check_SCRIPTS=$(TEST_SCRIPT)
diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in
index ce8e991..8c2e1c1 100644
--- a/tools/misc/Makefile.in
+++ b/tools/misc/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -34,6 +33,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,20 +69,22 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/h5cc.in $(srcdir)/testh5repart.sh.in \
+	$(srcdir)/h5cc.in $(srcdir)/testh5mkgrp.sh.in \
+	$(srcdir)/testh5repart.sh.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/mkinstalldirs \
 	$(top_srcdir)/config/commence.am \
 	$(top_srcdir)/config/conclude.am
 check_PROGRAMS = $(am__EXEEXT_1) repart_test$(EXEEXT)
 bin_PROGRAMS = h5debug$(EXEEXT) h5repart$(EXEEXT) h5mkgrp$(EXEEXT)
-TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
 subdir = tools/misc
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES = h5cc testh5repart.sh
+CONFIG_CLEAN_FILES = h5cc testh5mkgrp.sh testh5repart.sh
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
 am__EXEEXT_1 = h5repart_gentest$(EXEEXT) talign$(EXEEXT)
@@ -75,9 +93,10 @@ h5debug_SOURCES = h5debug.c
 h5debug_OBJECTS = h5debug.$(OBJEXT)
 h5debug_LDADD = $(LDADD)
 h5debug_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 h5debug_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(h5debug_LDFLAGS) $(LDFLAGS) -o $@
@@ -128,7 +147,25 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
 depcomp = $(SHELL) $(top_srcdir)/bin/depcomp
 am__depfiles_maybe = depfiles
@@ -139,32 +176,35 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = h5debug.c h5mkgrp.c h5repart.c h5repart_gentest.c \
 	repart_test.c talign.c
 DIST_SOURCES = h5debug.c h5mkgrp.c h5repart.c h5repart_gentest.c \
 	repart_test.c talign.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
+ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
 AMTAR = @AMTAR@
 
@@ -182,12 +222,9 @@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
 AS = @AS@
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-AUTOCONF = /home1/packages/autoconf/autoconf-2.60/bin/autoconf
-AUTOHEADER = /home1/packages/autoconf/autoconf-2.60/bin/autoheader
-AUTOMAKE = /home1/packages/automake/automake-1.9.6/bin/automake-1.9
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BYTESEX = @BYTESEX@
 CC = @CC@
@@ -456,7 +493,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 #test script and program
 TEST_PROG = h5repart_gentest talign
-TEST_SCRIPT = testh5repart.sh $(srcdir)/testh5mkgrp.sh
+TEST_SCRIPT = testh5repart.sh testh5mkgrp.sh
 check_SCRIPTS = $(TEST_SCRIPT)
 SCRIPT_DEPEND = h5repart$(EXEEXT) h5mkgrp$(EXEEXT)
 bin_SCRIPTS = h5redeploy
@@ -491,6 +528,10 @@ LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES)                 \
 PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS)   \
         $(EXTRA_PROG)
 
+chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) 
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+AM_SH_LOG_FLAGS = 
 TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_)
 TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_)
 TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_)
@@ -520,6 +561,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -531,12 +573,17 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 h5cc: $(top_builddir)/config.status $(srcdir)/h5cc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+testh5mkgrp.sh: $(top_builddir)/config.status $(srcdir)/testh5mkgrp.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 testh5repart.sh: $(top_builddir)/config.status $(srcdir)/testh5repart.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p || test -f $$p1; \
@@ -585,28 +632,31 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-h5debug$(EXEEXT): $(h5debug_OBJECTS) $(h5debug_DEPENDENCIES) 
+h5debug$(EXEEXT): $(h5debug_OBJECTS) $(h5debug_DEPENDENCIES) $(EXTRA_h5debug_DEPENDENCIES) 
 	@rm -f h5debug$(EXEEXT)
 	$(AM_V_CCLD)$(h5debug_LINK) $(h5debug_OBJECTS) $(h5debug_LDADD) $(LIBS)
-h5mkgrp$(EXEEXT): $(h5mkgrp_OBJECTS) $(h5mkgrp_DEPENDENCIES) 
+h5mkgrp$(EXEEXT): $(h5mkgrp_OBJECTS) $(h5mkgrp_DEPENDENCIES) $(EXTRA_h5mkgrp_DEPENDENCIES) 
 	@rm -f h5mkgrp$(EXEEXT)
 	$(AM_V_CCLD)$(h5mkgrp_LINK) $(h5mkgrp_OBJECTS) $(h5mkgrp_LDADD) $(LIBS)
-h5repart$(EXEEXT): $(h5repart_OBJECTS) $(h5repart_DEPENDENCIES) 
+h5repart$(EXEEXT): $(h5repart_OBJECTS) $(h5repart_DEPENDENCIES) $(EXTRA_h5repart_DEPENDENCIES) 
 	@rm -f h5repart$(EXEEXT)
 	$(AM_V_CCLD)$(h5repart_LINK) $(h5repart_OBJECTS) $(h5repart_LDADD) $(LIBS)
-h5repart_gentest$(EXEEXT): $(h5repart_gentest_OBJECTS) $(h5repart_gentest_DEPENDENCIES) 
+h5repart_gentest$(EXEEXT): $(h5repart_gentest_OBJECTS) $(h5repart_gentest_DEPENDENCIES) $(EXTRA_h5repart_gentest_DEPENDENCIES) 
 	@rm -f h5repart_gentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5repart_gentest_OBJECTS) $(h5repart_gentest_LDADD) $(LIBS)
-repart_test$(EXEEXT): $(repart_test_OBJECTS) $(repart_test_DEPENDENCIES) 
+repart_test$(EXEEXT): $(repart_test_OBJECTS) $(repart_test_DEPENDENCIES) $(EXTRA_repart_test_DEPENDENCIES) 
 	@rm -f repart_test$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(repart_test_OBJECTS) $(repart_test_LDADD) $(LIBS)
-talign$(EXEEXT): $(talign_OBJECTS) $(talign_DEPENDENCIES) 
+talign$(EXEEXT): $(talign_OBJECTS) $(talign_DEPENDENCIES) $(EXTRA_talign_DEPENDENCIES) 
 	@rm -f talign$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(talign_OBJECTS) $(talign_LDADD) $(LIBS)
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -634,9 +684,7 @@ uninstall-binSCRIPTS:
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -654,26 +702,23 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -730,6 +775,20 @@ GTAGS:
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
@@ -782,10 +841,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -876,7 +940,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
 
 .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
 	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libtool ctags distclean distclean-compile \
+	clean-libtool cscopelist ctags distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-binSCRIPTS install-data \
@@ -916,7 +980,7 @@ h5redeploy: h5redeploy.in
 # build files in this directory.
 build-lib: $(LIB)
 build-progs: $(LIB) $(PROGS)
-build-tests: $(LIB) $(PROGS) $(TESTS)
+build-tests: $(LIB) $(PROGS) $(chk_TESTS)
 
 # General rule for recursive building targets.
 # BUILT_SOURCES contain targets that need to be built before anything else
@@ -942,7 +1006,7 @@ check-clean ::
 # Tell Automake to build tests when the user types `make all' (this is
 # not its default behavior).  Also build EXTRA_LIB and EXTRA_PROG since
 # Automake won't build them automatically, either.
-all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS)
+all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
 
 # make install-doc doesn't do anything outside of doc directory, but
 # Makefiles should recognize it.
@@ -966,7 +1030,7 @@ check-install: installcheck
 # Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop.
 # The timestamps give a rough idea how much time the tests use.
 #
-# Note that targets in TESTS (defined above) will be built when the user
+# Note that targets in chk_TESTS (defined above) will be built when the user
 # types 'make tests' or 'make check', but only programs in TEST_PROG,
 # TEST_PROG_PARA, or TEST_SCRIPT will actually be executed.
 check-TESTS: test
@@ -976,7 +1040,7 @@ test _test:
 	@$(MAKE) build-check-p
 
 # Actual execution of check-s.
-build-check-s: $(LIB) $(PROGS) $(TESTS)
+build-check-s: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then      \
 	   echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1066,7 +1130,7 @@ $(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_:
 	fi
 
 # Actual execution of check-p.
-build-check-p: $(LIB) $(PROGS) $(TESTS)
+build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
 	@if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then      \
 	   echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \
 	fi
@@ -1096,7 +1160,7 @@ build-check-p: $(LIB) $(PROGS) $(TESTS)
 	fi
 
 # Run test with different Virtual File Driver
-check-vfd: $(LIB) $(PROGS) $(TESTS)
+check-vfd: $(LIB) $(PROGS) $(chk_TESTS)
 	@for vfd in $(VFD_LIST) dummy; do                                     \
 	    if test $$vfd != dummy; then                                      \
 	        echo "============================";                          \
diff --git a/tools/misc/h5debug.c b/tools/misc/h5debug.c
index ad4188c..e8de44c 100644
--- a/tools/misc/h5debug.c
+++ b/tools/misc/h5debug.c
@@ -25,28 +25,29 @@
  *
  *-------------------------------------------------------------------------
  */
-#define H5A_PACKAGE		/*suppress error about including H5Apkg  */
-#define H5B2_PACKAGE		/*suppress error about including H5B2pkg  */
-#define H5B2_TESTING		/*suppress warning about H5B2 testing funcs*/
-#define H5F_PACKAGE		/*suppress error about including H5Fpkg	  */
-#define H5G_PACKAGE		/*suppress error about including H5Gpkg	  */
-#define H5HF_PACKAGE		/*suppress error about including H5HFpkg  */
-#define H5O_PACKAGE		/*suppress error about including H5Opkg	  */
-#define H5SM_PACKAGE		/*suppress error about including H5SMpkg  */
-
-#include "H5private.h"		/* Generic Functions			*/
-#include "H5Apkg.h"		/* Attributes				*/
-#include "H5B2pkg.h"		/* v2 B-trees				*/
-#include "H5Dprivate.h"		/* Datasets				*/
-#include "H5Eprivate.h"		/* Error handling		  	*/
-#include "H5Fpkg.h"             /* File access				*/
-#include "H5FSprivate.h"	/* Free space manager			*/
-#include "H5Gpkg.h"		/* Groups				*/
-#include "H5HFpkg.h"		/* Fractal heaps			*/
-#include "H5HGprivate.h"	/* Global Heaps				*/
-#include "H5Iprivate.h"		/* IDs			  		*/
-#include "H5Opkg.h"             /* Object headers			*/
-#include "H5SMpkg.h"		/* Implicitly shared messages		*/
+#define H5A_PACKAGE	/*suppress error about including H5Apkg  */
+#define H5B2_PACKAGE	/*suppress error about including H5B2pkg  */
+#define H5B2_TESTING	/*suppress warning about H5B2 testing funcs*/
+#define H5D_PACKAGE     /*suppress error about including H5Dpkg  */
+#define H5F_PACKAGE	/*suppress error about including H5Fpkg	  */
+#define H5G_PACKAGE	/*suppress error about including H5Gpkg	  */
+#define H5HF_PACKAGE	/*suppress error about including H5HFpkg  */
+#define H5O_PACKAGE	/*suppress error about including H5Opkg	  */
+#define H5SM_PACKAGE	/*suppress error about including H5SMpkg  */
+
+#include "H5private.h"	/* Generic Functions			*/
+#include "H5Apkg.h"	/* Attributes				*/
+#include "H5B2pkg.h"	/* v2 B-trees				*/
+#include "H5Dpkg.h"     /* Datasets             		*/
+#include "H5Eprivate.h"	/* Error handling		  	*/
+#include "H5Fpkg.h"     /* File access				*/
+#include "H5FSprivate.h" /* Free space manager			*/
+#include "H5Gpkg.h"	/* Groups				*/
+#include "H5HFpkg.h"	/* Fractal heaps			*/
+#include "H5HGprivate.h" /* Global Heaps			*/
+#include "H5Iprivate.h"	/* IDs			  		*/
+#include "H5Opkg.h"     /* Object headers			*/
+#include "H5SMpkg.h"	/* Implicitly shared messages		*/
 
 /* File drivers */
 #include "H5FDfamily.h"
diff --git a/tools/misc/talign.c b/tools/misc/talign.c
index 88ebaa6..b77d846 100644
--- a/tools/misc/talign.c
+++ b/tools/misc/talign.c
@@ -148,28 +148,31 @@ out:
         result = 1;
         mname = H5Tget_member_name(fix, 0);
         printf("%14s (%2d) %6s = %s\n",
-            mname, (int)H5Tget_member_offset(fix,0),
+            mname ? mname : "(null)", (int)H5Tget_member_offset(fix,0),
             string5, (char *)(data + H5Tget_member_offset(fix, 0)));
-        free(mname);
+        if(mname)
+            free(mname);
 
         fptr = (float *)(data + H5Tget_member_offset(fix, 1));
         mname = H5Tget_member_name(fix, 1);
         printf("Data comparison:\n"
             "%14s (%2d) %6f = %f\n"
             "                    %6f = %f\n",
-            mname, (int)H5Tget_member_offset(fix,1),
+            mname ? mname : "(null)", (int)H5Tget_member_offset(fix,1),
             fok[0], fptr[0],
             fok[1], fptr[1]);
-        free(mname);
+        if(mname)
+            free(mname);
 
         fptr = (float *)(data + H5Tget_member_offset(fix, 2));
         mname = H5Tget_member_name(fix, 2);
         printf("%14s (%2d) %6f = %f\n"
             "                    %6f = %6f\n",
-            mname, (int)H5Tget_member_offset(fix,2),
+            mname ? mname : "(null)", (int)H5Tget_member_offset(fix,2),
             fnok[0], fptr[0],
             fnok[1], fptr[1]);
-        free(mname);
+        if(mname)
+            free(mname);
 
         fptr = (float *)(data + H5Tget_member_offset(fix, 1));
         printf("\n"
diff --git a/tools/misc/testh5mkgrp.sh b/tools/misc/testh5mkgrp.sh
deleted file mode 100644
index 7bb98cb..0000000
--- a/tools/misc/testh5mkgrp.sh
+++ /dev/null
@@ -1,243 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5.  The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html.  COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page.  It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
-# access to either file, you may request a copy from help at hdfgroup.org.
-#
-# Tests for the h5mkgrp tool
-#
-# Quincey Koziol (koziol at hdfgroup.org)
-# Tuesday, February 13, 2007
-#
-
-TESTNAME=h5mkgrp
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-H5MKGRP=h5mkgrp             # The tool name
-H5MKGRP_BIN=`pwd`/$H5MKGRP  # The path of the tool binary
-H5LS=h5ls                   # The h5ls tool name 
-H5LS_ARGS=-vr               # Arguments to the h5ls tool
-H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary
-
-nerrors=0
-verbose=yes
-
-INDIR=$srcdir/../testfiles
-OUTDIR=../testfiles
-CMP='cmp -s'
-DIFF='diff -c'
-
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-    srcdir=.
-fi
-test -d $OUTDIR || mkdir $OUTDIR
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-TESTING() 
-{
-    SPACES="                                                               "
-    echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012'
-}
-
-# Source in the output filter function definitions.
-. $srcdir/../../bin/output_filter.sh 
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY_H5LS() 
-{
-    SPACES="                                                               "
-    echo "Verifying h5ls file structure $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Run a test and print PASS or *FAIL*. If h5mkgrp can complete
-# with exit status 0, consider it pass. If a test fails then increment
-# the `nerrors' global variable.
-# Assumed arguments:
-# $* arguments for h5mkgrp.
-
-TOOLTEST() 
-{
-    TESTING $H5MKGRP $@
-    (
-    echo "#############################"
-    echo " output for '$H5MKGRP $@'"
-    echo "#############################"
-    $RUNSERIAL $H5MKGRP_BIN $@
-    ) > output.out
-    RET=$?
-    if [ $RET != 0 ]; then
-        echo "*FAILED*"
-        echo "failed result is:"
-        cat output.out
-        nerrors="`expr $nerrors + 1`"
-    else
-        echo " PASSED"
-
-        # Clean up output file
-        if test -z "$HDF5_NOCLEANUP"; then
-           rm -f output.out
-        fi
-    fi
-}
-
-# Call the h5ls tool to verify the correct output data in the destination file
-#
-H5LSTEST() 
-{
-    expect="$INDIR/`basename $1 .h5`.ls"
-    actual="$OUTDIR/`basename $1 .h5`.out"
-    actual_sav=${actual}-sav
-
-    # Stderr is included in stdout so that the diff can detect
-    # any unexpected output from that stream too.
-    VERIFY_H5LS  $@
-    (
-      echo "#############################"
-      echo "Expected output for '$H5LS $@'" 
-      echo "#############################"
-      $RUNSERIAL $H5LS_BIN $H5LS_ARGS $@
-    ) 2>&1 |sed 's/Modified:.*/Modified:  XXXX-XX-XX XX:XX:XX XXX/' >$actual
-
-    # save actual in case it is needed later.
-    cp $actual $actual_sav
-    STDOUT_FILTER $actual
-    STDERR_FILTER $actual
-
-   if [ ! -f $expect ]; then
-    # Create the expect file if it doesn't yet exist.
-    echo " CREATED"
-    cp $actual $expect
-   elif $CMP $expect $actual; then
-      echo " PASSED"
-   else
-      echo "*FAILED*"
-      echo "    Expected result (*.ls) differs from actual result (*.out)"
-      nerrors="`expr $nerrors + 1`"
-      test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
-   fi
-
-   # Clean up output file
-   if test -z "$HDF5_NOCLEANUP"; then
-      rm -f $actual $actual_sav
-   fi
-}
-
-# Single run of tool
-#
-# Assumed arguments:
-# $1 is test file name
-# $2 is h5mkgrp options
-# $* are groups to create
-RUNTEST() 
-{
-    FILEOUT=$OUTDIR/$1
-    shift
-    H5MKGRP_ARGS=$1
-    shift
-
-    # Remove any output file left over from previous test run
-    rm -f $FILEOUT
-
-    # Run test
-    TOOLTEST $H5MKGRP_ARGS $FILEOUT $@
-
-    # Verify that the file created above is correct
-    H5LSTEST $FILEOUT
-
-    # Remove output file created, if the "no cleanup" environment variable is
-    #   not defined
-echo "FILEOUT=" $FILEOUT
-    if test -z "$HDF5_NOCLEANUP"; then
-        rm -f $FILEOUT
-    fi
-}
-
-# Single run of tool
-#
-# Assumed arguments:
-# $1 is test expected output file
-# $2 is h5mkgrp options
-# $* are groups to create
-CMPTEST() 
-{
-    FILEOUT=$OUTDIR/$1
-    expect="$srcdir/testfiles/`basename $1 .h5`.txt"
-    actual="$OUTDIR/`basename $1 .h5`.out"
-    actual_err="$OUTDIR/`basename $1 .h5`.err"
-    shift
-
-    # Stderr is included in stdout so that the diff can detect
-    # any unexpected output from that stream too.
-    TESTING $H5MKGRP $@
-    (
-    $RUNSERIAL $H5MKGRP_BIN $@
-    ) >$actual 2>$actual_err
-    cat $actual_err >> $actual
-    
-   if [ ! -f $expect ]; then
-    # Create the expect file if it doesn't yet exist.
-    echo " CREATED"
-    cp $actual $expect
-   elif $CMP $expect $actual; then
-      echo " PASSED"
-   else
-      echo "*FAILED*"
-      echo "    Expected result (*.txt) differs from actual result (*.out)"
-      nerrors="`expr $nerrors + 1`"
-      test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
-   fi
-
-   # Clean up output file
-   if test -z "$HDF5_NOCLEANUP"; then
-      rm -f $actual $actual_err
-   fi
-}
-
-##############################################################################
-###           T H E   T E S T S                                            ###
-##############################################################################
-
-# Check that help & version is displayed properly
-CMPTEST h5mkgrp_help.h5 "-h"
-RUNTEST h5mkgrp_version.h5 "-V"
-
-# Create single group at root level
-RUNTEST h5mkgrp_single.h5 " " single
-RUNTEST h5mkgrp_single.h5 "-v" single
-RUNTEST h5mkgrp_single.h5 "-p" single
-RUNTEST h5mkgrp_single_latest.h5 "-l" latest
-
-# Create several groups at root level
-RUNTEST h5mkgrp_several.h5 " " one two
-RUNTEST h5mkgrp_several.h5 "-v" one two
-RUNTEST h5mkgrp_several.h5 "-p" one two
-RUNTEST h5mkgrp_several_latest.h5 "-l" one two
-
-# Create various nested groups 
-RUNTEST h5mkgrp_nested.h5 "-p" /one/two
-RUNTEST h5mkgrp_nested_latest.h5 "-lp" /one/two
-RUNTEST h5mkgrp_nested_mult.h5 "-p" /one/two /three/four
-RUNTEST h5mkgrp_nested_mult_latest.h5 "-lp" /one/two /three/four
-
-
-if test $nerrors -eq 0 ; then
-    echo "All $TESTNAME tests passed."
-    exit $EXIT_SUCCESS
-else
-    echo "$TESTNAME tests failed with $nerrors errors."
-    exit $EXIT_FAILURE
-fi
diff --git a/tools/misc/testh5mkgrp.sh.in b/tools/misc/testh5mkgrp.sh.in
new file mode 100644
index 0000000..dc127e8
--- /dev/null
+++ b/tools/misc/testh5mkgrp.sh.in
@@ -0,0 +1,241 @@
+#! /bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5.  The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html.  COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page.  It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
+# access to either file, you may request a copy from help at hdfgroup.org.
+#
+# Tests for the h5mkgrp tool
+#
+# Quincey Koziol (koziol at hdfgroup.org)
+# Tuesday, February 13, 2007
+#
+
+srcdir=@srcdir@
+
+TESTNAME=h5mkgrp
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+H5MKGRP=h5mkgrp             # The tool name
+H5MKGRP_BIN=`pwd`/$H5MKGRP  # The path of the tool binary
+H5LS=h5ls                   # The h5ls tool name 
+H5LS_ARGS=-vr               # Arguments to the h5ls tool
+H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary
+
+nerrors=0
+verbose=yes
+
+INDIR=$srcdir/../testfiles
+OUTDIR=../testfiles
+CMP='cmp -s'
+DIFF='diff -c'
+
+test -d $OUTDIR || mkdir $OUTDIR
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+TESTING() 
+{
+    SPACES="                                                               "
+    echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012'
+}
+
+# Source in the output filter function definitions.
+. $srcdir/../../bin/output_filter.sh 
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+VERIFY_H5LS() 
+{
+    SPACES="                                                               "
+    echo "Verifying h5ls file structure $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Run a test and print PASS or *FAIL*. If h5mkgrp can complete
+# with exit status 0, consider it pass. If a test fails then increment
+# the `nerrors' global variable.
+# Assumed arguments:
+# $* arguments for h5mkgrp.
+
+TOOLTEST() 
+{
+    TESTING $H5MKGRP $@
+    (
+    echo "#############################"
+    echo " output for '$H5MKGRP $@'"
+    echo "#############################"
+    $RUNSERIAL $H5MKGRP_BIN $@
+    ) > output.out
+    RET=$?
+    if [ $RET != 0 ]; then
+        echo "*FAILED*"
+        echo "failed result is:"
+        cat output.out
+        nerrors="`expr $nerrors + 1`"
+    else
+        echo " PASSED"
+
+        # Clean up output file
+        if test -z "$HDF5_NOCLEANUP"; then
+           rm -f output.out
+        fi
+    fi
+}
+
+# Call the h5ls tool to verify the correct output data in the destination file
+#
+H5LSTEST() 
+{
+    expect="$INDIR/`basename $1 .h5`.ls"
+    actual="$OUTDIR/`basename $1 .h5`.out"
+    actual_sav=${actual}-sav
+
+    # Stderr is included in stdout so that the diff can detect
+    # any unexpected output from that stream too.
+    VERIFY_H5LS  $@
+    (
+      echo "#############################"
+      echo "Expected output for '$H5LS $@'" 
+      echo "#############################"
+      $RUNSERIAL $H5LS_BIN $H5LS_ARGS $@
+    ) 2>&1 |sed 's/Modified:.*/Modified:  XXXX-XX-XX XX:XX:XX XXX/' >$actual
+
+    # save actual in case it is needed later.
+    cp $actual $actual_sav
+    STDOUT_FILTER $actual
+    STDERR_FILTER $actual
+
+   if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+    echo " CREATED"
+    cp $actual $expect
+   elif $CMP $expect $actual; then
+      echo " PASSED"
+   else
+      echo "*FAILED*"
+      echo "    Expected result (*.ls) differs from actual result (*.out)"
+      nerrors="`expr $nerrors + 1`"
+      test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+   fi
+
+   # Clean up output file
+   if test -z "$HDF5_NOCLEANUP"; then
+      rm -f $actual $actual_sav
+   fi
+}
+
+# Single run of tool
+#
+# Assumed arguments:
+# $1 is test file name
+# $2 is h5mkgrp options
+# $* are groups to create
+RUNTEST() 
+{
+    FILEOUT=$OUTDIR/$1
+    shift
+    H5MKGRP_ARGS=$1
+    shift
+
+    # Remove any output file left over from previous test run
+    rm -f $FILEOUT
+
+    # Run test
+    TOOLTEST $H5MKGRP_ARGS $FILEOUT $@
+
+    # Verify that the file created above is correct
+    H5LSTEST $FILEOUT
+
+    # Remove output file created, if the "no cleanup" environment variable is
+    #   not defined
+echo "FILEOUT=" $FILEOUT
+    if test -z "$HDF5_NOCLEANUP"; then
+        rm -f $FILEOUT
+    fi
+}
+
+# Single run of tool
+#
+# Assumed arguments:
+# $1 is test expected output file
+# $2 is h5mkgrp options
+# $* are groups to create
+CMPTEST() 
+{
+    FILEOUT=$OUTDIR/$1
+    expect="$srcdir/testfiles/`basename $1 .h5`.txt"
+    actual="$OUTDIR/`basename $1 .h5`.out"
+    actual_err="$OUTDIR/`basename $1 .h5`.err"
+    shift
+
+    # Stderr is included in stdout so that the diff can detect
+    # any unexpected output from that stream too.
+    TESTING $H5MKGRP $@
+    (
+    $RUNSERIAL $H5MKGRP_BIN $@
+    ) >$actual 2>$actual_err
+    cat $actual_err >> $actual
+    
+   if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+    echo " CREATED"
+    cp $actual $expect
+   elif $CMP $expect $actual; then
+      echo " PASSED"
+   else
+      echo "*FAILED*"
+      echo "    Expected result (*.txt) differs from actual result (*.out)"
+      nerrors="`expr $nerrors + 1`"
+      test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+   fi
+
+   # Clean up output file
+   if test -z "$HDF5_NOCLEANUP"; then
+      rm -f $actual $actual_err
+   fi
+}
+
+##############################################################################
+###           T H E   T E S T S                                            ###
+##############################################################################
+
+# Check that help & version is displayed properly
+CMPTEST h5mkgrp_help.h5 "-h"
+RUNTEST h5mkgrp_version.h5 "-V"
+
+# Create single group at root level
+RUNTEST h5mkgrp_single.h5 " " single
+RUNTEST h5mkgrp_single.h5 "-v" single
+RUNTEST h5mkgrp_single.h5 "-p" single
+RUNTEST h5mkgrp_single_latest.h5 "-l" latest
+
+# Create several groups at root level
+RUNTEST h5mkgrp_several.h5 " " one two
+RUNTEST h5mkgrp_several.h5 "-v" one two
+RUNTEST h5mkgrp_several.h5 "-p" one two
+RUNTEST h5mkgrp_several_latest.h5 "-l" one two
+
+# Create various nested groups 
+RUNTEST h5mkgrp_nested.h5 "-p" /one/two
+RUNTEST h5mkgrp_nested_latest.h5 "-lp" /one/two
+RUNTEST h5mkgrp_nested_mult.h5 "-p" /one/two /three/four
+RUNTEST h5mkgrp_nested_mult_latest.h5 "-lp" /one/two /three/four
+
+
+if test $nerrors -eq 0 ; then
+    echo "All $TESTNAME tests passed."
+    exit $EXIT_SUCCESS
+else
+    echo "$TESTNAME tests failed with $nerrors errors."
+    exit $EXIT_FAILURE
+fi
diff --git a/tools/misc/testh5repart.sh.in b/tools/misc/testh5repart.sh.in
index 7d4e020..fc33e0e 100644
--- a/tools/misc/testh5repart.sh.in
+++ b/tools/misc/testh5repart.sh.in
@@ -15,6 +15,8 @@
 #
 # Tests for the h5repart tool
 
+srcdir=@srcdir@
+
 TESTNAME=h5repart
 EXIT_SUCCESS=0
 EXIT_FAILURE=1
@@ -28,11 +30,6 @@ REPARTED_FAM_BIN=`pwd`/$REPARTED_FAM    # The path of the test binary
 nerrors=0
 verbose=yes
 
-# The build (current) directory might be different than the source directory.
-if test -z "$srcdir"; then
-   srcdir=.
-fi
-
 test -d ../testfiles || mkdir ../testfiles
 
 actual_dir=`pwd`/../testfiles
diff --git a/tools/testfiles/charsets.ddl b/tools/testfiles/charsets.ddl
new file mode 100644
index 0000000..c2301fb
--- /dev/null
+++ b/tools/testfiles/charsets.ddl
@@ -0,0 +1,27 @@
+HDF5 "charsets.h5" {
+GROUP "/" {
+   DATASET "CharSets" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_STRING {
+            STRSIZE H5T_VARIABLE;
+            STRPAD H5T_STR_NULLTERM;
+            CSET H5T_CSET_ASCII;
+            CTYPE H5T_C_S1;
+         } "ascii";
+         H5T_STRING {
+            STRSIZE H5T_VARIABLE;
+            STRPAD H5T_STR_NULLTERM;
+            CSET H5T_CSET_UTF8;
+            CTYPE H5T_C_S1;
+         } "utf8";
+      }
+      DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
+      DATA {
+      (0): {
+            "ascii",
+            "utf8"
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/charsets.h5 b/tools/testfiles/charsets.h5
new file mode 100644
index 0000000..2b9e735
Binary files /dev/null and b/tools/testfiles/charsets.h5 differ
diff --git a/tools/testfiles/filter_fail.ddl b/tools/testfiles/filter_fail.ddl
index 75534e2..3a456f5 100644
--- a/tools/testfiles/filter_fail.ddl
+++ b/tools/testfiles/filter_fail.ddl
@@ -8,24 +8,3 @@ GROUP "/" {
    }
 }
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Dread(): can't read data
-    major: Dataset
-    minor: Read failed
-  #001: (file name) line (number) in H5D_read(): can't read data
-    major: Dataset
-    minor: Read failed
-  #002: (file name) line (number) in H5D_chunk_read(): unable to read raw data chunk
-    major: Low-level I/O
-    minor: Read failed
-  #003: (file name) line (number) in H5D_chunk_lock(): data pipeline read failed
-    major: Data filters
-    minor: Filter operation failed
-  #004: (file name) line (number) in H5Z_pipeline(): required filter 'filter_fail_test' is not registered
-    major: Data filters
-    minor: Read failed
-h5dump error: unable to print data
-H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs):
-  #000: (file name) line (number) in h5tools_dump_simple_dset(): H5Dread failed
-    major: Failure in tools library
-    minor: error in function
diff --git a/tools/testfiles/h5dump-help.txt b/tools/testfiles/h5dump-help.txt
index d8551ca..74fc104 100644
--- a/tools/testfiles/h5dump-help.txt
+++ b/tools/testfiles/h5dump-help.txt
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,7 +113,11 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
diff --git a/tools/testfiles/tattr-1.ddl b/tools/testfiles/tattr-1.ddl
index d353577..b58731b 100644
--- a/tools/testfiles/tattr-1.ddl
+++ b/tools/testfiles/tattr-1.ddl
@@ -1,6 +1,6 @@
 HDF5 "tattr.h5" {
 GROUP "/" {
-   ATTRIBUTE "attr1" {
+   ATTRIBUTE "/attr1" {
       DATATYPE  H5T_STD_I8BE
       DATASPACE  SIMPLE { ( 24 ) / ( 24 ) }
       DATA {
diff --git a/tools/testfiles/tattr-2.ddl b/tools/testfiles/tattr-2.ddl
index 79ba8c3..328b54f 100644
--- a/tools/testfiles/tattr-2.ddl
+++ b/tools/testfiles/tattr-2.ddl
@@ -7,14 +7,14 @@ ATTRIBUTE "/attr1" {
    (14): 111, 111, 116, 32, 103, 114, 111, 117, 112, 0
    }
 }
-ATTRIBUTE "/attr4" {
+ATTRIBUTE "attr4" {
    DATATYPE  H5T_STD_I32BE
    DATASPACE  SCALAR
    DATA {
    (0): 100
    }
 }
-ATTRIBUTE "/attr5" {
+ATTRIBUTE "attr5" {
    DATATYPE  H5T_STRING {
       STRSIZE 17;
       STRPAD H5T_STR_NULLTERM;
diff --git a/tools/testfiles/tattr-3.ddl b/tools/testfiles/tattr-3.ddl
index c0dd123..943dc0d 100644
--- a/tools/testfiles/tattr-3.ddl
+++ b/tools/testfiles/tattr-3.ddl
@@ -1,16 +1,8 @@
 HDF5 "tattr.h5" {
-ATTRIBUTE "/attr2" {
+ATTRIBUTE "attr2" {
    DATATYPE  H5T_STD_I32BE
    DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
 }
-ATTRIBUTE "/attr" {
+ATTRIBUTE "attr" {
 }
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Aopen(): unable to load attribute info from object header for attribute: 'attr'
-    major: Attribute
-    minor: Unable to initialize object
-  #001: (file name) line (number) in H5O_attr_open_by_name(): can't locate attribute: 'attr'
-    major: Attribute
-    minor: Object not found
-h5dump error: unable to open attribute "/attr"
diff --git a/tools/testfiles/tattr.h5 b/tools/testfiles/tattr.h5
index fd14b58..d61def5 100644
Binary files a/tools/testfiles/tattr.h5 and b/tools/testfiles/tattr.h5 differ
diff --git a/tools/testfiles/tattr.h5.xml b/tools/testfiles/tattr.h5.xml
index 57fa276..fceea99 100644
--- a/tools/testfiles/tattr.h5.xml
+++ b/tools/testfiles/tattr.h5.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hdf5:HDF5-File xmlns:hdf5="http://hdfgroup.org/HDF5/XML/schema/HDF5-File" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hdfgroup.org/HDF5/XML/schema/HDF5-File http://www.hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd">
 <hdf5:RootGroup OBJ-XID="xid_928" H5Path="/">
-   <hdf5:Attribute Name="attr1">
+   <hdf5:Attribute Name="/attr1">
       <hdf5:Dataspace>
          <hdf5:SimpleDataspace Ndims="1">
             <hdf5:Dimension  DimSize="24" MaxDimSize="24"/>
diff --git a/tools/testfiles/tattrcontents1.ddl b/tools/testfiles/tattrcontents1.ddl
new file mode 100644
index 0000000..e118d89
--- /dev/null
+++ b/tools/testfiles/tattrcontents1.ddl
@@ -0,0 +1,21 @@
+HDF5 "tall.h5" {
+FILE_CONTENTS {
+ group      /
+ attribute  /attr1
+ attribute  /attr2
+ group      /g1
+ group      /g1/g1.1
+ dataset    /g1/g1.1/dset1.1.1
+ attribute  /g1/g1.1/dset1.1.1/attr1
+ attribute  /g1/g1.1/dset1.1.1/attr2
+ dataset    /g1/g1.1/dset1.1.2
+ group      /g1/g1.2
+ ext link   /g1/g1.2/extlink -> somefile somepath
+ group      /g1/g1.2/g1.2.1
+ link       /g1/g1.2/g1.2.1/slink -> somevalue
+ group      /g2
+ dataset    /g2/dset2.1
+ dataset    /g2/dset2.2
+ unknown type of UD link /g2/udlink -> ???
+ }
+}
diff --git a/tools/testfiles/tattrcontents2.ddl b/tools/testfiles/tattrcontents2.ddl
new file mode 100644
index 0000000..4076385
--- /dev/null
+++ b/tools/testfiles/tattrcontents2.ddl
@@ -0,0 +1,21 @@
+HDF5 "tall.h5" {
+FILE_CONTENTS {
+ group      /
+ attribute  /attr2
+ attribute  /attr1
+ group      /g2
+ unknown type of UD link /g2/udlink -> ???
+ dataset    /g2/dset2.2
+ dataset    /g2/dset2.1
+ group      /g1
+ group      /g1/g1.2
+ group      /g1/g1.2/g1.2.1
+ link       /g1/g1.2/g1.2.1/slink -> somevalue
+ ext link   /g1/g1.2/extlink -> somefile somepath
+ group      /g1/g1.1
+ dataset    /g1/g1.1/dset1.1.2
+ dataset    /g1/g1.1/dset1.1.1
+ attribute  /g1/g1.1/dset1.1.1/attr2
+ attribute  /g1/g1.1/dset1.1.1/attr1
+ }
+}
diff --git a/tools/testfiles/tattrintsize.ddl b/tools/testfiles/tattrintsize.ddl
new file mode 100644
index 0000000..638384e
--- /dev/null
+++ b/tools/testfiles/tattrintsize.ddl
@@ -0,0 +1,569 @@
+HDF5 "tattrintsize.h5" {
+GROUP "/" {
+   ATTRIBUTE "DS08BITS" {
+      DATATYPE  H5T_STD_I8LE
+      DATASPACE  SIMPLE { ( 8, 8 ) / ( 8, 8 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DS16BITS" {
+      DATATYPE  H5T_STD_I16LE
+      DATASPACE  SIMPLE { ( 8, 16 ) / ( 8, 16 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+      (0,12): -4096, -8192, -16384, -32768,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+      (1,11): -4096, -8192, -16384, -32768, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096,
+      (2,11): -8192, -16384, -32768, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+      (3,11): -16384, -32768, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+      (4,10): -16384, -32768, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384,
+      (5,10): -32768, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384,
+      (6,9): -32768, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+      (7,10): 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DS32BITS" {
+      DATATYPE  H5T_STD_I32LE
+      DATASPACE  SIMPLE { ( 8, 32 ) / ( 8, 32 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+      (0,12): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+      (0,19): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+      (0,25): -33554432, -67108864, -134217728, -268435456, -536870912,
+      (0,30): -1073741824, -2147483648,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+      (1,11): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+      (1,18): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+      (1,24): -33554432, -67108864, -134217728, -268435456, -536870912,
+      (1,29): -1073741824, -2147483648, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096,
+      (2,11): -8192, -16384, -32768, -65536, -131072, -262144, -524288,
+      (2,18): -1048576, -2097152, -4194304, -8388608, -16777216, -33554432,
+      (2,24): -67108864, -134217728, -268435456, -536870912, -1073741824,
+      (2,29): -2147483648, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+      (3,11): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+      (3,18): -2097152, -4194304, -8388608, -16777216, -33554432, -67108864,
+      (3,24): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (3,29): 0, 0, 0,
+      (4,0): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+      (4,10): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+      (4,17): -2097152, -4194304, -8388608, -16777216, -33554432, -67108864,
+      (4,23): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (4,28): 0, 0, 0, 0,
+      (5,0): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384,
+      (5,10): -32768, -65536, -131072, -262144, -524288, -1048576, -2097152,
+      (5,17): -4194304, -8388608, -16777216, -33554432, -67108864,
+      (5,22): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (5,27): 0, 0, 0, 0, 0,
+      (6,0): -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384,
+      (6,9): -32768, -65536, -131072, -262144, -524288, -1048576, -2097152,
+      (6,16): -4194304, -8388608, -16777216, -33554432, -67108864,
+      (6,21): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (6,26): 0, 0, 0, 0, 0, 0,
+      (7,0): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+      (7,9): -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304,
+      (7,16): -8388608, -16777216, -33554432, -67108864, -134217728,
+      (7,21): -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+      (7,29): 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DS64BITS" {
+      DATATYPE  H5T_STD_I64LE
+      DATASPACE  SIMPLE { ( 8, 64 ) / ( 8, 64 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+      (0,12): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+      (0,19): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+      (0,25): -33554432, -67108864, -134217728, -268435456, -536870912,
+      (0,30): -1073741824, -2147483648, -4294967296, -8589934592,
+      (0,34): -17179869184, -34359738368, -68719476736, -137438953472,
+      (0,38): -274877906944, -549755813888, -1099511627776, -2199023255552,
+      (0,42): -4398046511104, -8796093022208, -17592186044416,
+      (0,45): -35184372088832, -70368744177664, -140737488355328,
+      (0,48): -281474976710656, -562949953421312, -1125899906842624,
+      (0,51): -2251799813685248, -4503599627370496, -9007199254740992,
+      (0,54): -18014398509481984, -36028797018963968, -72057594037927936,
+      (0,57): -144115188075855872, -288230376151711744, -576460752303423488,
+      (0,60): -1152921504606846976, -2305843009213693952,
+      (0,62): -4611686018427387904, -9223372036854775808,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+      (1,11): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+      (1,18): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+      (1,24): -33554432, -67108864, -134217728, -268435456, -536870912,
+      (1,29): -1073741824, -2147483648, -4294967296, -8589934592,
+      (1,33): -17179869184, -34359738368, -68719476736, -137438953472,
+      (1,37): -274877906944, -549755813888, -1099511627776, -2199023255552,
+      (1,41): -4398046511104, -8796093022208, -17592186044416,
+      (1,44): -35184372088832, -70368744177664, -140737488355328,
+      (1,47): -281474976710656, -562949953421312, -1125899906842624,
+      (1,50): -2251799813685248, -4503599627370496, -9007199254740992,
+      (1,53): -18014398509481984, -36028797018963968, -72057594037927936,
+      (1,56): -144115188075855872, -288230376151711744, -576460752303423488,
+      (1,59): -1152921504606846976, -2305843009213693952,
+      (1,61): -4611686018427387904, -9223372036854775808, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096,
+      (2,11): -8192, -16384, -32768, -65536, -131072, -262144, -524288,
+      (2,18): -1048576, -2097152, -4194304, -8388608, -16777216, -33554432,
+      (2,24): -67108864, -134217728, -268435456, -536870912, -1073741824,
+      (2,29): -2147483648, -4294967296, -8589934592, -17179869184,
+      (2,33): -34359738368, -68719476736, -137438953472, -274877906944,
+      (2,37): -549755813888, -1099511627776, -2199023255552, -4398046511104,
+      (2,41): -8796093022208, -17592186044416, -35184372088832,
+      (2,44): -70368744177664, -140737488355328, -281474976710656,
+      (2,47): -562949953421312, -1125899906842624, -2251799813685248,
+      (2,50): -4503599627370496, -9007199254740992, -18014398509481984,
+      (2,53): -36028797018963968, -72057594037927936, -144115188075855872,
+      (2,56): -288230376151711744, -576460752303423488, -1152921504606846976,
+      (2,59): -2305843009213693952, -4611686018427387904,
+      (2,61): -9223372036854775808, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+      (3,11): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+      (3,18): -2097152, -4194304, -8388608, -16777216, -33554432, -67108864,
+      (3,24): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (3,29): -4294967296, -8589934592, -17179869184, -34359738368,
+      (3,33): -68719476736, -137438953472, -274877906944, -549755813888,
+      (3,37): -1099511627776, -2199023255552, -4398046511104, -8796093022208,
+      (3,41): -17592186044416, -35184372088832, -70368744177664,
+      (3,44): -140737488355328, -281474976710656, -562949953421312,
+      (3,47): -1125899906842624, -2251799813685248, -4503599627370496,
+      (3,50): -9007199254740992, -18014398509481984, -36028797018963968,
+      (3,53): -72057594037927936, -144115188075855872, -288230376151711744,
+      (3,56): -576460752303423488, -1152921504606846976,
+      (3,58): -2305843009213693952, -4611686018427387904,
+      (3,60): -9223372036854775808, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+      (4,10): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+      (4,17): -2097152, -4194304, -8388608, -16777216, -33554432, -67108864,
+      (4,23): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (4,28): -4294967296, -8589934592, -17179869184, -34359738368,
+      (4,32): -68719476736, -137438953472, -274877906944, -549755813888,
+      (4,36): -1099511627776, -2199023255552, -4398046511104, -8796093022208,
+      (4,40): -17592186044416, -35184372088832, -70368744177664,
+      (4,43): -140737488355328, -281474976710656, -562949953421312,
+      (4,46): -1125899906842624, -2251799813685248, -4503599627370496,
+      (4,49): -9007199254740992, -18014398509481984, -36028797018963968,
+      (4,52): -72057594037927936, -144115188075855872, -288230376151711744,
+      (4,55): -576460752303423488, -1152921504606846976,
+      (4,57): -2305843009213693952, -4611686018427387904,
+      (4,59): -9223372036854775808, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384,
+      (5,10): -32768, -65536, -131072, -262144, -524288, -1048576, -2097152,
+      (5,17): -4194304, -8388608, -16777216, -33554432, -67108864,
+      (5,22): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (5,27): -4294967296, -8589934592, -17179869184, -34359738368,
+      (5,31): -68719476736, -137438953472, -274877906944, -549755813888,
+      (5,35): -1099511627776, -2199023255552, -4398046511104, -8796093022208,
+      (5,39): -17592186044416, -35184372088832, -70368744177664,
+      (5,42): -140737488355328, -281474976710656, -562949953421312,
+      (5,45): -1125899906842624, -2251799813685248, -4503599627370496,
+      (5,48): -9007199254740992, -18014398509481984, -36028797018963968,
+      (5,51): -72057594037927936, -144115188075855872, -288230376151711744,
+      (5,54): -576460752303423488, -1152921504606846976,
+      (5,56): -2305843009213693952, -4611686018427387904,
+      (5,58): -9223372036854775808, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384,
+      (6,9): -32768, -65536, -131072, -262144, -524288, -1048576, -2097152,
+      (6,16): -4194304, -8388608, -16777216, -33554432, -67108864,
+      (6,21): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (6,26): -4294967296, -8589934592, -17179869184, -34359738368,
+      (6,30): -68719476736, -137438953472, -274877906944, -549755813888,
+      (6,34): -1099511627776, -2199023255552, -4398046511104, -8796093022208,
+      (6,38): -17592186044416, -35184372088832, -70368744177664,
+      (6,41): -140737488355328, -281474976710656, -562949953421312,
+      (6,44): -1125899906842624, -2251799813685248, -4503599627370496,
+      (6,47): -9007199254740992, -18014398509481984, -36028797018963968,
+      (6,50): -72057594037927936, -144115188075855872, -288230376151711744,
+      (6,53): -576460752303423488, -1152921504606846976,
+      (6,55): -2305843009213693952, -4611686018427387904,
+      (6,57): -9223372036854775808, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+      (7,9): -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304,
+      (7,16): -8388608, -16777216, -33554432, -67108864, -134217728,
+      (7,21): -268435456, -536870912, -1073741824, -2147483648, -4294967296,
+      (7,26): -8589934592, -17179869184, -34359738368, -68719476736,
+      (7,30): -137438953472, -274877906944, -549755813888, -1099511627776,
+      (7,34): -2199023255552, -4398046511104, -8796093022208,
+      (7,37): -17592186044416, -35184372088832, -70368744177664,
+      (7,40): -140737488355328, -281474976710656, -562949953421312,
+      (7,43): -1125899906842624, -2251799813685248, -4503599627370496,
+      (7,46): -9007199254740992, -18014398509481984, -36028797018963968,
+      (7,49): -72057594037927936, -144115188075855872, -288230376151711744,
+      (7,52): -576460752303423488, -1152921504606846976,
+      (7,54): -2305843009213693952, -4611686018427387904,
+      (7,56): -9223372036854775808, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DU08BITS" {
+      DATATYPE  H5T_STD_U8LE
+      DATASPACE  SIMPLE { ( 8, 8 ) / ( 8, 8 ) }
+      DATA {
+      (0,0): 255, 254, 252, 248, 240, 224, 192, 128,
+      (1,0): 254, 252, 248, 240, 224, 192, 128, 0,
+      (2,0): 252, 248, 240, 224, 192, 128, 0, 0,
+      (3,0): 248, 240, 224, 192, 128, 0, 0, 0,
+      (4,0): 240, 224, 192, 128, 0, 0, 0, 0,
+      (5,0): 224, 192, 128, 0, 0, 0, 0, 0,
+      (6,0): 192, 128, 0, 0, 0, 0, 0, 0,
+      (7,0): 128, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DU16BITS" {
+      DATATYPE  H5T_STD_U16LE
+      DATASPACE  SIMPLE { ( 8, 16 ) / ( 8, 16 ) }
+      DATA {
+      (0,0): 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280,
+      (0,9): 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+      (1,0): 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024,
+      (1,9): 64512, 63488, 61440, 57344, 49152, 32768, 0,
+      (2,0): 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512,
+      (2,9): 63488, 61440, 57344, 49152, 32768, 0, 0,
+      (3,0): 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488,
+      (3,9): 61440, 57344, 49152, 32768, 0, 0, 0,
+      (4,0): 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440,
+      (4,9): 57344, 49152, 32768, 0, 0, 0, 0,
+      (5,0): 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344,
+      (5,9): 49152, 32768, 0, 0, 0, 0, 0,
+      (6,0): 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152,
+      (6,9): 32768, 0, 0, 0, 0, 0, 0,
+      (7,0): 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+      (7,9): 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DU32BITS" {
+      DATATYPE  H5T_STD_U32LE
+      DATASPACE  SIMPLE { ( 8, 32 ) / ( 8, 32 ) }
+      DATA {
+      (0,0): 4294967295, 4294967294, 4294967292, 4294967288, 4294967280,
+      (0,5): 4294967264, 4294967232, 4294967168, 4294967040, 4294966784,
+      (0,10): 4294966272, 4294965248, 4294963200, 4294959104, 4294950912,
+      (0,15): 4294934528, 4294901760, 4294836224, 4294705152, 4294443008,
+      (0,20): 4293918720, 4292870144, 4290772992, 4286578688, 4278190080,
+      (0,25): 4261412864, 4227858432, 4160749568, 4026531840, 3758096384,
+      (0,30): 3221225472, 2147483648,
+      (1,0): 4294967294, 4294967292, 4294967288, 4294967280, 4294967264,
+      (1,5): 4294967232, 4294967168, 4294967040, 4294966784, 4294966272,
+      (1,10): 4294965248, 4294963200, 4294959104, 4294950912, 4294934528,
+      (1,15): 4294901760, 4294836224, 4294705152, 4294443008, 4293918720,
+      (1,20): 4292870144, 4290772992, 4286578688, 4278190080, 4261412864,
+      (1,25): 4227858432, 4160749568, 4026531840, 3758096384, 3221225472,
+      (1,30): 2147483648, 0,
+      (2,0): 4294967292, 4294967288, 4294967280, 4294967264, 4294967232,
+      (2,5): 4294967168, 4294967040, 4294966784, 4294966272, 4294965248,
+      (2,10): 4294963200, 4294959104, 4294950912, 4294934528, 4294901760,
+      (2,15): 4294836224, 4294705152, 4294443008, 4293918720, 4292870144,
+      (2,20): 4290772992, 4286578688, 4278190080, 4261412864, 4227858432,
+      (2,25): 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+      (2,31): 0,
+      (3,0): 4294967288, 4294967280, 4294967264, 4294967232, 4294967168,
+      (3,5): 4294967040, 4294966784, 4294966272, 4294965248, 4294963200,
+      (3,10): 4294959104, 4294950912, 4294934528, 4294901760, 4294836224,
+      (3,15): 4294705152, 4294443008, 4293918720, 4292870144, 4290772992,
+      (3,20): 4286578688, 4278190080, 4261412864, 4227858432, 4160749568,
+      (3,25): 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+      (4,0): 4294967280, 4294967264, 4294967232, 4294967168, 4294967040,
+      (4,5): 4294966784, 4294966272, 4294965248, 4294963200, 4294959104,
+      (4,10): 4294950912, 4294934528, 4294901760, 4294836224, 4294705152,
+      (4,15): 4294443008, 4293918720, 4292870144, 4290772992, 4286578688,
+      (4,20): 4278190080, 4261412864, 4227858432, 4160749568, 4026531840,
+      (4,25): 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+      (5,0): 4294967264, 4294967232, 4294967168, 4294967040, 4294966784,
+      (5,5): 4294966272, 4294965248, 4294963200, 4294959104, 4294950912,
+      (5,10): 4294934528, 4294901760, 4294836224, 4294705152, 4294443008,
+      (5,15): 4293918720, 4292870144, 4290772992, 4286578688, 4278190080,
+      (5,20): 4261412864, 4227858432, 4160749568, 4026531840, 3758096384,
+      (5,25): 3221225472, 2147483648, 0, 0, 0, 0, 0,
+      (6,0): 4294967232, 4294967168, 4294967040, 4294966784, 4294966272,
+      (6,5): 4294965248, 4294963200, 4294959104, 4294950912, 4294934528,
+      (6,10): 4294901760, 4294836224, 4294705152, 4294443008, 4293918720,
+      (6,15): 4292870144, 4290772992, 4286578688, 4278190080, 4261412864,
+      (6,20): 4227858432, 4160749568, 4026531840, 3758096384, 3221225472,
+      (6,25): 2147483648, 0, 0, 0, 0, 0, 0,
+      (7,0): 4294967168, 4294967040, 4294966784, 4294966272, 4294965248,
+      (7,5): 4294963200, 4294959104, 4294950912, 4294934528, 4294901760,
+      (7,10): 4294836224, 4294705152, 4294443008, 4293918720, 4292870144,
+      (7,15): 4290772992, 4286578688, 4278190080, 4261412864, 4227858432,
+      (7,20): 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+      (7,26): 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DU64BITS" {
+      DATATYPE  H5T_STD_U64LE
+      DATASPACE  SIMPLE { ( 8, 64 ) / ( 8, 64 ) }
+      DATA {
+      (0,0): 18446744073709551615, 18446744073709551614,
+      (0,2): 18446744073709551612, 18446744073709551608,
+      (0,4): 18446744073709551600, 18446744073709551584,
+      (0,6): 18446744073709551552, 18446744073709551488,
+      (0,8): 18446744073709551360, 18446744073709551104,
+      (0,10): 18446744073709550592, 18446744073709549568,
+      (0,12): 18446744073709547520, 18446744073709543424,
+      (0,14): 18446744073709535232, 18446744073709518848,
+      (0,16): 18446744073709486080, 18446744073709420544,
+      (0,18): 18446744073709289472, 18446744073709027328,
+      (0,20): 18446744073708503040, 18446744073707454464,
+      (0,22): 18446744073705357312, 18446744073701163008,
+      (0,24): 18446744073692774400, 18446744073675997184,
+      (0,26): 18446744073642442752, 18446744073575333888,
+      (0,28): 18446744073441116160, 18446744073172680704,
+      (0,30): 18446744072635809792, 18446744071562067968,
+      (0,32): 18446744069414584320, 18446744065119617024,
+      (0,34): 18446744056529682432, 18446744039349813248,
+      (0,36): 18446744004990074880, 18446743936270598144,
+      (0,38): 18446743798831644672, 18446743523953737728,
+      (0,40): 18446742974197923840, 18446741874686296064,
+      (0,42): 18446739675663040512, 18446735277616529408,
+      (0,44): 18446726481523507200, 18446708889337462784,
+      (0,46): 18446673704965373952, 18446603336221196288,
+      (0,48): 18446462598732840960, 18446181123756130304,
+      (0,50): 18445618173802708992, 18444492273895866368,
+      (0,52): 18442240474082181120, 18437736874454810624,
+      (0,54): 18428729675200069632, 18410715276690587648,
+      (0,56): 18374686479671623680, 18302628885633695744,
+      (0,58): 18158513697557839872, 17870283321406128128,
+      (0,60): 17293822569102704640, 16140901064495857664,
+      (0,62): 13835058055282163712, 9223372036854775808,
+      (1,0): 18446744073709551614, 18446744073709551612,
+      (1,2): 18446744073709551608, 18446744073709551600,
+      (1,4): 18446744073709551584, 18446744073709551552,
+      (1,6): 18446744073709551488, 18446744073709551360,
+      (1,8): 18446744073709551104, 18446744073709550592,
+      (1,10): 18446744073709549568, 18446744073709547520,
+      (1,12): 18446744073709543424, 18446744073709535232,
+      (1,14): 18446744073709518848, 18446744073709486080,
+      (1,16): 18446744073709420544, 18446744073709289472,
+      (1,18): 18446744073709027328, 18446744073708503040,
+      (1,20): 18446744073707454464, 18446744073705357312,
+      (1,22): 18446744073701163008, 18446744073692774400,
+      (1,24): 18446744073675997184, 18446744073642442752,
+      (1,26): 18446744073575333888, 18446744073441116160,
+      (1,28): 18446744073172680704, 18446744072635809792,
+      (1,30): 18446744071562067968, 18446744069414584320,
+      (1,32): 18446744065119617024, 18446744056529682432,
+      (1,34): 18446744039349813248, 18446744004990074880,
+      (1,36): 18446743936270598144, 18446743798831644672,
+      (1,38): 18446743523953737728, 18446742974197923840,
+      (1,40): 18446741874686296064, 18446739675663040512,
+      (1,42): 18446735277616529408, 18446726481523507200,
+      (1,44): 18446708889337462784, 18446673704965373952,
+      (1,46): 18446603336221196288, 18446462598732840960,
+      (1,48): 18446181123756130304, 18445618173802708992,
+      (1,50): 18444492273895866368, 18442240474082181120,
+      (1,52): 18437736874454810624, 18428729675200069632,
+      (1,54): 18410715276690587648, 18374686479671623680,
+      (1,56): 18302628885633695744, 18158513697557839872,
+      (1,58): 17870283321406128128, 17293822569102704640,
+      (1,60): 16140901064495857664, 13835058055282163712,
+      (1,62): 9223372036854775808, 0,
+      (2,0): 18446744073709551612, 18446744073709551608,
+      (2,2): 18446744073709551600, 18446744073709551584,
+      (2,4): 18446744073709551552, 18446744073709551488,
+      (2,6): 18446744073709551360, 18446744073709551104,
+      (2,8): 18446744073709550592, 18446744073709549568,
+      (2,10): 18446744073709547520, 18446744073709543424,
+      (2,12): 18446744073709535232, 18446744073709518848,
+      (2,14): 18446744073709486080, 18446744073709420544,
+      (2,16): 18446744073709289472, 18446744073709027328,
+      (2,18): 18446744073708503040, 18446744073707454464,
+      (2,20): 18446744073705357312, 18446744073701163008,
+      (2,22): 18446744073692774400, 18446744073675997184,
+      (2,24): 18446744073642442752, 18446744073575333888,
+      (2,26): 18446744073441116160, 18446744073172680704,
+      (2,28): 18446744072635809792, 18446744071562067968,
+      (2,30): 18446744069414584320, 18446744065119617024,
+      (2,32): 18446744056529682432, 18446744039349813248,
+      (2,34): 18446744004990074880, 18446743936270598144,
+      (2,36): 18446743798831644672, 18446743523953737728,
+      (2,38): 18446742974197923840, 18446741874686296064,
+      (2,40): 18446739675663040512, 18446735277616529408,
+      (2,42): 18446726481523507200, 18446708889337462784,
+      (2,44): 18446673704965373952, 18446603336221196288,
+      (2,46): 18446462598732840960, 18446181123756130304,
+      (2,48): 18445618173802708992, 18444492273895866368,
+      (2,50): 18442240474082181120, 18437736874454810624,
+      (2,52): 18428729675200069632, 18410715276690587648,
+      (2,54): 18374686479671623680, 18302628885633695744,
+      (2,56): 18158513697557839872, 17870283321406128128,
+      (2,58): 17293822569102704640, 16140901064495857664,
+      (2,60): 13835058055282163712, 9223372036854775808, 0, 0,
+      (3,0): 18446744073709551608, 18446744073709551600,
+      (3,2): 18446744073709551584, 18446744073709551552,
+      (3,4): 18446744073709551488, 18446744073709551360,
+      (3,6): 18446744073709551104, 18446744073709550592,
+      (3,8): 18446744073709549568, 18446744073709547520,
+      (3,10): 18446744073709543424, 18446744073709535232,
+      (3,12): 18446744073709518848, 18446744073709486080,
+      (3,14): 18446744073709420544, 18446744073709289472,
+      (3,16): 18446744073709027328, 18446744073708503040,
+      (3,18): 18446744073707454464, 18446744073705357312,
+      (3,20): 18446744073701163008, 18446744073692774400,
+      (3,22): 18446744073675997184, 18446744073642442752,
+      (3,24): 18446744073575333888, 18446744073441116160,
+      (3,26): 18446744073172680704, 18446744072635809792,
+      (3,28): 18446744071562067968, 18446744069414584320,
+      (3,30): 18446744065119617024, 18446744056529682432,
+      (3,32): 18446744039349813248, 18446744004990074880,
+      (3,34): 18446743936270598144, 18446743798831644672,
+      (3,36): 18446743523953737728, 18446742974197923840,
+      (3,38): 18446741874686296064, 18446739675663040512,
+      (3,40): 18446735277616529408, 18446726481523507200,
+      (3,42): 18446708889337462784, 18446673704965373952,
+      (3,44): 18446603336221196288, 18446462598732840960,
+      (3,46): 18446181123756130304, 18445618173802708992,
+      (3,48): 18444492273895866368, 18442240474082181120,
+      (3,50): 18437736874454810624, 18428729675200069632,
+      (3,52): 18410715276690587648, 18374686479671623680,
+      (3,54): 18302628885633695744, 18158513697557839872,
+      (3,56): 17870283321406128128, 17293822569102704640,
+      (3,58): 16140901064495857664, 13835058055282163712,
+      (3,60): 9223372036854775808, 0, 0, 0,
+      (4,0): 18446744073709551600, 18446744073709551584,
+      (4,2): 18446744073709551552, 18446744073709551488,
+      (4,4): 18446744073709551360, 18446744073709551104,
+      (4,6): 18446744073709550592, 18446744073709549568,
+      (4,8): 18446744073709547520, 18446744073709543424,
+      (4,10): 18446744073709535232, 18446744073709518848,
+      (4,12): 18446744073709486080, 18446744073709420544,
+      (4,14): 18446744073709289472, 18446744073709027328,
+      (4,16): 18446744073708503040, 18446744073707454464,
+      (4,18): 18446744073705357312, 18446744073701163008,
+      (4,20): 18446744073692774400, 18446744073675997184,
+      (4,22): 18446744073642442752, 18446744073575333888,
+      (4,24): 18446744073441116160, 18446744073172680704,
+      (4,26): 18446744072635809792, 18446744071562067968,
+      (4,28): 18446744069414584320, 18446744065119617024,
+      (4,30): 18446744056529682432, 18446744039349813248,
+      (4,32): 18446744004990074880, 18446743936270598144,
+      (4,34): 18446743798831644672, 18446743523953737728,
+      (4,36): 18446742974197923840, 18446741874686296064,
+      (4,38): 18446739675663040512, 18446735277616529408,
+      (4,40): 18446726481523507200, 18446708889337462784,
+      (4,42): 18446673704965373952, 18446603336221196288,
+      (4,44): 18446462598732840960, 18446181123756130304,
+      (4,46): 18445618173802708992, 18444492273895866368,
+      (4,48): 18442240474082181120, 18437736874454810624,
+      (4,50): 18428729675200069632, 18410715276690587648,
+      (4,52): 18374686479671623680, 18302628885633695744,
+      (4,54): 18158513697557839872, 17870283321406128128,
+      (4,56): 17293822569102704640, 16140901064495857664,
+      (4,58): 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+      (5,0): 18446744073709551584, 18446744073709551552,
+      (5,2): 18446744073709551488, 18446744073709551360,
+      (5,4): 18446744073709551104, 18446744073709550592,
+      (5,6): 18446744073709549568, 18446744073709547520,
+      (5,8): 18446744073709543424, 18446744073709535232,
+      (5,10): 18446744073709518848, 18446744073709486080,
+      (5,12): 18446744073709420544, 18446744073709289472,
+      (5,14): 18446744073709027328, 18446744073708503040,
+      (5,16): 18446744073707454464, 18446744073705357312,
+      (5,18): 18446744073701163008, 18446744073692774400,
+      (5,20): 18446744073675997184, 18446744073642442752,
+      (5,22): 18446744073575333888, 18446744073441116160,
+      (5,24): 18446744073172680704, 18446744072635809792,
+      (5,26): 18446744071562067968, 18446744069414584320,
+      (5,28): 18446744065119617024, 18446744056529682432,
+      (5,30): 18446744039349813248, 18446744004990074880,
+      (5,32): 18446743936270598144, 18446743798831644672,
+      (5,34): 18446743523953737728, 18446742974197923840,
+      (5,36): 18446741874686296064, 18446739675663040512,
+      (5,38): 18446735277616529408, 18446726481523507200,
+      (5,40): 18446708889337462784, 18446673704965373952,
+      (5,42): 18446603336221196288, 18446462598732840960,
+      (5,44): 18446181123756130304, 18445618173802708992,
+      (5,46): 18444492273895866368, 18442240474082181120,
+      (5,48): 18437736874454810624, 18428729675200069632,
+      (5,50): 18410715276690587648, 18374686479671623680,
+      (5,52): 18302628885633695744, 18158513697557839872,
+      (5,54): 17870283321406128128, 17293822569102704640,
+      (5,56): 16140901064495857664, 13835058055282163712,
+      (5,58): 9223372036854775808, 0, 0, 0, 0, 0,
+      (6,0): 18446744073709551552, 18446744073709551488,
+      (6,2): 18446744073709551360, 18446744073709551104,
+      (6,4): 18446744073709550592, 18446744073709549568,
+      (6,6): 18446744073709547520, 18446744073709543424,
+      (6,8): 18446744073709535232, 18446744073709518848,
+      (6,10): 18446744073709486080, 18446744073709420544,
+      (6,12): 18446744073709289472, 18446744073709027328,
+      (6,14): 18446744073708503040, 18446744073707454464,
+      (6,16): 18446744073705357312, 18446744073701163008,
+      (6,18): 18446744073692774400, 18446744073675997184,
+      (6,20): 18446744073642442752, 18446744073575333888,
+      (6,22): 18446744073441116160, 18446744073172680704,
+      (6,24): 18446744072635809792, 18446744071562067968,
+      (6,26): 18446744069414584320, 18446744065119617024,
+      (6,28): 18446744056529682432, 18446744039349813248,
+      (6,30): 18446744004990074880, 18446743936270598144,
+      (6,32): 18446743798831644672, 18446743523953737728,
+      (6,34): 18446742974197923840, 18446741874686296064,
+      (6,36): 18446739675663040512, 18446735277616529408,
+      (6,38): 18446726481523507200, 18446708889337462784,
+      (6,40): 18446673704965373952, 18446603336221196288,
+      (6,42): 18446462598732840960, 18446181123756130304,
+      (6,44): 18445618173802708992, 18444492273895866368,
+      (6,46): 18442240474082181120, 18437736874454810624,
+      (6,48): 18428729675200069632, 18410715276690587648,
+      (6,50): 18374686479671623680, 18302628885633695744,
+      (6,52): 18158513697557839872, 17870283321406128128,
+      (6,54): 17293822569102704640, 16140901064495857664,
+      (6,56): 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+      (7,0): 18446744073709551488, 18446744073709551360,
+      (7,2): 18446744073709551104, 18446744073709550592,
+      (7,4): 18446744073709549568, 18446744073709547520,
+      (7,6): 18446744073709543424, 18446744073709535232,
+      (7,8): 18446744073709518848, 18446744073709486080,
+      (7,10): 18446744073709420544, 18446744073709289472,
+      (7,12): 18446744073709027328, 18446744073708503040,
+      (7,14): 18446744073707454464, 18446744073705357312,
+      (7,16): 18446744073701163008, 18446744073692774400,
+      (7,18): 18446744073675997184, 18446744073642442752,
+      (7,20): 18446744073575333888, 18446744073441116160,
+      (7,22): 18446744073172680704, 18446744072635809792,
+      (7,24): 18446744071562067968, 18446744069414584320,
+      (7,26): 18446744065119617024, 18446744056529682432,
+      (7,28): 18446744039349813248, 18446744004990074880,
+      (7,30): 18446743936270598144, 18446743798831644672,
+      (7,32): 18446743523953737728, 18446742974197923840,
+      (7,34): 18446741874686296064, 18446739675663040512,
+      (7,36): 18446735277616529408, 18446726481523507200,
+      (7,38): 18446708889337462784, 18446673704965373952,
+      (7,40): 18446603336221196288, 18446462598732840960,
+      (7,42): 18446181123756130304, 18445618173802708992,
+      (7,44): 18444492273895866368, 18442240474082181120,
+      (7,46): 18437736874454810624, 18428729675200069632,
+      (7,48): 18410715276690587648, 18374686479671623680,
+      (7,50): 18302628885633695744, 18158513697557839872,
+      (7,52): 17870283321406128128, 17293822569102704640,
+      (7,54): 16140901064495857664, 13835058055282163712,
+      (7,56): 9223372036854775808, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   ATTRIBUTE "DummyDBL" {
+      DATATYPE  H5T_IEEE_F64BE
+      DATASPACE  SIMPLE { ( 8, 8 ) / ( 8, 8 ) }
+      DATA {
+      (0,0): 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+      (1,0): 1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+      (2,0): 2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+      (3,0): 3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+      (4,0): 4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+      (5,0): 5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+      (6,0): 6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+      (7,0): 7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tattrintsize.h5 b/tools/testfiles/tattrintsize.h5
new file mode 100644
index 0000000..04d6f4c
Binary files /dev/null and b/tools/testfiles/tattrintsize.h5 differ
diff --git a/tools/testfiles/tcmpdattrintsize.ddl b/tools/testfiles/tcmpdattrintsize.ddl
new file mode 100644
index 0000000..17b5b77
--- /dev/null
+++ b/tools/testfiles/tcmpdattrintsize.ddl
@@ -0,0 +1,316 @@
+HDF5 "tcmpdattrintsize.h5" {
+GROUP "/" {
+   ATTRIBUTE "CompoundAttrIntSize" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_ARRAY { [8][8] H5T_STD_U8LE } "DU08BITS";
+         H5T_ARRAY { [8][16] H5T_STD_U16LE } "DU16BITS";
+         H5T_ARRAY { [8][32] H5T_STD_U32LE } "DU32BITS";
+         H5T_ARRAY { [8][64] H5T_STD_U64LE } "DU64BITS";
+         H5T_ARRAY { [8][8] H5T_STD_I8LE } "DS08BITS";
+         H5T_ARRAY { [8][16] H5T_STD_I16LE } "DS16BITS";
+         H5T_ARRAY { [8][32] H5T_STD_I32LE } "DS32BITS";
+         H5T_ARRAY { [8][64] H5T_STD_I64LE } "DS64BITS";
+         H5T_ARRAY { [8][8] H5T_IEEE_F64LE } "DummyDBL";
+      }
+      DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+      DATA {
+      (0): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         },
+      (1): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         },
+      (2): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         },
+      (3): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tcmpdattrintsize.h5 b/tools/testfiles/tcmpdattrintsize.h5
new file mode 100644
index 0000000..40d4887
Binary files /dev/null and b/tools/testfiles/tcmpdattrintsize.h5 differ
diff --git a/tools/testfiles/tcmpdintsize.ddl b/tools/testfiles/tcmpdintsize.ddl
new file mode 100644
index 0000000..ba296e1
--- /dev/null
+++ b/tools/testfiles/tcmpdintsize.ddl
@@ -0,0 +1,316 @@
+HDF5 "tcmpdintsize.h5" {
+GROUP "/" {
+   DATASET "CompoundIntSize" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_ARRAY { [8][8] H5T_STD_U8LE } "DU08BITS";
+         H5T_ARRAY { [8][16] H5T_STD_U16LE } "DU16BITS";
+         H5T_ARRAY { [8][32] H5T_STD_U32LE } "DU32BITS";
+         H5T_ARRAY { [8][64] H5T_STD_U64LE } "DU64BITS";
+         H5T_ARRAY { [8][8] H5T_STD_I8LE } "DS08BITS";
+         H5T_ARRAY { [8][16] H5T_STD_I16LE } "DS16BITS";
+         H5T_ARRAY { [8][32] H5T_STD_I32LE } "DS32BITS";
+         H5T_ARRAY { [8][64] H5T_STD_I64LE } "DS64BITS";
+         H5T_ARRAY { [8][8] H5T_IEEE_F64LE } "DummyDBL";
+      }
+      DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+      DATA {
+      (0): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         },
+      (1): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         },
+      (2): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         },
+      (3): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128,
+               254, 252, 248, 240, 224, 192, 128, 0,
+               252, 248, 240, 224, 192, 128, 0, 0,
+               248, 240, 224, 192, 128, 0, 0, 0,
+               240, 224, 192, 128, 0, 0, 0, 0,
+               224, 192, 128, 0, 0, 0, 0, 0,
+               192, 128, 0, 0, 0, 0, 0, 0,
+               128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+               65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+               65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+               65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+               65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+               65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+               65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+               65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+               4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+               4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+               4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+               4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+               4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+               4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+               4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128,
+               -2, -4, -8, -16, -32, -64, -128, 0,
+               -4, -8, -16, -32, -64, -128, 0, 0,
+               -8, -16, -32, -64, -128, 0, 0, 0,
+               -16, -32, -64, -128, 0, 0, 0, 0,
+               -32, -64, -128, 0, 0, 0, 0, 0,
+               -64, -128, 0, 0, 0, 0, 0, 0,
+               -128, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+               -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+               -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+               -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+               -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+               -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+               -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+               -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0 ],
+            [ 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+               1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+               2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+               3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+               4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+               5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+               6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+               7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007 ]
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tcmpdintsize.h5 b/tools/testfiles/tcmpdintsize.h5
new file mode 100644
index 0000000..0e7bef5
Binary files /dev/null and b/tools/testfiles/tcmpdintsize.h5 differ
diff --git a/tools/testfiles/tdset-2.ddl b/tools/testfiles/tdset-2.ddl
index 2034a43..dfda95e 100644
--- a/tools/testfiles/tdset-2.ddl
+++ b/tools/testfiles/tdset-2.ddl
@@ -8,36 +8,3 @@ DATASET "/dset2" {
    DATASPACE  SIMPLE { ( 30, 20 ) / ( 30, 20 ) }
 }
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Dopen2(): not found
-    major: Dataset
-    minor: Object not found
-  #001: (file name) line (number) in H5G_loc_find(): can't find object
-    major: Symbol table
-    minor: Object not found
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #004: (file name) line (number) in H5G_loc_find_cb(): object 'dset3' doesn't exist
-    major: Symbol table
-    minor: Object not found
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Lget_info(): unable to get link info
-    major: Symbol table
-    minor: Object not found
-  #001: (file name) line (number) in H5L_get_info(): name doesn't exist
-    major: Symbol table
-    minor: Object already exists
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
-    major: Symbol table
-    minor: Object not found
-h5dump error: unable to get link info from "dset3"
diff --git a/tools/testfiles/textlink.ddl b/tools/testfiles/textlink.ddl
index 4718adb..5459b30 100644
--- a/tools/testfiles/textlink.ddl
+++ b/tools/testfiles/textlink.ddl
@@ -10,53 +10,3 @@ GROUP "/" {
    }
 }
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Oopen(): unable to open object
-    major: Symbol table
-    minor: Can't open object
-  #001: (file name) line (number) in H5O_open_name(): object not found
-    major: Symbol table
-    minor: Object not found
-  #002: (file name) line (number) in H5G_loc_find(): can't find object
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
-    major: Links
-    minor: Link traversal failure
-  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
-    major: Links
-    minor: Link traversal failure
-  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
-    major: Symbol table
-    minor: Unable to find atom information (already closed?)
-  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'filename', temp_file_name = 'filename'
-    major: Links
-    minor: Unable to open file
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Oopen(): unable to open object
-    major: Symbol table
-    minor: Can't open object
-  #001: (file name) line (number) in H5O_open_name(): object not found
-    major: Symbol table
-    minor: Object not found
-  #002: (file name) line (number) in H5G_loc_find(): can't find object
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
-    major: Links
-    minor: Link traversal failure
-  #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
-    major: Links
-    minor: Link traversal failure
-  #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
-    major: Symbol table
-    minor: Unable to find atom information (already closed?)
-  #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'anotherfile', temp_file_name = 'anotherfile'
-    major: Links
-    minor: Unable to open file
diff --git a/tools/testfiles/tgroup-2.ddl b/tools/testfiles/tgroup-2.ddl
index c4af7bb..2ac8ac6 100644
--- a/tools/testfiles/tgroup-2.ddl
+++ b/tools/testfiles/tgroup-2.ddl
@@ -40,4 +40,3 @@ GROUP "/" {
 GROUP "/y" {
    }
 }
-h5dump error: unable to open group "/y"
diff --git a/tools/testfiles/tnestedcmpddt.ddl b/tools/testfiles/tnestedcmpddt.ddl
new file mode 100644
index 0000000..db949f0
--- /dev/null
+++ b/tools/testfiles/tnestedcmpddt.ddl
@@ -0,0 +1,220 @@
+HDF5 "tnestedcmpddt.h5" {
+GROUP "/" {
+   DATASET "dset1" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_STD_I32LE "a_name";
+         H5T_IEEE_F32LE "b_name";
+      }
+      DATASPACE  SIMPLE { ( 6 ) / ( H5S_UNLIMITED ) }
+      DATA {
+      (0): {
+            0,
+            0
+         },
+      (1): {
+            1,
+            1
+         },
+      (2): {
+            2,
+            4
+         },
+      (3): {
+            3,
+            9
+         },
+      (4): {
+            4,
+            16
+         },
+      (5): {
+            5,
+            25
+         }
+      }
+   }
+   DATASET "dset2" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_STD_I32LE "a_name";
+         H5T_IEEE_F32LE "b_name";
+         H5T_ENUM {
+            H5T_STD_I32LE;
+            "Red"              0;
+            "Green"            1;
+            "Blue"             2;
+            "White"            3;
+            "Black"            4;
+         } "c_name";
+      }
+      DATASPACE  SIMPLE { ( 6 ) / ( H5S_UNLIMITED ) }
+      DATA {
+      (0): {
+            0,
+            0,
+            Green
+         },
+      (1): {
+            1,
+            1.1,
+            Green
+         },
+      (2): {
+            2,
+            2.2,
+            Green
+         },
+      (3): {
+            3,
+            3.3,
+            Green
+         },
+      (4): {
+            4,
+            4.4,
+            Green
+         },
+      (5): {
+            5,
+            5.5,
+            Green
+         }
+      }
+   }
+   DATASET "dset4" {
+      DATATYPE  "/enumtype"
+      DATASPACE  SIMPLE { ( 6 ) / ( H5S_UNLIMITED ) }
+      DATA {
+      (0): Red, Green, Blue, Green, White, Blue
+      }
+   }
+   DATASET "dset5" {
+      DATATYPE  "/type1"
+      DATASPACE  SIMPLE { ( 6 ) / ( H5S_UNLIMITED ) }
+      DATA {
+      (0): {
+            0,
+            0
+         },
+      (1): {
+            1,
+            1
+         },
+      (2): {
+            2,
+            4
+         },
+      (3): {
+            3,
+            9
+         },
+      (4): {
+            4,
+            16
+         },
+      (5): {
+            5,
+            25
+         }
+      }
+   }
+   DATATYPE "enumtype" H5T_ENUM {
+      H5T_STD_I32LE;
+      "Red"              0;
+      "Green"            1;
+      "Blue"             2;
+      "White"            3;
+      "Black"            4;
+   };
+   GROUP "group1" {
+      DATASET "dset3" {
+         DATATYPE  H5T_COMPOUND {
+            H5T_ARRAY { [5] H5T_STD_I32LE } "int_name";
+            H5T_ARRAY { [5][6] H5T_IEEE_F32LE } "float_name";
+            H5T_COMPOUND {
+               H5T_STD_I32LE "int_name";
+               H5T_IEEE_F32LE "float_name";
+            } "cmpd_name";
+         }
+         DATASPACE  SIMPLE { ( 6 ) / ( H5S_UNLIMITED ) }
+         DATA {
+         (0): {
+               [ 0, 0, 0, 0, 0 ],
+               [ 0, 0, 0, 0, 0, 0,
+                  0, 0, 0, 0, 0, 0,
+                  0, 0, 0, 0, 0, 0,
+                  0, 0, 0, 0, 0, 0,
+                  0, 0, 0, 0, 0, 0 ],
+               {
+                  0,
+                  0
+               }
+            },
+         (1): {
+               [ 0, 1, 2, 3, 4 ],
+               [ 0, 0, 0, 0, 0, 0,
+                  0, 1, 2, 3, 4, 5,
+                  0, 2, 4, 6, 8, 10,
+                  0, 3, 6, 9, 12, 15,
+                  0, 4, 8, 12, 16, 20 ],
+               {
+                  1,
+                  1
+               }
+            },
+         (2): {
+               [ 0, 2, 4, 6, 8 ],
+               [ 0, 0, 0, 0, 0, 0,
+                  0, 2, 4, 6, 8, 10,
+                  0, 4, 8, 12, 16, 20,
+                  0, 6, 12, 18, 24, 30,
+                  0, 8, 16, 24, 32, 40 ],
+               {
+                  2,
+                  2
+               }
+            },
+         (3): {
+               [ 0, 3, 6, 9, 12 ],
+               [ 0, 0, 0, 0, 0, 0,
+                  0, 3, 6, 9, 12, 15,
+                  0, 6, 12, 18, 24, 30,
+                  0, 9, 18, 27, 36, 45,
+                  0, 12, 24, 36, 48, 60 ],
+               {
+                  3,
+                  3
+               }
+            },
+         (4): {
+               [ 0, 4, 8, 12, 16 ],
+               [ 0, 0, 0, 0, 0, 0,
+                  0, 4, 8, 12, 16, 20,
+                  0, 8, 16, 24, 32, 40,
+                  0, 12, 24, 36, 48, 60,
+                  0, 16, 32, 48, 64, 80 ],
+               {
+                  4,
+                  4
+               }
+            },
+         (5): {
+               [ 0, 5, 10, 15, 20 ],
+               [ 0, 0, 0, 0, 0, 0,
+                  0, 5, 10, 15, 20, 25,
+                  0, 10, 20, 30, 40, 50,
+                  0, 15, 30, 45, 60, 75,
+                  0, 20, 40, 60, 80, 100 ],
+               {
+                  5,
+                  5
+               }
+            }
+         }
+      }
+   }
+   DATATYPE "type1" H5T_COMPOUND {
+      H5T_STD_I32LE "int_name";
+      H5T_IEEE_F32LE "float_name";
+   }
+}
+}
diff --git a/tools/testfiles/tnestedcmpddt.h5 b/tools/testfiles/tnestedcmpddt.h5
new file mode 100644
index 0000000..f2af756
Binary files /dev/null and b/tools/testfiles/tnestedcmpddt.h5 differ
diff --git a/tools/testfiles/tnofilename-with-packed-bits.ddl b/tools/testfiles/tnofilename-with-packed-bits.ddl
index 050a3a3..5e6f580 100644
--- a/tools/testfiles/tnofilename-with-packed-bits.ddl
+++ b/tools/testfiles/tnofilename-with-packed-bits.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: missing file name
diff --git a/tools/testfiles/tcontents.ddl b/tools/testfiles/tordercontents1.ddl
similarity index 100%
copy from tools/testfiles/tcontents.ddl
copy to tools/testfiles/tordercontents1.ddl
diff --git a/tools/testfiles/tordercontents2.ddl b/tools/testfiles/tordercontents2.ddl
new file mode 100644
index 0000000..6757338
--- /dev/null
+++ b/tools/testfiles/tordercontents2.ddl
@@ -0,0 +1,20 @@
+HDF5 "tfcontents1.h5" {
+FILE_CONTENTS {
+ datatype   /#5616
+ group      /
+ unknown type of UD link /udlink -> ???
+ link       /softlink -> /dset
+ datatype   /mytype
+ link       /mylink -> mylink
+ group      /g2
+ dataset    /g2/dset2
+ group      /g1
+ group      /g1/g1.1 -> /g2
+ dataset    /g1/dset1 -> /g2/dset2
+ ext link   /extlink -> fname oname
+ dataset    /dsetmytype2
+ dataset    /dset4 -> /g2/dset2
+ dataset    /dset3 -> /g2/dset2
+ dataset    /dset -> /g2/dset2
+ }
+}
diff --git a/tools/testfiles/torderlinks1.ddl b/tools/testfiles/torderlinks1.ddl
new file mode 100644
index 0000000..eaf6eea
--- /dev/null
+++ b/tools/testfiles/torderlinks1.ddl
@@ -0,0 +1,52 @@
+HDF5 "tfcontents1.h5" {
+GROUP "/" {
+   DATATYPE "#5616" H5T_STD_I32BE;
+   DATASET "dset" {
+      DATATYPE  H5T_STD_I32BE
+      DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+      DATA {
+      (0): 1, 2, 3, 4
+      }
+   }
+   DATASET "dset3" {
+      HARDLINK "/dset"
+   }
+   DATASET "dset4" {
+      HARDLINK "/dset"
+   }
+   DATASET "dsetmytype2" {
+      DATATYPE  "/#5616"
+      DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+      DATA {
+      (0): 1, 2, 3, 4
+      }
+   }
+   EXTERNAL_LINK "extlink" {
+      TARGETFILE "fname"
+      TARGETPATH "oname"
+   }
+   GROUP "g1" {
+      DATASET "dset1" {
+         HARDLINK "/dset"
+      }
+      GROUP "g1.1" {
+         DATASET "dset2" {
+            HARDLINK "/dset"
+         }
+      }
+   }
+   GROUP "g2" {
+      HARDLINK "/g1/g1.1"
+   }
+   SOFTLINK "mylink" {
+      LINKTARGET "mylink"
+   }
+   DATATYPE "mytype" H5T_STD_I32BE;
+   SOFTLINK "softlink" {
+      LINKTARGET "/dset"
+   }
+   USERDEFINED_LINK "udlink" {
+      LINKCLASS 187
+   }
+}
+}
diff --git a/tools/testfiles/torderlinks2.ddl b/tools/testfiles/torderlinks2.ddl
new file mode 100644
index 0000000..dd68208
--- /dev/null
+++ b/tools/testfiles/torderlinks2.ddl
@@ -0,0 +1,52 @@
+HDF5 "tfcontents1.h5" {
+GROUP "/" {
+   DATATYPE "#5616" H5T_STD_I32BE;
+   USERDEFINED_LINK "udlink" {
+      LINKCLASS 187
+   }
+   SOFTLINK "softlink" {
+      LINKTARGET "/dset"
+   }
+   DATATYPE "mytype" H5T_STD_I32BE;
+   SOFTLINK "mylink" {
+      LINKTARGET "mylink"
+   }
+   GROUP "g2" {
+      DATASET "dset2" {
+         DATATYPE  H5T_STD_I32BE
+         DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+         DATA {
+         (0): 1, 2, 3, 4
+         }
+      }
+   }
+   GROUP "g1" {
+      GROUP "g1.1" {
+         HARDLINK "/g2"
+      }
+      DATASET "dset1" {
+         HARDLINK "/g2/dset2"
+      }
+   }
+   EXTERNAL_LINK "extlink" {
+      TARGETFILE "fname"
+      TARGETPATH "oname"
+   }
+   DATASET "dsetmytype2" {
+      DATATYPE  "/#5616"
+      DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+      DATA {
+      (0): 1, 2, 3, 4
+      }
+   }
+   DATASET "dset4" {
+      HARDLINK "/g2/dset2"
+   }
+   DATASET "dset3" {
+      HARDLINK "/g2/dset2"
+   }
+   DATASET "dset" {
+      HARDLINK "/g2/dset2"
+   }
+}
+}
diff --git a/tools/testfiles/tpbitsIncomplete.ddl b/tools/testfiles/tpbitsIncomplete.ddl
index 5608d2b..10b5a23 100644
--- a/tools/testfiles/tpbitsIncomplete.ddl
+++ b/tools/testfiles/tpbitsIncomplete.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: Bad mask list(0,2,2,1,0,2,2,)
diff --git a/tools/testfiles/tpbitsLengthExceeded.ddl b/tools/testfiles/tpbitsLengthExceeded.ddl
index f89b65f..17dd963 100644
--- a/tools/testfiles/tpbitsLengthExceeded.ddl
+++ b/tools/testfiles/tpbitsLengthExceeded.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: Packed Bit offset+length value(65) too large. Max is 64
diff --git a/tools/testfiles/tpbitsLengthPositive.ddl b/tools/testfiles/tpbitsLengthPositive.ddl
index ba32aa6..6d05b47 100644
--- a/tools/testfiles/tpbitsLengthPositive.ddl
+++ b/tools/testfiles/tpbitsLengthPositive.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: Packed Bit length value(0) must be positive.
diff --git a/tools/testfiles/tpbitsMaxExceeded.ddl b/tools/testfiles/tpbitsMaxExceeded.ddl
index 16f953d..eca1248 100644
--- a/tools/testfiles/tpbitsMaxExceeded.ddl
+++ b/tools/testfiles/tpbitsMaxExceeded.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: Too many masks requested (max. 8). Mask list(0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1)
diff --git a/tools/testfiles/tpbitsOffsetExceeded.ddl b/tools/testfiles/tpbitsOffsetExceeded.ddl
index 446fe2d..b0c655d 100644
--- a/tools/testfiles/tpbitsOffsetExceeded.ddl
+++ b/tools/testfiles/tpbitsOffsetExceeded.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: Packed Bit offset value(64) must be between 0 and 63
diff --git a/tools/testfiles/tpbitsOffsetNegative.ddl b/tools/testfiles/tpbitsOffsetNegative.ddl
index 747cf99..213641b 100644
--- a/tools/testfiles/tpbitsOffsetNegative.ddl
+++ b/tools/testfiles/tpbitsOffsetNegative.ddl
@@ -1,21 +1,22 @@
 usage: h5dump [OPTIONS] files
   OPTIONS
-     -h, --help           Print a usage message and exit
-     -n, --contents       Print a list of the file contents and exit
-     -B, --superblock     Print the content of the super block
-     -H, --header         Print the header only; no data is displayed
-     -A, --onlyattr       Print the header and value of attributes
-     -i, --object-ids     Print the object ids
-     -r, --string         Print 1-byte integer datasets as ASCII
-     -e, --escape         Escape non printing characters
-     -V, --version        Print version number and exit
+     -h,   --help         Print a usage message and exit
+     -n,   --contents     Print a list of the file contents and exit
+                          Optional value 1 also prints attributes.
+     -B,   --superblock   Print the content of the super block
+     -H,   --header       Print the header only; no data is displayed
+     -A,   --onlyattr     Print the header and value of attributes
+     -i,   --object-ids   Print the object ids
+     -r,   --string       Print 1-byte integer datasets as ASCII
+     -e,   --escape       Escape non printing characters
+     -V,   --version      Print version number and exit
      -a P, --attribute=P  Print the specified attribute
                           If an attribute name contains a slash (/), escape the
                           slash with a preceding backslash (\).
                           (See example section below.)
      -d P, --dataset=P    Print the specified dataset
-     -y, --noindex        Do not print array indices with the data
-     -p, --properties     Print dataset filters, storage layout and fill value
+     -y,   --noindex      Do not print array indices with the data
+     -p,   --properties   Print dataset filters, storage layout and fill value
      -f D, --filedriver=D Specify which driver to open the file with
      -g P, --group=P      Print the specified group and all members
      -l P, --soft-link=P  Print the value(s) of the specified soft link
@@ -34,17 +35,17 @@ usage: h5dump [OPTIONS] files
                           separated by commas. Offset is the beginning bit in
                           the data value and length is the number of bits of
                           the mask.
-     -R, --region         Print dataset pointed by region references
-     -x, --xml            Output in XML using Schema
-     -u, --use-dtd        Output in XML using DTD
+     -R,   --region       Print dataset pointed by region references
+     -x,   --xml          Output in XML using Schema
+     -u,   --use-dtd      Output in XML using DTD
      -D U, --xml-dtd=U    Use the DTD or schema at U
-     -X S, --xml-ns=S      (XML Schema) Use qualified names n the XML
+     -X S, --xml-ns=S     (XML Schema) Use qualified names n the XML
                           ":": no namespace, default: "hdf5:"
                           E.g., to dump a file called `-f', use h5dump -- -f
      --enable-error-stack Prints messages from the HDF5 error stack as they
                           occur.
      --no-compact-subset  Disable compact form of subsetting and allow the use
-                          of "[" in datset names.
+                          of "[" in dataset names.
 
  Subsetting is available by using the following options with a dataset
  attribute. Subsetting is done by selecting a hyperslab from the data.
@@ -58,13 +59,24 @@ usage: h5dump [OPTIONS] files
       -c COUNT,  --count=COUNT    Number of blocks to include in selection
       -k BLOCK,  --block=BLOCK    Size of block in hyperslab
   START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the
-        number of dimensions in the dataspace being queried
+      number of dimensions in the dataspace being queried
+      (Alternate compact form of subsetting is described in the Reference Manual)
 
   D - is the file driver to use in opening the file. Acceptable values
-        are "sec2", "family", "split", "multi", "direct", and "stream". Without
-        the file driver flag, the file will be opened with each driver in
-        turn and in the order specified above until one driver succeeds
-        in opening the file.
+      are "sec2", "family", "split", "multi", "direct", and "stream". Without
+      the file driver flag, the file will be opened with each driver in
+      turn and in the order specified above until one driver succeeds
+      in opening the file.
+      These are the letters that are appended to the file name(without .h5) when opening
+      names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
+         m: All meta data when using the split driver.
+         s: The userblock, superblock, and driver info block
+         b: B-tree nodes
+         r: Dataset raw data
+         g: Global heap
+         l: local heap (object names)
+         o: object headers
+
   F - is a filename.
   P - is the full path from the root group to the object.
   N - is an integer greater than 1.
@@ -101,8 +113,12 @@ usage: h5dump [OPTIONS] files
 
       h5dump -d /dset -M 0,1,4,3 quux.h5
 
-  5) Dataset foo in files multi1.h5 multi2.h5 multi3.h5
+  5) Dataset foo in files file1.h5 file2.h5 file3.h5
+
+      h5dump -d /foo file1.h5 file2.h5 file3.h5
+
+  6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
 
-      h5dump -d /foo multi1.h5 multi2.h5 multi3.h5
+      h5dump -d /foo -f split splitfile
 
 h5dump error: Bad mask list(-1,1)
diff --git a/tools/testfiles/tperror.ddl b/tools/testfiles/tperror.ddl
index 16a7d8e..0cb961c 100644
--- a/tools/testfiles/tperror.ddl
+++ b/tools/testfiles/tperror.ddl
@@ -1,35 +1,2 @@
 HDF5 "tfcontents1.h5" {
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Dopen2(): not found
-    major: Dataset
-    minor: Object not found
-  #001: (file name) line (number) in H5G_loc_find(): can't find object
-    major: Symbol table
-    minor: Object not found
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #004: (file name) line (number) in H5G_loc_find_cb(): object 'bogus' doesn't exist
-    major: Symbol table
-    minor: Object not found
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Lget_info(): unable to get link info
-    major: Symbol table
-    minor: Object not found
-  #001: (file name) line (number) in H5L_get_info(): name doesn't exist
-    major: Symbol table
-    minor: Object already exists
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
-    major: Symbol table
-    minor: Object not found
-h5dump error: unable to get link info from "bogus"
diff --git a/tools/testfiles/tqmarkfile.ddl b/tools/testfiles/tqmarkfile.ddl
index e7771cb..885be5f 100644
--- a/tools/testfiles/tqmarkfile.ddl
+++ b/tools/testfiles/tqmarkfile.ddl
@@ -48,36 +48,3 @@ DATASET "Dataset1" {
 }
 HDF5 "tarray8.h5" {
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Dopen2(): not found
-    major: Dataset
-    minor: Object not found
-  #001: (file name) line (number) in H5G_loc_find(): can't find object
-    major: Symbol table
-    minor: Object not found
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #004: (file name) line (number) in H5G_loc_find_cb(): object 'Dataset1' doesn't exist
-    major: Symbol table
-    minor: Object not found
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Lget_info(): unable to get link info
-    major: Symbol table
-    minor: Object not found
-  #001: (file name) line (number) in H5L_get_info(): name doesn't exist
-    major: Symbol table
-    minor: Object already exists
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
-    major: Symbol table
-    minor: Object not found
-h5dump error: unable to get link info from "Dataset1"
diff --git a/tools/testfiles/tslink-D.ddl b/tools/testfiles/tslink-D.ddl
index a1d999a..9d90262 100644
--- a/tools/testfiles/tslink-D.ddl
+++ b/tools/testfiles/tslink-D.ddl
@@ -3,28 +3,3 @@ SOFTLINK "/slink1" {
    LINKTARGET "somevalue"
 }
 }
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
-  #000: (file name) line (number) in H5Dopen2(): not found
-    major: Dataset
-    minor: Object not found
-  #001: (file name) line (number) in H5G_loc_find(): can't find object
-    major: Symbol table
-    minor: Object not found
-  #002: (file name) line (number) in H5G_traverse(): internal path traversal failed
-    major: Symbol table
-    minor: Object not found
-  #003: (file name) line (number) in H5G_traverse_real(): special link traversal failed
-    major: Links
-    minor: Link traversal failure
-  #004: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed
-    major: Links
-    minor: Link traversal failure
-  #005: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link
-    major: Symbol table
-    minor: Object not found
-  #006: (file name) line (number) in H5G_traverse_real(): traversal operator failed
-    major: Symbol table
-    minor: Callback failed
-  #007: (file name) line (number) in H5G_traverse_slink_cb(): component not found
-    major: Symbol table
-    minor: Object not found
diff --git a/tools/testfiles/twidedisplay.ddl b/tools/testfiles/twidedisplay.ddl
new file mode 100644
index 0000000..1e6ffee
--- /dev/null
+++ b/tools/testfiles/twidedisplay.ddl
@@ -0,0 +1,130 @@
+HDF5 "packedbits.h5" {
+GROUP "/" {
+   DATASET "DS08BITS" {
+      DATATYPE  H5T_STD_I8LE
+      DATASPACE  SIMPLE { ( 8, 8 ) / ( 8, 8 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DS16BITS" {
+      DATATYPE  H5T_STD_I16LE
+      DATASPACE  SIMPLE { ( 8, 16 ) / ( 8, 16 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DS32BITS" {
+      DATATYPE  H5T_STD_I32LE
+      DATASPACE  SIMPLE { ( 8, 32 ) / ( 8, 32 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DS64BITS" {
+      DATATYPE  H5T_STD_I64LE
+      DATASPACE  SIMPLE { ( 8, 64 ) / ( 8, 64 ) }
+      DATA {
+      (0,0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808,
+      (1,0): -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0,
+      (2,0): -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0,
+      (3,0): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0,
+      (4,0): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0,
+      (5,0): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0,
+      (6,0): -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0,
+      (7,0): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072, -262144, -524288, -1048576, -2097152, -4194304, -8388608, -16777216, -33554432, -67108864, -134217728, -268435456, -536870912, -1073741824, -2147483648, -4294967296, -8589934592, -17179869184, -34359738368, -68719476736, -137438953472, -274877906944, -549755813888, -1099511627776, -2199023255552, -4398046511104, -8796093022208, -17592186044416, -35184372088832, -70368744177664, -140737488355328, -281474976710656, -562949953421312, -1125899906842624, -2251799813685248, -4503599627370496, -9007199254740992, -18014398509481984, -36028797018963968, -72057594037927936, -144115188075855872, -288230376151711744, -576460752303423488, -1152921504606846976, -2305843009213693952, -4611686018427387904, -9223372036854775808, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DU08BITS" {
+      DATATYPE  H5T_STD_U8LE
+      DATASPACE  SIMPLE { ( 8, 8 ) / ( 8, 8 ) }
+      DATA {
+      (0,0): 255, 254, 252, 248, 240, 224, 192, 128,
+      (1,0): 254, 252, 248, 240, 224, 192, 128, 0,
+      (2,0): 252, 248, 240, 224, 192, 128, 0, 0,
+      (3,0): 248, 240, 224, 192, 128, 0, 0, 0,
+      (4,0): 240, 224, 192, 128, 0, 0, 0, 0,
+      (5,0): 224, 192, 128, 0, 0, 0, 0, 0,
+      (6,0): 192, 128, 0, 0, 0, 0, 0, 0,
+      (7,0): 128, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DU16BITS" {
+      DATATYPE  H5T_STD_U16LE
+      DATASPACE  SIMPLE { ( 8, 16 ) / ( 8, 16 ) }
+      DATA {
+      (0,0): 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768,
+      (1,0): 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0,
+      (2,0): 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0,
+      (3,0): 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0,
+      (4,0): 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0,
+      (5,0): 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+      (6,0): 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0,
+      (7,0): 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DU32BITS" {
+      DATATYPE  H5T_STD_U32LE
+      DATASPACE  SIMPLE { ( 8, 32 ) / ( 8, 32 ) }
+      DATA {
+      (0,0): 4294967295, 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+      (1,0): 4294967294, 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0,
+      (2,0): 4294967292, 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0,
+      (3,0): 4294967288, 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0,
+      (4,0): 4294967280, 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0,
+      (5,0): 4294967264, 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0,
+      (6,0): 4294967232, 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+      (7,0): 4294967168, 4294967040, 4294966784, 4294966272, 4294965248, 4294963200, 4294959104, 4294950912, 4294934528, 4294901760, 4294836224, 4294705152, 4294443008, 4293918720, 4292870144, 4290772992, 4286578688, 4278190080, 4261412864, 4227858432, 4160749568, 4026531840, 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DU64BITS" {
+      DATATYPE  H5T_STD_U64LE
+      DATASPACE  SIMPLE { ( 8, 64 ) / ( 8, 64 ) }
+      DATA {
+      (0,0): 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808,
+      (1,0): 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0,
+      (2,0): 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0,
+      (3,0): 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0,
+      (4,0): 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+      (5,0): 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0,
+      (6,0): 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+      (7,0): 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 18446744073441116160, 18446744073172680704, 18446744072635809792, 18446744071562067968, 18446744069414584320, 18446744065119617024, 18446744056529682432, 18446744039349813248, 18446744004990074880, 18446743936270598144, 18446743798831644672, 18446743523953737728, 18446742974197923840, 18446741874686296064, 18446739675663040512, 18446735277616529408, 18446726481523507200, 18446708889337462784, 18446673704965373952, 18446603336221196288, 18446462598732840960, 18446181123756130304, 18445618173802708992, 18444492273895866368, 18442240474082181120, 18437736874454810624, 18428729675200069632, 18410715276690587648, 18374686479671623680, 18302628885633695744, 18158513697557839872, 17870283321406128128, 17293822569102704640, 16140901064495857664, 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0, 0
+      }
+   }
+   DATASET "DummyDBL" {
+      DATATYPE  H5T_IEEE_F64BE
+      DATASPACE  SIMPLE { ( 8, 8 ) / ( 8, 8 ) }
+      DATA {
+      (0,0): 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
+      (1,0): 1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
+      (2,0): 2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
+      (3,0): 3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
+      (4,0): 4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
+      (5,0): 5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
+      (6,0): 6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
+      (7,0): 7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007
+      }
+   }
+}
+}
diff --git a/vms/src/h5pubconf.h b/vms/src/h5pubconf.h
index aa220b0..bb7207a 100644
--- a/vms/src/h5pubconf.h
+++ b/vms/src/h5pubconf.h
@@ -13,7 +13,7 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /* src/H5config.h.  Generated from H5config.h.in by configure.  */
-/* src/H5config.h.in.  Generated from configure.in by autoheader.  */
+/* src/H5config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Define if building universal (internal helper macro) */
 /* #undef H5_AC_APPLE_UNIVERSAL_BUILD */
@@ -418,7 +418,7 @@
 /* #undef H5_HAVE_WINDOW_PATH */
 
 /* Define to 1 if you have the <winsock.h> header file. */
-/* #undef H5_HAVE_WINSOCK_H */
+/* #undef H5_HAVE_WINSOCK2_H */
 
 /* Define to 1 if you have the <zlib.h> header file. */
 #define H5_HAVE_ZLIB_H 1
@@ -502,7 +502,7 @@
 #define H5_PACKAGE_NAME "HDF5"
 
 /* Define to the full name and version of this package. */
-#define H5_PACKAGE_STRING "HDF5 1.8.9"
+#define H5_PACKAGE_STRING "HDF5 1.8.10"
 
 /* Define to the one symbol short name of this package. */
 #define H5_PACKAGE_TARNAME "hdf5"
@@ -511,7 +511,7 @@
 #define H5_PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define H5_PACKAGE_VERSION "1.8.9"
+#define H5_PACKAGE_VERSION "1.8.10"
 
 /* Width for printf() for type `long long' or `__int64', use `ll' */
 #define H5_PRINTF_LL_WIDTH "ll"
@@ -674,7 +674,7 @@
 /* #undef H5_USING_MEMCHECKER */
 
 /* Version number of package */
-#define H5_VERSION "1.8.9"
+#define H5_VERSION "1.8.10"
 
 /* Define if vsnprintf() returns the correct value for formatted strings that
    don't fit into size allowed */
diff --git a/windows/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt b/windows/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt
deleted file mode 100644
index f96ce7f..0000000
--- a/windows/DO_NOT_USE_THESE_FILES_TO_BUILD_HDF5.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-**************************************************************************
-  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-**************************************************************************
-
-Building HDF5 from the Visual Studio solutions and projects included in
-the windows\ folder is no longer the preferred way to build HDF5!
-
-**************************************************************************
-  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-**************************************************************************
-
-CMake is now the preferred way to construct appropriate Windows projects
-and solutions for each version of Visual Studio. 
-
-CMake can be downloaded from http://www.cmake.org/
-
-Instructions for building and testing HDF5 using CMake can be found in
-the CMake.txt file in the release_docs\ folder.
-
-The files in the windows\ folder are for the small number of users who
-require them and will be removed HDF5 1.10.
diff --git a/windows/src/H5pubconf.h b/windows/src/H5pubconf.h
index 6a33f98..c19b572 100644
--- a/windows/src/H5pubconf.h
+++ b/windows/src/H5pubconf.h
@@ -468,7 +468,7 @@
 #define H5_HAVE_WINDOW_PATH 1
 
 /* Define to 1 if you have the <winsock.h> header file. */
-#define H5_HAVE_WINSOCK_H 1
+#define H5_HAVE_WINSOCK2_H 1
 
 /* Define to 1 if you have the <zlib.h> header file. */
 #define H5_HAVE_ZLIB_H 1
@@ -552,7 +552,7 @@
 #define H5_PACKAGE_NAME "HDF5"
 
 /* Define to the full name and version of this package. */
-#define H5_PACKAGE_STRING "HDF5 1.8.9"
+#define H5_PACKAGE_STRING "HDF5 1.8.10"
 
 /* Define to the one symbol short name of this package. */
 #define H5_PACKAGE_TARNAME "hdf5"
@@ -561,7 +561,7 @@
 #define H5_PACKAGE_URL "http://www.hdfgroup.org"
 
 /* Define to the version of this package. */
-#define H5_PACKAGE_VERSION "1.8.9"
+#define H5_PACKAGE_VERSION "1.8.10"
 
 /* Width for printf() for type `long long' or `__int64', use `ll' */
 #define H5_PRINTF_LL_WIDTH "ll"
@@ -732,7 +732,7 @@
 /* #undef H5_USING_MEMCHECKER */
 
 /* Version number of package */
-#define H5_VERSION "1.8.9"
+#define H5_VERSION "1.8.10"
 
 /* Define if vsnprintf() returns the correct value for formatted strings that
    don't fit into size allowed */
diff --git a/windows/tools/h5copy/testh5copy.bat b/windows/tools/h5copy/testh5copy.bat
index c14b505..68dc4ac 100644
--- a/windows/tools/h5copy/testh5copy.bat
+++ b/windows/tools/h5copy/testh5copy.bat
@@ -244,9 +244,6 @@ rem
     rem Note: The modification time and storage utilization are masked off
     rem so that the output is more portable
     (
-        echo.#############################
-        echo.Expected output for %h5ls% %*
-        echo.#############################
         %h5ls_bin% %h5ls_args% %*
     ) > %actual% 2>&1
     
diff --git a/windows/tools/h5dump/testh5dump.bat b/windows/tools/h5dump/testh5dump.bat
index 840898d..6470e50 100644
--- a/windows/tools/h5dump/testh5dump.bat
+++ b/windows/tools/h5dump/testh5dump.bat
@@ -319,6 +319,153 @@ rem Extract file name, line number, version and thread IDs because they may be d
     exit /b
     
 
+rem same as TOOLTEST3 but filters error stack outp and compares external err file
+rem Extract file name, line number, version and thread IDs because they may be different
+:tooltest4
+    set expect=%CD%\..\testfiles\%1
+    set expect_err=%CD%\errfiles\%~n1.err
+    set expect_parsed=%CD%\..\testfiles\%~n1.parsed
+    set actual=%CD%\..\testfiles\%~n1.out
+    set actual_err=%CD%\..\testfiles\%~n1.oerr
+    set actual_ext=%CD%\..\testfiles\%~n1.ext
+    
+    rem We define %params% here because Windows `shift` command doesn't affect
+    rem the %* variable.  --SJW 8/23/07
+    set params=%*
+    rem If there is not 2nd parameter, that means we have no filename, which 
+    rem implies that we are on the "tnofilename" test.  Make sure we remove the
+    rem expected output from the params, and add a space.  --SJW 8/27/07
+    if "%2"=="" (
+        set params= 
+    ) else (
+        set params=!params:* =!
+    )
+    
+    rem Run test.
+    (
+        rem We need to replace PERCENT here with "%" for tests that use percents
+        rem Also remove quotes here, because Linux 'echo' command strips them.
+        rem --SJW 8/24/07
+        pushd %CD%\..\testfiles
+        %dumper_bin% !params:PERCENT=%%!
+        popd
+    ) > %actual% 2> %actual_err%
+
+    rem Extract file name, line number, version and thread IDs because they may 
+    rem be different
+    
+    rem Also filter out lines starting with *****, because Windows treats these
+    rem as wildcards, and parses as filenames.  -SJW, 8/16/07
+    type nul > %actual_ext%
+    for /f "delims=" %%a in (%actual_err%) do (
+        set line_tmp=%%a
+        if not "!line_tmp:~0,9!"=="*********" (
+            set line=
+            set last_token=
+            set skip=
+            for %%b in (%%a) do (
+                if not defined skip (
+                    if "!last_token!"=="thread" (
+                        set line=!line! ^(IDs^):
+                        
+                    ) else if "!last_token!"=="some" (
+                        if "%%b"=="thread:" (
+                            set line=!line! thread ^(IDs^):
+                            set skip=yes
+                        ) else (
+                            set line=!line! some %%b
+                        )
+                        
+                    ) else if "!last_token:~0,2!"=="#0" (
+                        set line=!line! ^(file name^)
+                        
+                    ) else if "!last_token!"=="HDF5" (
+                        rem Check if we wrap parenthesis around "version (number)"
+                        set version_token=%%b
+                        if "!version_token:~0,1!"=="(" (
+                            set line=!line! ^(version ^(number^)^)
+                        ) else (
+                            set line=!line! version ^(number^).
+                        )
+                        
+                    ) else if "!last_token!"=="HDF5:tools" (
+                        rem Check if we wrap parenthesis around "version (number)"
+                        set version_token=%%b
+                        if "!version_token:~0,1!"=="(" (
+                            set line=!line! ^(version ^(number^)^)
+                        ) else (
+                            set line=!line! version ^(number^).
+                        )
+                        
+                    ) else if "!last_token!"=="line" (
+                        set line=!line! ^(number^)
+                        
+                    ) else if not "%%b"=="some" (
+                        set line=!line! %%b
+                    )
+                    set last_token=%%b
+                )
+            )
+            echo.!line!>>%actual_ext%
+        )
+    )
+    rem type %actual_ext% >> %actual%
+    
+    rem We parse through our expected output file in a similar way, because
+    rem Windows will parse out commas and other special characters as well.
+    rem    -SJW, 8/16/07
+    type nul > %expect_parsed%
+    for /f "delims=" %%b in (%expect%) do (
+        set line_tmp=%%b
+        if not "!line_tmp:~0,9!"=="*********" (
+            set line=
+            for %%c in (%%b) do (
+                set line=!line! %%c
+            )
+            echo.!line!>>%expect_parsed%
+        )
+    )
+        
+    fc /w %expect_parsed% %actual% > nul
+    if errorlevel 0 (
+        if not exist %expect% (
+            rem Create the expect file if it doesn't yet exist.
+            call :testing CREATED %params%
+            copy /y %actual% %expect% > nul
+        ) else (
+            fc /w %expect% %actual% > nul
+            if !errorlevel! equ 0 (
+                fc /w %expect_err% %actual_ext% > nul
+                if !errorlevel! equ 0 (
+                    call :testing PASSED %params%
+                ) else (
+                    call :testing *FAILED* %params%
+                    echo.    Expected results ^(*.err^) differs from actual results ^(*.oerr^)
+                    set /a nerrors=!nerrors!+1
+                    if "yes"=="%verbose%" fc /w %expect_err% %actual_ext%
+                )
+            ) else (
+                call :testing *FAILED* %params%
+                echo.    Expected results ^(*.ddl^) differs from actual results ^(*.out^)
+                set /a nerrors=!nerrors!+1
+                if "yes"=="%verbose%" fc /w %expect% %actual%
+            )
+        )
+    ) else (
+        call :testing *FAILED* %test_err%
+        echo.    Expected result differs from actual result
+        set /a nerrors=%nerrors%+1
+        if "yes"=="%verbose%" fc /w %expect% %actual%
+    )
+    
+    rem Clean up output file
+    if not defined hdf5_nocleanup (
+        del /f %actual% %actual_err%
+    )
+    
+    exit /b
+    
+
 rem Print a "SKIP" message
 :skip
     call :testing -SKIP- %*
@@ -432,19 +579,19 @@ rem ############################################################################
     rem test for displaying groups
     call :tooltest tgroup-1.ddl --enable-error-stack tgroup.h5
     rem test for displaying the selected groups
-    call :tooltest tgroup-2.ddl --group=/g2 --group / -g /y tgroup.h5
+    call :tooltest4 tgroup-2.ddl --enable-error-stack --group=/g2 --group / -g /y tgroup.h5
 
     rem test for displaying simple space datasets
     call :tooltest tdset-1.ddl --enable-error-stack tdset.h5
     rem test for displaying selected datasets
-    call :tooltest3 tdset-2.ddl --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5
+    call :tooltest4 tdset-2.ddl --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5
 
     rem test for displaying attributes
     call :tooltest tattr-1.ddl --enable-error-stack tattr.h5
     rem test for displaying the selected attributes of string type and scalar space
-    call :tooltest tattr-2.ddl --enable-error-stack -a /attr1 --attribute /attr4 --attribute=/attr5 tattr.h5
+    call :tooltest tattr-2.ddl --enable-error-stack -a \/attr1 --attribute /attr4 --attribute=/attr5 tattr.h5
     rem test for header and error messages
-    call :tooltest3 tattr-3.ddl --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5
+    call :tooltest4 tattr-3.ddl --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5
     rem test for displaying attributes in shared datatype (also in group and dataset)
     call :tooltest tnamed_dtype_attr.ddl --enable-error-stack tnamed_dtype_attr.h5
 
@@ -455,7 +602,7 @@ rem ############################################################################
     call :tooltest tslink-2.ddl --enable-error-stack -l slink2 tslink.h5
     call :tooltest tudlink-2.ddl --enable-error-stack -l udlink2 tudlink.h5
     rem test for displaying dangling soft links
-    call :tooltest3 tslink-D.ddl --enable-error-stack -d /slink1 tslink.h5
+    call :tooltest4 tslink-D.ddl --enable-error-stack -d /slink1 tslink.h5
 
     rem tests for hard links
     call :tooltest thlink-1.ddl --enable-error-stack thlink.h5
@@ -469,7 +616,7 @@ rem ############################################################################
     rem test for named data types
     call :tooltest tcomp-2.ddl --enable-error-stack -t /type1 --datatype /type2 --datatype=/group1/type3 tcompound.h5
     rem test for unamed type 
-    call :tooltest tcomp-3.ddl -t /#6632 -g /group2 tcompound.h5
+    call :tooltest4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5
     rem test complicated compound datatype
     call :tooltest tcomp-4.ddl --enable-error-stack tcompound_complex.h5
     
@@ -477,7 +624,7 @@ rem ############################################################################
     call :tooltest tnestcomp-1.ddl --enable-error-stack tnestedcomp.h5
 
     rem test for options
-    call :tooltest tall-1.ddl tall.h5
+rem    call :tooltest4 tall-1.ddl --enable-error-stack tall.h5
     call :tooltest tall-2.ddl --enable-error-stack --header -g /g1/g1.1 -a attr2 tall.h5
     call :tooltest tall-3.ddl --enable-error-stack -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5
 
@@ -503,7 +650,7 @@ rem ############################################################################
 
     rem test for files with array data
     call :tooltest tarray1.ddl --enable-error-stack tarray1.h5
-    call :tooltest tarray1_big.ddl -R tarray1_big.h5
+rem    call :tooltest4 tarray1_big.ddl --enable-error-stack -R tarray1_big.h5
     call :tooltest tarray2.ddl --enable-error-stack tarray2.h5
     call :tooltest tarray3.ddl --enable-error-stack tarray3.h5
     call :tooltest tarray4.ddl --enable-error-stack tarray4.h5
@@ -513,8 +660,8 @@ rem ############################################################################
     call :tooltest tarray8.ddl --enable-error-stack tarray8.h5
 
     rem test for wildcards in filename (does not work with cmake)
-    rem call :tooltest3 tstarfile.ddl --enable-error-stack -H -d Dataset1 tarr*.h5
-    rem call :tooltest3 tqmarkfile.ddl --enable-error-stack -H -d Dataset1 tarray?.h5
+    rem call :tooltest4 tstarfile.ddl --enable-error-stack -H -d Dataset1 tarr*.h5
+    rem call :tooltest4 tqmarkfile.ddl --enable-error-stack -H -d Dataset1 tarray?.h5
     call :tooltest tmultifile.ddl --enable-error-stack -H -d Dataset1 tarray2.h5 tarray3.h5 tarray4.h5 tarray5.h5 tarray6.h5 tarray7.h5
 
     rem test for files with empty data
@@ -535,16 +682,16 @@ rem ############################################################################
     call :tooltest tlarge_objname.ddl --enable-error-stack -w157 tlarge_objname.h5
 
     rem test '-A' to suppress data but print attr's
-    call :tooltest tall-2A.ddl -A tall.h5
+rem    call :tooltest4 tall-2A.ddl --enable-error-stack -A tall.h5
 
     rem test '-r' to print attributes in ASCII instead of decimal
-    call :tooltest tall-2B.ddl -A -r tall.h5
+rem    call :tooltest4 tall-2B.ddl --enable-error-stack -A -r tall.h5
 
     rem test Subsetting
     call :tooltest tall-4s.ddl --enable-error-stack --dataset=/g1/g1.1/dset1.1.1 --start=1,1 --stride=2,3 --count=3,2 --block=1,1 tall.h5
     call :tooltest tall-5s.ddl --enable-error-stack -d "/g1/g1.1/dset1.1.2[0;2;10;]" tall.h5
     call :tooltest tdset-3s.ddl --enable-error-stack -d "/dset1[1,1;;;]" tdset.h5
-    call :tooltest tno-subset.ddl --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0" tno-subset.h5
+    call :tooltest tno-subset.ddl --enable-error-stack --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0" tno-subset.h5
 
     rem test printing characters in ASCII instead of decimal
     call :tooltest tchar1.ddl --enable-error-stack -r tchar.h5
@@ -556,7 +703,7 @@ rem ############################################################################
     call :tooltest tboot2.ddl --enable-error-stack -B tfcontents2.h5
 
     rem test -p with a non existing dataset
-    call :tooltest3 tperror.ddl --enable-error-stack -p -d bogus tfcontents1.h5
+    call :tooltest4 tperror.ddl --enable-error-stack -p -d bogus tfcontents1.h5
 
     rem test for file contents
     call :tooltest tcontents.ddl --enable-error-stack -n tfcontents1.h5
@@ -721,9 +868,9 @@ rem ############################################################################
 
     rem test for dataset region references 
     call :tooltest tdatareg.ddl --enable-error-stack tdatareg.h5
-    call :tooltest tdataregR.ddl -R tdatareg.h5
+    call :tooltest4 tdataregR.ddl --enable-error-stack -R tdatareg.h5
     call :tooltest tattrreg.ddl --enable-error-stack tattrreg.h5
-    call :tooltest tattrregR.ddl -R tattrreg.h5
+    call :tooltest4 tattrregR.ddl --enable-error-stack -R tattrreg.h5
 
     rem tests for group creation order
     rem "1" tracked, "2" name, root tracked
@@ -749,10 +896,10 @@ rem ############################################################################
     call :tooltest textlinkfar.ddl textlinkfar.h5
 
     rem test for dangling external links
-    rem test output filter issues call :tooltest3 textlink.ddl --enable-error-stack textlink.h5
+    rem test output filter issues call :tooltest4 textlink.ddl --enable-error-stack textlink.h5
 
     rem test for error stack display (BZ2048)
-    rem test output filter issues call :tooltest3 filter_fail.ddl --enable-error-stack filter_fail.h5
+    rem test output filter issues call :tooltest4 filter_fail.ddl --enable-error-stack filter_fail.h5
 
     rem test for -o -y for dataset with attributes
     call :tooltest tall-6.ddl --enable-error-stack -y -o data -d /g1/g1.1/dset1.1.1 tall.h5

-- 
Hierarchical Data Format 5 (HDF5)



More information about the Pkg-grass-devel mailing list